10bet网址
MySQL Enterprise Backup 8.0用户指南
相关的文档10bet官方网站 下载本手册

4.3.6乐观备份

乐观备份是一种用于提高备份和恢复大型数据库的性能的特性,在这些数据库中,只有少数表需要频繁修改。

在对大型数据库进行热备份时(比如以tb为单位),备份过程中服务器上可能会生成大量的重做日志文件。由于重做日志文件的增长速度超过了它们的处理速度mysqlbackup时,备份操作实际上可能会失败mysqlbackup不能赶上重做日志周期,并且在被读取之前被服务器覆盖mysqlbackup.此外,运用原木一步准备用于恢复的备份会花很长时间吗mysqlbackup有巨大的ibbackup_logfile文件(从大重做日志文件创建)应用于备份。在备份和恢复过程中,当可用于读写重做日志的I/O资源不足时,问题会更加严重。

乐观备份通过将备份过程划分为两个对用户透明的内部阶段来缓解这些问题:

  1. 乐观阶段:在第一阶段,在备份过程中不太可能被修改的表(称为不活跃的表下面,由用户用optimistic-time选项,或排除optimistic-busy-tables选项)在没有任何锁的情况下备份MySQL实例。由于在备份完成之前不希望更改这些表,因此重做日志、撤消日志和系统表空间不会被备份mysqlbackup在这个阶段。

  2. 正常阶段:在第二阶段中,在第一阶段中没有备份的表(称为备份表)繁忙的表如下所示)的备份方式与普通备份的处理方式类似:首先复制InnoDB文件,然后复制其他相关文件,并在不同时间对数据库应用各种锁进行复制或处理。重做日志、undo日志和system表空间也在此阶段进行备份。

方法时发生乐观备份optimistic-timeoptimistic-busy-tables选项。有关各选项的使用方法,请参见第20.10节,“性能/可伸缩性/容量选项”.如果如预期的那样,由乐观选项标识的非活动表列表在备份期间没有更改(或者,即使更改了很小的百分比),大多数用户将发现,与普通备份相比,总体备份时间大大缩短,因为要备份的重做日志数据的大小将小得多。此外,备份的恢复时间也将减少,因为运用原木由于重做日志更小,操作将更快。但是,如果发现在备份过程中标识的非活动表的列表发生了很大一部分更改,那么执行乐观备份的好处将变得有限,在最坏的情况下,乐观备份实际上可能需要更长的时间来执行,并且对于单文件备份,与普通备份相比,备份的大小将更大。因此,用户应该小心识别哪些表是不活跃的哪些是尝试执行乐观备份时。

笔记
  • 不能对增量备份或使用可移植表空间(TTS)

  • 不要在乐观备份的同时在服务器上执行DDL操作,否则备份将失败。

下面的示例说明如何进行乐观备份。

例4.24使用Option进行乐观备份optimistic-time =YYMMDDHHMMSS

在本例中,自2011年5月16日中午以来被修改的表被视为忙表,并在乐观备份的正常阶段进行备份,所有其他表都在乐观备份阶段进行备份:

Mysqlbackup——defaults-file=/home/dbadmin/my.cnf——optimism -time=110516120000 \——backup-image=<图像名称>——backup-dir =< temp-dir >backup-to-image

例4.25使用Option进行乐观备份现在optimistic-time =

在本例中,所有表都被视为非活动表,并在乐观备份的乐观阶段进行备份:

Mysqlbackup——defaults-file=/home/dbadmin/my.cnf——optimism -time=now \——backup-image= . Mysqlbackup——default -file=/home/dbadmin/my.cnf<图像名称>——backup-dir =< temp-dir >backup-to-image

例4.26使用optimistic-busy-tables选项

在本例中,表在mydatabase前缀是mytables -在它们的名称中,它们被视为忙表,并在乐观备份的正常阶段进行备份,而所有其他表都在乐观阶段进行备份:

Mysqlbackup——defaults-file=/home/dbadmin/my.cnf——optimism -busy-tables="^mydatabase\.mytables- "*" \——backup-image= .<图像名称>——backup-dir =< temp-dir >备份

