Tutorial ini menjelaskan cara membuat backup dan restore database MySQL atau MariaDB dari baris perintah menggunakan utilitas mysqldump.

File backup yang dibuat oleh utilitas mysqldump pada dasarnya adalah seperangkat pernyataan SQL yang dapat digunakan untuk membuat ulang database asli. Perintah mysqldump juga dapat menghasilkan output file dalam format CSV dan XML.

Anda juga dapat menggunakan utilitas mysqldump untuk mentransfer database MySQL Anda ke server MySQL lain.

Jika Anda tidak membuat cadangan database, bug perangkat lunak atau kegagalan hard drive bisa menjadi bencana. Untuk membantu menghemat banyak waktu dan frustrasi, Anda sangat disarankan untuk berhati-hati dengan membuat backup database MySQL Anda secara berkala.

Sintaks Perintah Mysqldump

Sebelum membahas cara menggunakan perintah mysqldump, mari kita mulai dengan meninjau sintaks dasar.

Ekspresi utilitas mysqldump mengambil bentuk berikut:

mysqldump [options] > file.sql
  • options – Opsi untuk mysqldump
  • file.sql – Output hasil backup

Untuk menggunakan perintah mysqldump, MySQL server harus dapat diakses dan dijalankan.

Backup Satu Database MySQL

Kasus penggunaan paling umum dari tool mysqldump adalah untuk membuat cadangan satu database.

Misalnya, untuk membuat cadangan dari database bernama analisa_website dan menyimpannya ke file bernama analisa_website.sql, untuk melakukannya, jalankan perintah berikut dengan pengguna root:

mysqldump -u root -p analisa_website > analisa_website.sql

Anda akan diminta memasukkan password root. Setelah otentikasi berhasil, proses dump akan dimulai. Bergantung pada ukuran database, prosesnya bisa relatif.

Jika Anda masuk sebagai pengguna yang sama dengan yang Anda gunakan untuk melakukan ekspor dan pengguna itu tidak memerlukan kata sandi, Anda dapat menghilangkan opsi -u dan -p:

mysqldump analisa_website > analisa_website.sql

Cara Backup Beberapa Database MySQL

Untuk mem-backup beberapa database MySQL dengan satu perintah, Anda perlu menggunakan opsi --database diikuti oleh daftar database yang ingin di backup. Setiap nama database harus dipisahkan oleh spasi.

mysqldump -u root -p --databases analisa_website_a analisa_website_b > database_analisa_a_b.sql

Perintah di atas akan membuat file dump yang berisi kedua database (digabung).

Backup Semua Database MySQL

Gunakan opsi --all-databases untuk mencadangkan semua database MySQL:

mysqldump -u root -p --all-databases > semua_database.sql

Sama seperti contoh sebelumnya, perintah di atas akan membuat file dump tunggal yang bernama semua_database.sql dan berisi semua basis data.

Backup Semua Database MySQL ke File Terpisah

Utilitas mysqldump tidak memberikan opsi untuk mencadangkan semua databases ke file terpisah, tetapi kita dengan mudah mencapainya dengan menggunakan bash FOR loop sederhana:

for DB in $(mysql -e 'show databases' -s --skip-column-names); do
    mysqldump $DB > "$DB.sql";
done

Perintah di atas akan membuat file dump terpisah untuk setiap database, output backup akan menggunakan nama database sebagai nama file.

Buat Backup Database MySQL Terkompresi

Jika ukuran basis data sangat besar, maka pilihan untuk mengompres output merupakan ide yang baik. Untuk melakukan itu cukup gunakan simbol pipe ( | ) di output ke utilitas gzip, dan arahkan kembali ke file seperti yang ditunjukkan di bawah ini:

mysqldump nama_database | gzip > nama_hasil.sql.gz

Buat backup dengan Cap Waktu

Jika Anda ingin menyimpan lebih dari satu cadangan di lokasi yang sama, maka Anda dapat menambahkan tanggal saat ini ke nama file cadangan:

