GNU/Linux >> Belajar Linux >  >> Linux

Backup dan Restore Database MySQL menggunakan mysqlhotcopy


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.


Linux
  1. MySQL:Cara Backup (Dump) dan Restore Database Menggunakan mysqldump

  2. Cara Mencadangkan dan Memulihkan Basis Data di PostgreSQL

  3. Impor Database MySQL

  1. Cara Mencadangkan dan Memulihkan Basis Data Postgres

  2. Cara Backup dan Restore Database MySQL Menggunakan Command Line

  3. Bagaimana cara mengembalikan database MySQL menggunakan perintah di SSH?

  1. Cara Mencadangkan &Memulihkan Basis Data MySQL

  2. Backup dan Restore Database MS SQL Server 2008

  3. Dasar-dasar pengguna dan basis data MySQL