当你同时使用optimistic-time而且optimistic-busy-tables选项和它们在确定哪些表是忙表时发生冲突,optimistic-busy-tables优先于optimistic-time.例如:

例4.27乐观备份和部分备份optimistic-busy-tables而且optimistic-time选项

在本例中,表在mydatabase前缀是mytables -在它们的名称中被视为忙表,并在正常阶段进行备份,即使它们自2010年5月16日(指定的时间)以来没有被修改过optimistic-time

Mysqlbackup——defaults-file=/home/dbadmin/my.cnf——optimism -busy-tables="^mydatabase\.mytables- "*" \——optimism -time=100516——backup-image=<图像名称>——backup-dir =< temp-dir >备份


同时使用乐观备份和乐观增量备份

通过利用乐观的备份而且乐观增量备份在备份计划中,您可以加快大型数据库的备份速度,特别是在某段时间以来只修改了相对较少的表,而且频繁修改的表并不多的情况下。下面是一个示例命令序列,说明了利用这两个特性的每周备份计划;它还包括将数据恢复到某一天的步骤。

#在2017/02/04星期六晚上1130执行了完全乐观备份。mysqlbackup——defaults-file=/home/admin/my.cnf——optimism -time=160816200000 \——backup-dir=/home/admin/temp_dir——backup-image=/home/admin/backups/mydb_full_201702042330bi \——with-timestamp \ backup-image #然后在接下来的6天晚上1130执行一系列乐观增量备份# 2017/02/05周日mysqlbackup——defaults-file=/home/admin/my.cnf \——incremental=optimistic——increment -base=history:last_backup \——backup-dir=/home/admin/temp_dir \——backup-image=/home/admin/backups/mydb_incremental__201702052330。mysqlbackup——default -file=/home/admin/my.cnf \——incremental=optimistic——increment -base=history:last_backup \——backup-dir=/home/admin/ backups/mydb_incremental__201702062330。mysqlbackup——defaults-file=/home/admin/my.cnf \——incremental=optimistic——increment -base=history:last_backup \——backup-dir=/home/admin/ backups/mydb_incremental__201702072330。mysqlbackup——defaults-file=/home/admin/my.cnf \——incremental=optimistic——increment -base=history:last_backup \——backup-dir=/home/admin/ backups/mydb_incremental__201702082330。mysqlbackup——defaults-file=/home/admin/my.cnf \——incremental=optimistic——increment -base=history:last_backup \——backup-dir=/home/admin/ backups/mydb_incremental__201702092330. mysqlbackup——default -file=/home/admin/my.cnfmysqlbackup——defaults-file=/home/admin/my.cnf \——incremental=optimistic——increment -base=history:last_backup \——backup-dir=/home/admin/ backups/mydb_incremental__201702102330。mysqlbackup——defaults-file=/home/dbadmin/my.cnf——optimistic-time=110516200000 \——backup-dir=/home/admin/temp_dir——backup-image=/home/admin/backups/mydb_full_201702112330将数据库恢复到2017/02/07周二晚上11:30的状态#首先,恢复之前周六的完整乐观备份,即2017/02/04:mysqlbackup——defaults-file=/etc/my.cnf——backup-image=/home/admin/backups/mydb_full_201702042330bi \——backup-dir=/home/admin/temp_dir——datadir=/var/lib/mysql \——with-timestamp \ copy-back-and-apply-log #接下来,恢复接下来周日、周一和周二的乐观增量:mysqlbackup——defaults-file=/etc/my.cnf——backup-image=/home/admin/backups/mydb_incremental__201702052330。Bi \——backup-dir=/home/admin/temp_dir——datadir=/var/lib/mysql——incremental \——with-timestamp \ copy-back-and-apply-log mysqlbackup——defaults-file=/etc/my.cnf——backup-image=/home/admin/backups/mydb_incremental__201702062330。Bi \——backup-dir=/home/admin/temp_dir——datadir=/var/lib/mysql——incremental \——with-timestamp \ copy-back-and-apply-log mysqlbackup——defaults-file=/etc/my.cnf——backup-image=/home/admin/backups/mydb_incremental__201702072330。Bi \——backup-dir=/home/admin/temp_dir——datadir=/var/lib/mysql——incremental \——with-timestamp \ copy-back-and-apply-log