Kini versi xtrabackup telah dinaik taraf kepada 8.0, tetapi ia hanya disokong untuk mysql8.0
Kami masih menggunakan 2.4
, tetapi 2.4
dibandingkan dengan yang sebelumnya2.1
Terdapat perubahan besar: innobackupex
fungsi semuanya disepadukan ke dalam xtrabackup
, dan hanya terdapat satu binary
Selain itu, atas sebab keserasian, innobackupex
digunakan sebagai pautan lembut xtrabackup
, iaitu xtrabackup
Sandaran jadual bukan Innodb kini disokong dan Innobackupex
akan dialih keluar dalam versi seterusnya (sudah dialih keluar dalam 8.0 Adalah disyorkan untuk menggantikan xtrabackup
dengan innobackupex
). Terdapat juga beberapa ciri baharu yang lain untuk mendapatkan arahan lanjut, sila lihat xtrabackup
arahan terperinci versi baharu.
Jika pemasangan memerlukan kebergantungan, pasangkannya
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb sudo apt-get update sudo apt-get install percona-xtrabackup-24
mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY '123456'; mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost'; mysql> FLUSH PRIVILEGES;
xtrabackup --user=bkpuser --password=123456 --backup --target-dir=/data/backups/mysql # 会看到输出 200603 09:55:37 Executing UNLOCK TABLES 200603 09:55:37 All tables unlocked 200603 09:55:37 [00] Copying ib_buffer_pool to /data/backups/mysql/ib_buffer_pool 200603 09:55:37 [00] ...done 200603 09:55:37 Backup created in directory '/data/backups/mysql/' 200603 09:55:37 [00] Writing /data/backups/mysql/backup-my.cnf 200603 09:55:37 [00] ...done 200603 09:55:37 [00] Writing /data/backups/mysql/xtrabackup_info 200603 09:55:37 [00] ...done xtrabackup: Transaction log of lsn (837940114) to (837940123) was copied. 200603 09:55:37 completed OK!
Sediakan sandaran
xtrabackup --prepare --target-dir=/data/backups/mysql
Salin sandaran
Saya hanya akan buat sandaran penuh di sini untuk menunjukkan Pindahkan direktori data di mana blog saya mysql
disimpan
mv /var/lib/mysql /var/lib/mysql_bak mkdir /var/lib/mysql xtrabackup --copy-back --target-dir=/data/backups/mysql # 这样会保留原始备份 他会将当时读到my.cnf的datadir设置为恢复路径 200603 10:47:42 [01] ...done 200603 10:47:42 [01] Copying ./performance_schema/mutex_instances.frm to /var/lib/mysql/performance_schema/mutex_instances.frm 200603 10:47:42 [01] ...done 200603 10:47:42 [01] Copying ./performance_schema/events_transactions_history_long.frm to /var/lib/mysql/performance_schema/events_transactions_history_long.frm 200603 10:47:42 [01] ...done 200603 10:47:42 [01] Copying ./xtrabackup_info to /var/lib/mysql/xtrabackup_info 200603 10:47:42 [01] ...done 200603 10:47:42 [01] Copying ./ibtmp1 to /var/lib/mysql/ibtmp1 200603 10:47:42 [01] ...done 200603 10:47:42 completed OK!
Sandaran berjaya dan saya masih boleh mengakses blog seperti biasa selepas memulakan semula hahahahahahahaha
# 将恢复目录的属主更改一下 chown -R mysql:mysql mysql /etc/init.d/mysql start
Jika anda tidak mahu membuat sandaran data semasa pemulihan, anda boleh menggunakan perintah xtrabackup --move-back
Sandaran tambahan adalah berdasarkan data sedia ada, yang bermakna anda perlu membuat sandaran penuh terlebih dahulu dan kemudian merekodkannya pada masa itu
Buat sandaran
xtrabackup --user=bkpuser --password=123456 --backup --target-dir=/data/backups/base # 基于全量备份进行增量 xtrabackup --user=bkpuser --password=123456 --backup --target-dir=/data/backups/inc1 --incremental-basedir=/data/backups/base
root@longing:/data/backups/inc1# cat xtrabackup_checkpoints backup_type = incremental from_lsn = 837943393 to_lsn = 837943393 last_lsn = 837943402 compact = 0 recover_binlog_info = 0 flushed_lsn = 837943402
ialah titik permulaan sandaran from_lsn
, untuk sandaran tambahan ia mestilah LSN
sama seperti sandaran to_lsn
sebelumnya. base
(titik pemeriksaan terakhir LSN) dan to_lsn
(terakhir disalin last_lsn
), yang bermaksud bahawa semasa proses sandaran Terdapat beberapa trafik pada pelayan. LSN
xtrabackup --user=bkpuser --password=123456 --backup --target-dir=/data/backups/inc2 --incremental-basedir=/data/backups/inc1
xtrabackup --user=bkpuser --password=123456 --prepare --apply-log-only --target-dir=/data/backups/base xtrabackup --user=bkpuser --password=123456 --prepare --apply-log-only --target-dir=/data/backups/base --incremental-dir=/data/backups/inc1 xtrabackup --user=bkpuser --password=123456 --prepare --target-dir=/data/backups/base --incremental-dir=/data/backups/inc2
Harus digunakan apabila menggabungkan semua. kenaikan kecuali yang terakhir, setelah disediakan, sandaran tambahan adalah sama dengan sandaran penuh dan ia boleh dipulihkan dengan cara yang sama. xtrabackup --apply-log-only
xtrabackup --copy-back --target-dir=/data/backups/base
, yang juga boleh kami panggil sebagai fail log transaksi log akan menyimpan rekod setiap data jadual InnoDB Semak semula. Apabila InnoDB bermula, InnoDB menyemak fail data dan log urus niaga dan melaksanakan dua langkah: ia menggunakan (menuju ke hadapan) log urus niaga komited pada fail data dan melancarkan semula data yang diubah suai tetapi tidak komited. InnoDB
akan mengingati Xtrabackup
pada permulaan, dan menyalin semua fail data. Proses penyalinan mengambil sedikit masa, jadi jika fail data diubah suai dalam tempoh ini, pangkalan data akan berada pada masa yang berbeza. Pada masa ini, log sequence number(LSN)
akan menjalankan proses latar belakang untuk memantau log transaksi dan menyalin pengubahsuaian terkini daripada log transaksi. xtrabackup
Operasi ini mesti dilakukan secara berterusan kerana log transaksi akan ditulis berulang kali secara bergilir, dan log transaksi boleh digunakan semula. Oleh itu Xtrabackup
Sejak permulaan, pengubahsuaian pada setiap fail data dalam log transaksi telah direkodkan secara berterusan. Di atas adalah proses sandaran xtrabackup
. xtrabackup
ini hanya digunakan untuk menggabungkan kenaikan untuk mengelakkan kenaikan seterusnya tidak tersedia. Lihat --apply-log-only
参见 man xtrabackup
一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。他的作用是使数据文件处于一致性状态,方法是回滚未提交的事务并同步已提交的事务至数据文件。
mysqldump
备份缺点
效率较低,备份和还原速度慢,份过程中,数据插入和更新操作会被挂起
MySQL
备份工具
跨平台性差,备份时间长,冗余备份,浪费存储空间
XtraBackup
备份过程中不锁库表,适合生产环境,由专业组织Percona
提供( 改进MySQL
分支 )
XtraBackup
能对表 库进行备份吗?
当然了,只不过博主太懒了,写起来太麻烦了,不过原理都是差不多,操作也差不多,大家自己搞搞!
xtrabackup --user=bkpuser --password=123456 --backup --databases="u_test" --no-timestamp --target-dir=/data/backups/u xtrabackup --prepare --target-dir=/data/backups/u
还原
先prepare
,利用--apply-log
的作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态
copy
,因为是部分备份,不能直接用--copy-back
,只能手动来复制需要的库,也要复制ibdata(数据字典)
cp /data/backups/u/ibdata1 /var/lib/mysql/
cp -r u/u_test /var/lib/mysql/
Atas ialah kandungan terperinci Cara menggunakan Xtrabackup untuk sandaran tambahan mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!