DEV Community

Fega Suseno
Fega Suseno

Posted on

Import & Export Database MySql Using CLI

Postingan ini akan membahas Import dan Export database via CLI. Sebenarnya banyak cara mudah untuk melakukan hal tersebut, bisa menggunakan phpmyadmin, dbeaver, mysql workbench, mysqlyogs dll.
Tapi pada postingan ini kita bahas menggunakan CLI mode.

Export Database

Berikut syntax untuk export database

mysqldump -u nama_user -p nama_database > output_file.sql
Enter fullscreen mode Exit fullscreen mode

Untuk basic syntaknya seperti contoh di atas. Tapi pada contoh diatas adalah mysql-server berada di server yang sama dengan mysql-client. Tambahkan opsi -h untuk host jika mysql-server berada di server yang berbeda dengan mysql-client kita.

mysqldump -u nama_user -h ip_address -p nama_database > output_file.sql
Enter fullscreen mode Exit fullscreen mode

Tapi kadang kala kita butuh untuk automation sehingga akan sulit ketika harus memasukan password secara manual, nah pada kasus tersebeut kita bisa menggunakan parameter --defaults-extra-file. Dengan metode ini kita buat file .cnf yang berisi kredensial dari mysqlnya, contohnya seperti berikut

[client]
user=root
password=qwerty
host=127.0.0.1
port=3306
Enter fullscreen mode Exit fullscreen mode

kita asumsikan filenya bernama file.cnf dan berikut cara menggunakanaya.

mysqldump --defaults-extra-file=file.cnf nama_database > output_file.sql
Enter fullscreen mode Exit fullscreen mode

Perhatikan juga lock table saat mengexport database, untuk mengatasi hal tersebut tambahkan beberapa osi berikut

mysqldump --defaults-extra-file=file.cnf nama_database --single-transaction --no-tablespaces --column-statistics=0 > output_file.sql
Enter fullscreen mode Exit fullscreen mode

Berikut penjelasanya:
--single-transaction: Opsi ini digunakan untuk memastikan bahwa mysqldump menggunakan transaksi tunggal saat mengambil salinan dari database. Ini berguna terutama ketika kita ingin mengamankan database tanpa memblokir tabel dan memungkinkan operasi baca dan tulis normal terus berlanjut selama proses pencadangan.

--no-tablespaces: Opsi ini menginstruksikan mysqldump untuk tidak menyertakan informasi tabel ruang tabel (tablespace) dalam perintah pencadangan. Tablespace adalah tempat penyimpanan fisik untuk tabel dalam MySQL. Dengan menggunakan opsi ini, pencadangan akan lebih independen dari lokasi fisik tabel.

--column-statistics=0: Opsi ini digunakan untuk mengatur jumlah kolom statistik yang disertakan dalam perintah pencadangan. Dengan nilai 0, mysqldump akan mengabaikan statistik kolom. Statistik kolom menyimpan informasi tentang distribusi data dalam kolom, dan ini dapat membantu optimizer dalam perencanaan eksekusi query. Namun, dalam beberapa kasus, terutama untuk database besar, menyertakan statistik kolom dapat meningkatkan ukuran pencadangan secara signifikan.

Nah, atau bisa juga lock table dengan menambahkan parameter --lock-table=false, seperti berikut

mysqldump --defaults-extra-file=file.cnf nama_database --lock-table=false > output_file.sql
Enter fullscreen mode Exit fullscreen mode

Kita juga bisa mengexport data pertabel dengan syntax berikut

mysqldump -u nama_user -p nama_database nama_tabel > output_file.sql
Enter fullscreen mode Exit fullscreen mode

Import Database

Berikut syntax untuk mengimport file .sql

mysql -u nama_user -p nama_database < file.sql
Enter fullscreen mode Exit fullscreen mode

Basic syntaxnya seperti contoh diatas, selebihnya saya tidak akan menjelaskan panjang lebar, silakan teman-teman coba.
Selamat mencoba.

Top comments (0)