xtrabackup使用注意

备份前阶段:

1、备份文件夹必须专用于备份

在xtrabackup文件夹中,不应该有任何其他文件或任何文件夹。因为文件或文件夹时间戳可能会影响下一次增量备份。原因是

if($ option_incremental_basedir ne''){
$ incremental_basedir = $ option_incremental_basedir;
} else {
我的@dirs =`ls -t $ backup_root`;
我的$ inc_dir = $ dirs [0];
格格($ inc_dir);
$ incremental_basedir = File :: Spec-> catfile($ backup_root,$ inc_dir);

ls -t用于确定基于修改时间的最新备份文件夹。最旧的文件夹时间戳可能由于错误而更改,在我们的示例中,清除作业开始工作,并且由于文件夹很大而无法完成。在这种情况下,此清除文件夹(最旧的文件夹)可被视为最新的备份文件夹,xtrabackup会选择错误的文件夹。

2、information_schema未备份

这意味着表创建时间戳丢失。所有表的时间戳都基于它们何时恢复。

备份阶段:

(1)从master进行备份

innobackupex --user = root --password =`keydbgetkey mysqlroot` --host='localhost' --port=3308

复制信息会记录在xtrabackup_binlog_pos_innodb中。
基于ROW的复制事件格式允许仅维护持久表状态。因此,即使临时表中有更改,主日志文件和位置也将相同,所以备份master不会备份临时表。

备份选项--compress --nolock

数据库备份已压缩。它可以节省2/3的空间。no-lock意味着xtrabackup不会发出“FLUSH TABLES WITH READ LOCK”来临时锁定表以获得一致的* frm文件。这意味着如果在备份* frm期间发生某些DDL,则备份可能会不一致。

(2)从slave进行备份

innobackupex --user = root --password =`keydbgetkey mysqlroot` --host='localhost' --port=3308 --slave-info

如果你有一个大的alter table查询运行,xtrabackup将等到“alter query”结束。

mysql>  show processlist;
+------+-----------------+-----------+------+---------+--------+----------------------------------+------------------------------------------------+-----------+---------------+
| Id   | User            | Host      | db   | Command | Time   | State                            | Info                                           | Rows_sent | Rows_examined |
+------+-----------------+-----------+------+---------+--------+----------------------------------+------------------------------------------------+-----------+---------------+
|    1 | event_scheduler | localhost | NULL | Daemon  | 260586 | Waiting on empty queue           | NULL                                           |         0 |             0 |
|  157 | root            | localhost | NULL | Sleep   |      1 |                                  | NULL                                           |         1 |             4 |
|  192 | system user     |           | NULL | Connect | 258744 | Waiting for master to send event | NULL                                           |         0 |             0 |
|  193 | system user     |           | yax  | Connect |   5923 | altering table                   | alter table creative_content drop column stacy |         0 |             0 |
| 5389 | root            | localhost | NULL | Query   |      4 | Waiting for backup lock          | LOCK TABLES FOR BACKUP                         |         0 |             0 |
| 5390 | root            | localhost | NULL | Query   |      0 | init                             | show processlist                               |         0 |             0 |
+------+-----------------+-----------+------+---------+--------+----------------------------------+------------------------------------------------+-----------+---------------+
6 rows in set (0.00 sec)

这里单独提一下 Waiting for backup lock
xtrabackup详见https://www.percona.com/doc/percona-server/LATEST/management/backup_locks.html

mariabackup详见https://mariadb.com/kb/en/library/backup-lock/

在没有启用GTID的情况下从多线程从站(MTS)进行备份,此时--slave-info无法添加。
innobackupex --user = root --password =`keydbgetkey mysqlroot` --host='localhost' --port=3308 --slave-info
innobackupex: Error: The --slave-info option requires GTID enabled for a multi-threaded slave

对于没有启用GTID的MTS,--safe-slave-backup是可选的。它导致执行点 - 时间恢复的不同机制。

innobackupex --user = root --password =`keydbgetkey mysqlroot` --host='localhost' --port=3308  --safe-slave-backup

或者

innobackupex --user = root --password =`keydbgetkey mysqlroot` --host='localhost' --port=3308
不锁表进行备份

使用此选项可在备份时禁用备份锁定。仅当所有表都是InnoDB并且您不关心备份的二进制日志位置时才使用它。
如果备份用于point-in-time-recovery,则根本不能使用无锁。

恢复阶段:

未完待续。。。

http://funwithmysql.blogspot.com/2017/05/xtrabackup-backup-restore.html

你可能感兴趣的:(xtrabackup使用注意)