xtrabackup バージョンは 8.0 にアップグレードされましたが、サポートされるのは mysql8.0
のみです。引き続き 2.4## を使用します。 # ですが、
2.4 は以前の
2.1 と比べて比較的大きな変更があります:
innobackupex 関数はすべて
xtrabackup に統合されています。 one
binary であり、互換性上の理由から、
innobackupex は
xtrabackup のソフト リンクです。つまり、
xtrabackup は非 Innodb テーブルをサポートするようになりました。また、
Innobackupex は次のバージョンで削除される予定です (8.0 ではすでに削除されています)。
innobackupex を
xtrabackup に置き換えることをお勧めします。他にもいくつかの新機能があります。詳細については、
xtrabackup の新しいバージョンを参照してください。
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!
xtrabackup --prepare --target-dir=/data/backups/mysql
mysql が保存されているデータ ディレクトリを移動します。
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!
# 将恢复目录的属主更改一下 chown -R mysql:mysql mysql /etc/init.d/mysql start
コマンド # を使用できます。 ##増分バックアップ
バックアップの作成
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
LSN
です。増分バックアップの場合、base バックアップと同じである必要があります。
この場合、
to_lsn (最後のチェックポイント LSN) と
last_lsn (最後にコピーされた
LSN
最初の増加をテストし、いくつかのデータを作成する前に増分を作成し続けることができます
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
xtrabackup --user=bkpuser --password=123456 --backup --target-dir=/data/backups/inc2 --incremental-basedir=/data/backups/inc1
xtrabackup --apply- log-only
最後の増分を除くすべての増分をマージする場合に使用する必要があります。準備が完了すると、増分バックアップは完全バックアップと同一であり、同じ方法で復元できます。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
InnoDB
は内部的に REDO ログ ファイルを維持します (トランザクション ログ ファイルとも呼ぶことができます)。トランザクション ログには、テーブル データの各 InnoDB レコード変更が保存されます。 InnoDB が起動すると、InnoDB はデータ ファイルとトランザクション ログをチェックし、コミットされたトランザクション ログをデータ ファイルに適用 (ロールフォワード) し、変更されたがコミットされていないデータをロールバックするという 2 つの手順を実行します。ログ シーケンス番号 (LSN) を記憶し、すべてのデータ ファイルをコピーします。コピー処理には時間がかかるため、この間にデータ ファイルが変更されると、データベースの時点が変更されます。この時点で、
xtrabackup
Xtrabackup トランザクション ログはローテーションで繰り返し書き込まれ、トランザクション ログは再利用できるため、この操作は継続的に実行する必要があります。したがって、
xtrabackup は起動以来、各データ ファイルの変更をトランザクション ログに継続的に記録します。以上が
xtrabackupのバックアップ処理です。
最後の増分バックアップに「--apply-log-only」を使用しない理由
最後の「準備」操作ではロールバック操作をスキップする必要がないため、使用されるデータ ファイルは回復用はローカルです。処理されました。サービスが開始されると、再度ロールバック フェーズにはなりません。このパラメータが最後に使用される場合、サーバーは開始後にロールバック フェーズに入ります。したがって、この
--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/
以上がXtrabackup を使用して mysql の増分バックアップを行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。