这些选项用于备份在复制中扮演特定角色的数据库服务器,或者包含在备份时需要特别小心的某些类型的数据。
备份副本服务器时,此选项会捕获设置相同副本服务器所需的信息。
meta/ibbackup_slave_info
它在备份目录中创建一个文件,其中包含一个CHANGE MASTER
带有二进制日志位置和源服务器二进制日志文件名称的语句。此信息也打印在 mysqlbackup输出中。要为此源设置一个新的副本,在另一台服务器上恢复备份数据,在备份数据上启动一个副本服务器,并发出一个CHANGE MASTER
带有保存在ibbackup_slave_info
文件中的二进制日志位置的命令。请参见 第 6.1 节 “设置新副本”获取说明。笔记仅在备份副本服务器时使用此选项。在源服务器或非复制服务器上使用时,其行为未定义。
该选项与选项不兼容
--no-locking
;同时使用这两个选项将使 mysqlbackup抛出错误。--only-innodb
此选项与或 选项 不兼容--only-innodb-with-frm
。--safe-slave-backup-timeout
=
SECONDS
(对于版本 3.12.3 及更高版本)对于基于语句的复制 (SBR) 或基于混合的复制设置,该选项指定 mysqlbackup将等待
Slave_open_temp_tables
变为“ 0 ”的时间(以秒为单位) (当没有临时表是打开的)以通过断言全局读锁并复制所有非 InnoDB 表来完成副本服务器的备份。如果等待时间超过选项指定的时间,mysqlbackup 超时并抛出错误。等待是为了防止 mysqlbackup在临时表仍处于打开状态时完成副本备份。有关mysqlbackup如何处理副本服务器上的临时表 的详细信息,请参阅基于语句的复制 (SBR) 副本上的临时表中的描述。此外,mysqlbackup还在副本备份开始时运行初始检查,以查看是否
Slave_open_temp_tables=0
在 设置的持续时间内变为真--safe-slave-backup-timeout
。如果没有,mysqlbackup认为在备份完成之前,一些临时表很可能在超过超时限制后仍保持打开状态;mysqlbackup然后抛出一个错误,而不是继续备份。发生这种情况时,您可以使用更高的 值重新启动备份--safe-slave-backup-timeout
,或者在使用较少的临时表时重试。默认值:300
警告此值的正确设置取决于用例,并且根据情况可能会有很大差异。将此选项的值设置得太高或太低都会对备份操作的性能产生不利影响:
太高:如果您需要等待很长时间才能没有更多的临时表,则可能是您的数据库的更改率非常高,这意味着要包含在备份中的重做日志数据量将很大,备份的恢复时间会很长。在这种情况下,最好让 mysqlbackup超时然后重新启动备份操作,因此表以其最终状态被复制。因此,为选项设置高超时值没有帮助。作为一个非常普遍的经验法则:即使对于使用许多现代表的繁忙数据库,也不要将值设置为超过几个小时。
太低:将等待时间值设置得太低会使备份过程很容易超时,并且当发生这种情况时,必须重新启动该过程。随着重启的重复循环,备份可能需要很长时间才能完成,用于失败备份的资源将被浪费。作为一个非常普遍的经验法则,不要将超时设置为低于默认值 300 秒。
对于基于行的复制 (RBR) 设置,临时表不会复制到副本上。确定副本没有发生 SBR 的用户可以设置
--safe-slave-backup-timeout=0
,mysqlbackup在完成备份之前不会检查任何打开的临时表。当备份过程接近结束时, 此选项暂停mysqlbackup命令。它会在备份日志组主目录中创建一个名为的文件
ibbackup_suspended
,并等到您删除该文件后再继续。此选项可用于通过自定义脚本自定义非 InnoDB 文件的锁定行为和备份。所有表在挂起之前都被锁定,将数据库置于只读状态,除非您使用
--no-locking
或--no-connection
选项关闭锁定。和 选项--only-innodb
也--only-innodb-with-frm
阻止锁定步骤。因为在繁忙的服务器上锁定所有表可能会出现问题,所以您可以使用--only-innodb
和 的组合--suspend-at-end
来仅备份某些 InnoDB 表。--exec-when-locked
=" ..."utility
arg1
arg2
命令行格式 --exec-when-locked="utility arg1 arg2 ..."
类型 细绳 您可以使用此选项运行一个脚本来备份任何未包含在常规备份中的信息。例如,使用
--exec-when-locked
,您可以使用 mysqldump备份来自 MEMORY 存储引擎的表,这些表不在磁盘上。在运行mysqlbackup 之前设置要在脚本中使用的任何变量。在以下示例中,
BACKUP_DIR
环境变量设置为指向当前备份目录(引号用于 , 的参数--exec-when-locked
以防止变量过早扩展BACKUP_DIR
):在 Unix 或 Linux 系统上:
export BACKUP_DIR=path_to_backupdir mysqlbackup --exec-when-locked="mysqldump mydb t1 > $BACKUP_DIR/t1.sql" other_options mysqlbackup_command
或者在 Windows 系统上:
set BACKUP_DIR=path_to_backupdir mysqlbackup --exec-when-locked="mysqldump mydb t1 > %BACKUP_DIR%/t1.sql" other_options mysqlbackup_command
如果该实用程序无法执行或返回非零退出状态,则整个备份过程将被取消。如果您还使用该
--suspend-at-end
选项,则--exec-when-locked
在解除暂停后执行由指定的实用程序。