mysqldump  nama_db > nama_backup-$(date +%Y%m%d).sql

Perintah di atas akan membuat file dengan format berikut nama_backup-20180617.sql

Restore dump MySQL

Anda dapat memulihkan dump MySQL menggunakan tool mysql. Perintah sintaks umum adalah sebagai berikut:

mysqld  nama_database < file.sql

Dalam kebanyakan kasus, Anda harus membuat database untuk diimpor. Jika database sudah ada, pertama Anda harus menghapusnya.

Pada contoh berikut ini, perintah pertama akan membuat database bernama nama_database dan kemudian akan mengimpor dump backup_database.sql ke dalamnya:

mysql -u root -p -e "create database nama_database";

mysql -u root -p nama_database < backup_database.sql

Restore Database MySQL Tunggal dari Full MySQL Dump

Jika Anda mencadangkan semua basis data Anda menggunakan opsi -all-databases dan Anda ingin mengembalikan satu database dari file backup yang notabene berisi banyak database, Anda dapat  menggunakan opsi --one-database seperti yang ditunjukkan dalam contoh di bawah ini:

mysql --one-database database_name < all_databases.sql

Export dan Import Database MySQL Dalam Satu Perintah

Alih-alih membuat file dump dari satu database dan kemudian mengimpor backup ke database MySQL lain, Anda bisa menggunakan satu perintah dengan :

mysqldump -u root -p nama_database | mysql -h remote_host -u root -p remote_nama_database

Perintah di atas akan menyalurkan output ke mysql client pada host jarak jauh dan akan mengimpornya ke database bernama remote_nama_database. Sebelum menjalankan perintah, pastikan database sudah ada di server jauh.

Backup Otomatis Database MySQL Menggunakan Cron job

Mengotomatiskan proses backup database semudah membuat cron job seperti pada umumnya. Kita akan mengatur cron job untuk menjalankan perintah mysqldump pada waktu yang ditentukan.

Untuk mengatur cadangan otomatis dari database MySQL menggunakan cronjob, ikuti langkah-langkah di bawah ini:

  1. Buat file bernama .my.cnf di direktori home pengguna Anda:
    sudo nano ~/.my.cnf

    Copy dan Paste teks berikut ini ke file .my.cnf.

    [client]
    user = dbuser
    password = dbpasswd

    Jangan lupa ganti dbuser dan dbpasswd dengan nama dan kata sandi kredensial Anda.

  2. Batasi izin file kredensial sehingga hanya Anda yang dapat mengaksesnya:
    chmod 600 ~/.my.cnf
  3. Buat direktori untuk menyimpan backup :
    mkdir ~/folder_backup
  4. Kemudian Buka file crontab
    crontab -e

    Tambahkan cron job berikut yang akan membuat backup dari nama database database_saya setiap hari pada pukul 3 pagi:

    0 3 * * * /usr/bin/mysqldump -u dbuser database_saya > /home/username/folder_backup/mydb-$(date +%Y%m%d).sql

    Jangan lupa mengganti dbuser dengan nama akun MySQL dan username dengan nama akun Anda yang sebenarnya (Nama akun yang ada di sistem operasi).

Anda juga dapat membuat cronjob lain untuk menghapus cadangan yang lebih dari 30 hari:

find /path/to/backups -type f -name "*.sql" -mtime +30 -delete

Tentu saja, Anda perlu menyesuaikan perintah sesuai dengan lokasi cadangan Anda dan nama file. Untuk mempelajari lebih lanjut tentang perintah find, lihat Cara Menemukan File di Linux Menggunakan Command Line.

Kesimpulan

Tutorial ini hanya mencakup dasar-dasar mengelola database MySQL, tetapi dapat menjadi awal yang baik bagi siapa saja yang ingin belajar cara membuat dan restore backup database MySQL dari baris perintah menggunakan utilitas mysqldump.

Jika Anda ingin mempelajari lebih lanjut tentang bekerja dengan MySQL dari baris perintah, Lihat juga panduan lain tentang mengolah dan mengatur database :