Tutorial ini menjelaskan cara membuat cadangan dan memulihkan database MySQL atau MariaDB dari baris perintah menggunakan utilitas mysqldump.
File cadangan yang dibuat oleh utilitas mysqldump pada dasarnya adalah seperangkat pernyataan SQL yang dapat digunakan untuk membuat ulang database asli. Perintah mysqldump juga dapat menghasilkan file dalam format CSV dan XML.
Anda juga dapat menggunakan utilitas mysqldump untuk mentransfer database MySQL Anda ke server MySQL lain.
Sintaks Perintah Mysqldump
Sebelum membahas cara menggunakan perintah mysqldump, mari kita mulai dengan meninjau sintaks dasar.
Ekspresi utilitas mysqldump mengambil bentuk berikut:
mysqldump > file.sql
- options - File opsi mysqldump.sql - File dump (cadangan)
Untuk menggunakan perintah mysqldump, server MySQL harus dapat diakses dan dijalankan.
Cadangkan Database MySQL Tunggal
Kasus penggunaan paling umum dari alat mysqldump adalah untuk membuat cadangan satu database.
Misalnya, untuk membuat cadangan dari database bernama database_name menggunakan root pengguna dan menyimpannya ke file bernama database_name.sql Anda akan menjalankan perintah berikut:
mysqldump -u root -p database_name > database_name.sql
Anda akan diminta memasukkan kata sandi root. Setelah otentikasi berhasil, proses dump akan dimulai. Bergantung pada ukuran database, prosesnya bisa memakan waktu.
mysqldump database_name > database_name.sql
Cadangkan Beberapa Database MySQL
Untuk --database -backup beberapa database MySQL dengan satu perintah, Anda perlu menggunakan opsi --database diikuti oleh daftar database yang ingin Anda backup. Setiap nama basis data harus dipisahkan oleh ruang.
mysqldump -u root -p --databases database_name_a database_name_b > databases_a_b.sql
Perintah di atas akan membuat file dump yang berisi kedua database.
Cadangkan Semua Database MySQL
Gunakan opsi --all-databases untuk mencadangkan semua database MySQL:
mysqldump -u root -p --all-databases > all_databases.sql
Sama seperti contoh sebelumnya, perintah di atas akan membuat file dump tunggal yang berisi semua basis data.
Cadangkan semua database MySQL ke file terpisah
Utilitas mysqldump tidak memberikan opsi untuk mencadangkan semua basis data ke file yang terpisah, tetapi kami dengan mudah mencapainya dengan 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 menggunakan nama database sebagai nama file.
Buat Backup Database MySQL Terkompresi
Jika ukuran basis data sangat besar itu adalah ide yang bagus untuk mengompres output. Untuk melakukan itu cukup pipa output ke utilitas gzip , dan arahkan kembali ke file seperti yang ditunjukkan di bawah ini:
mysqldump database_name | gzip > database_name.sql.gz
Buat Cadangan dengan Stempel Waktu
mysqldump database_name > database_name-$(date +%Y%m%d).sql
Perintah di atas akan membuat file dengan format database_name-20180617.sql
Anda dapat memulihkan dump MySQL menggunakan alat mysql . Perintah sintaks umum adalah sebagai berikut:
mysqld database_name < file.sql
Dalam kebanyakan kasus, Anda harus membuat basis data untuk diimpor. Jika database sudah ada, pertama Anda harus menghapusnya.
Pada contoh berikut ini, perintah pertama akan membuat database bernama database_name dan kemudian akan mengimpor dump database_name.sql ke dalamnya:
mysql -u root -p -e "create database database_name"; mysql -u root -p database_name < database_name.sql
Kembalikan Database MySQL Tunggal dari Dump MySQL Penuh
mysql --one-database database_name < all_databases.sql
Ekspor dan Impor Database MySQL dalam Satu Perintah
Alih-alih membuat file dump dari satu database dan kemudian mengimpor cadangan ke database MySQL lain Anda bisa menggunakan satu-liner berikut:
mysqldump -u root -p database_name | mysql -h remote_host -u root -p remote_database_name
Perintah di atas akan menyalurkan output ke klien mysql pada host jarak jauh dan akan mengimpornya ke database bernama remote_database_name . Sebelum menjalankan perintah, pastikan database sudah ada di server jauh.
Otomatis Cadangkan dengan Cron
Mengotomatiskan proses pencadangan basis data semudah membuat tugas cron apa yang akan menjalankan perintah mysqldump pada waktu yang ditentukan.
Untuk mengatur cadangan otomatis dari database MySQL menggunakan cronjob, ikuti langkah-langkah di bawah ini:
Buat file bernama .my.cnf di direktori home pengguna Anda:
sudo nano ~/.my.cnf
Salin dan tempel teks berikut ini ke file.my.cnf.
user = dbuser password = dbpasswd
Jangan lupa ganti dbpasswd dan dbpasswd dengan pengguna basis data dan kata sandi pengguna.
Batasi izin file kredensial sehingga hanya pengguna Anda yang dapat mengaksesnya:
chmod 600 ~/.my.cnf
Buat direktori untuk menyimpan cadangan:
mkdir ~/db_backups
Buka file crontab pengguna Anda:
crontab -e
Tambahkan tugas cron berikut yang akan membuat cadangan dari nama database mydb setiap hari pukul 3 pagi:
0 3 * * * /usr/bin/mysqldump -u dbuser mydb > /home/username/db_backups/mydb-$(date +%Y%m%d).sql
Jangan lupa mengganti username dengan username Anda yang sebenarnya.
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, periksa Cara Menemukan File di Linux Menggunakan panduan Command Line.
Kesimpulan
Tutorial ini hanya mencakup dasar-dasarnya, tetapi harus menjadi awal yang baik bagi siapa saja yang ingin belajar cara membuat dan mengembalikan database MySQL dari baris perintah menggunakan utilitas mysqldump.
Anda juga dapat memeriksa tutorial tentang cara mengatur ulang kata sandi root MySQL jika Anda lupa.
mysql mariadb backup mysqldump