mysqlhotcopy adalah skrip perl yang disertakan dengan instalasi MySQL. Ini mengunci tabel, menyiram tabel dan kemudian melakukan salinan database. Anda juga dapat menggunakan mysqlhotcopy untuk secara otomatis menyalin cadangan langsung ke server lain menggunakan scp
.
1. perintah mysqlhotcopy:
[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold
Contoh di atas, melakukan pencadangan sugarcrm, database MySQL ke direktori /home/backup/database.
- –allowold:Opsi ini mengganti nama cadangan lama menjadi {datbase-name}_old sebelum mengambil cadangan baru. Dalam contoh ini, jika cadangan sugarcrm sudah ada di /home/backup/database, cadangan lama akan dipindahkan ke /home/backup/database/sugarcrm_old sebelum membuat /home/backup/database/sugarcrm.
- –keepold:Opsi ini menginstruksikan mysqlhotcopy untuk menyimpan cadangan lama (yaitu, diubah namanya menjadi _old) setelah pencadangan selesai.
Lihat dokumentasi mysqlhotcopy menggunakan perldoc seperti yang ditunjukkan di bawah ini.
[local-host]# perldoc mysqlhotcopy
Berikut adalah opsi yang tersedia yang dapat diteruskan ke perintah mysqlhotcopy.
Opsi | Deskripsi |
–addtodest | Jangan rename direktori target (jika ada); cukup tambahkan file ke dalamnya |
–diizinkan | Jangan batalkan jika ada target; ganti namanya dengan menambahkan _old suffix |
–checkpoint=db_name.tbl_name | Masukkan entri pos pemeriksaan |
–chroot=path | Direktori dasar chroot jail tempat mysqld beroperasi |
–debug | Tulis log debug |
–dryrun | Laporkan tindakan tanpa melakukannya |
–flushlogs | Hapus log setelah semua tabel dikunci |
–bantuan | Tampilkan pesan bantuan dan keluar |
–host=host_name | Hubungkan ke server MySQL pada host yang diberikan |
–keepold | Jangan hapus target sebelumnya (diganti namanya) setelah selesai |
–noindices | Jangan sertakan file indeks lengkap dalam cadangan |
–kata sandi[=kata sandi] | Kata sandi yang digunakan saat menghubungkan ke server |
–port=port_num | Nomor port TCP/IP yang akan digunakan untuk koneksi |
–tenang | Diam kecuali ada kesalahan |
–regexp | Salin semua database dengan nama yang cocok dengan ekspresi reguler yang diberikan |
–resetmaster | Setel ulang log biner setelah mengunci semua tabel |
–resetslave | Reset file master.info setelah mengunci semua tabel |
–socket=path | Untuk koneksi ke localhost |
–tmpdir=path | Direktori sementara |
–pengguna=nama_pengguna, | Nama pengguna MySQL yang akan digunakan saat menghubungkan ke server |
–versi | Tampilkan informasi versi dan keluar |
2. keluaran perintah mysqlhotcopy:
Perintah mysqlhotcopy di atas akan menampilkan output seperti berikut.
[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold Locked 98 tables in 0 seconds. Flushed tables (`sugarcrm`.`accounts`, `sugarcrm`.`accounts_audit`, `sugarcrm`.`accounts_bugs`) in 0 seconds. Copying 295 files... Copying indices for 0 files... Unlocked tables. mysqlhotcopy copied 98 tables (295 files) in 0 seconds (0 seconds overall).
Secara default, database MySQL terletak di /var/lib/mysql/{db-name}. mysqlhotcopy mengambil cadangan file tabel dari lokasi basis data default ini, ke direktori cadangan. Direktori cadangan /home/backup/database/sugarcrm, akan berisi salinan persis semua file dari direktori /var/lib/mysql/sugarcrm database MySQL yang sebenarnya.
[local-host]# ls -1 /var/lib/mysql/sugarcrm | wc -l 295 [local-host]# ls -1 /home/backup/database/sugarcrm | wc -l 295
Harap dicatat bahwa setiap tabel memiliki tiga file yang sesuai dengan ekstensi *.frm, *.MYD dan *.MYI. Direktori database juga berisi file db.opt yang berisi parameter terkait database.
Pada contoh di atas, Anda dapat melihat mysqlhotcopy mengambil cadangan dari 98 tabel database sugarcrm. Jadi, jumlah total file dalam direktori cadangan =98 tabel * 3 + 1 file konfigurasi db =296 file.
3. Pulihkan dari mysqlhotcopy
Untuk memulihkan cadangan dari cadangan mysqlhotcopy, cukup salin file dari direktori cadangan ke direktori /var/lib/mysql/{db-name}. Untuk amannya, pastikan untuk menghentikan mysql sebelum Anda mengembalikan (menyalin) file. Setelah Anda menyalin file ke /var/lib/mysql/{db-name}, jalankan kembali mysql.
4. Memecahkan masalah mysqlhotcopy
Bagaimana cara mengatasi Tidak dapat menemukan masalah DBD/mysql.pm? mysqlhotcopy adalah skrip perl dan memerlukan modul perl-DBD. Anda mungkin menerima kesalahan berikut saat menjalankan mysqlhotcopy jika modul perl-DBD tidak diinstal.
[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at (eval 7) line 3. Perhaps the DBD::mysql perl module hasn't been fully installed, or perhaps the capitalisation of 'mysql' isn't right. Available drivers: DBM, ExampleP, File, Proxy, Sponge. at /usr/bin/mysqlhotcopy line 177
Pastikan untuk menginstal paket perl-DBD seperti yang ditunjukkan di bawah ini.
[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm Preparing... ########################################### [100%] 1:perl-DBD-MySQL ########################################### [100%]
Bagaimana cara mengatasi masalah dengan pemasangan perl-DBD? Saat menginstal perl-DBD, Anda mungkin mendapatkan pesan kesalahan berikut.
[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm rpmdb: Program version 4.3 doesn't match environment version error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch error: cannot open Packages index using db3 - (-30974) warning: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/redhat rpmdb: Program version 4.3 doesn't match environment version error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch warning: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/redhat error: Failed dependencies: libmysqlclient.so.15 is needed by perl-DBD-MySQL-3.0007-1.fc6.i386 libmysqlclient.so.15(libmysqlclient_15) is needed by perl-DBD-MySQL-3.0007-1.fc6.i386
Unduh dan instal MySQL-shared-compat dari mysql.com dan ini akan mengatasi kesalahan yang disebutkan di atas saat menginstal paket perl-DBD.
[local-host]# rpm -ivh MySQL-shared-compat-5.1.25-0.rhel5.i386.rpm Preparing... ########################################### [100%] 1:MySQL-shared-compat ########################################### [100%]
Apakah Anda menggunakan metode lain untuk membuat cadangan atau memulihkan database MySQL Anda? Silakan tinggalkan komentar Anda.