16.16特殊备份类型选项

这些选项用于备份在复制中扮演特定角色的数据库服务器,或包含在备份时需要特别注意的某些类型的数据。

  • ——slave-info

    备份副本服务器时,此选项捕获设置相同副本服务器所需的信息。它会创建一个文件元/ ibbackup_slave_info在备份目录中,包含修改主语句,其中包含源服务器的二进制日志位置和二进制日志文件的名称。此信息也打印在mysqlbackup输出。若要为此源设置一个新的副本,请在另一个服务器上恢复备份数据,在备份数据上启动副本服务器,然后发出一个命令修改主命令中保存的二进制日志位置ibbackup_slave_info文件。看到章节7.1,“建立一个新的副本”的指令。

    请注意

    仅在备份副本服务器时使用此选项。在源服务器或非复制服务器上使用时,其行为是未定义的。

    选项不兼容——无固定选择;同时使用这两种选择将使mysqlbackup抛出错误。

    选项不兼容——only-innodb——only-innodb-with-frm选项。

  • ——safe-slave-backup-timeout

    对于基于语句的复制(SBR)或基于混合的复制设置,该选项指定时间(以秒为单位)mysqlbackup会等待Slave_open_temp_tables成为0(当没有临时表打开时是这样)通过声明一个全局读锁来完成副本服务器的备份,并复制所有非innodb表。如果等待时间超过该选项指定的时间,mysqlbackup超时并抛出错误。等待是为了预防mysqlbackup在有临时表仍然打开的情况下完成副本备份。参见基于语句的复制(SBR)副本上的临时表有关如何mysqlbackup处理副本服务器上的临时表。

    此外,mysqlbackup还在副本备份开始时运行初始检查,以查看是否Slave_open_temp_tables = 0在所设置的持续时间内为true——safe-slave-backup-timeout.如果没有,mysqlbackup将其作为备份完成之前的早期迹象,一些临时表可能在超过超时限制后仍保持打开状态;mysqlbackup然后抛出错误,而不是继续备份。当发生这种情况时,您可以使用更高的值重新启动备份——safe-slave-backup-timeout,或在使用的临时表较少时重试。

    默认值:300

    警告

    该值的正确设置取决于用例,并且根据情况可能会有很大变化。将该选项的值设置得过高或过低都会对备份操作的性能产生不利影响:

    • 太高了:如果您需要等待很长时间才能没有更多的临时表,则可能是数据库的变化率相当高,这意味着备份中包含的重做日志数据量将很大,备份的恢复时间将很长。在这种情况下,最好还是让mysqlbackup超时,然后重新启动备份操作,这样表将以最终状态复制。因此,为该选项设置较高的超时值是没有帮助的。作为一个非常普遍的经验法则:即使对于使用许多现代表的繁忙数据库,也不要将该值设置为超过a几个小时。

    • 过低:将等待时间值设置得过低会使备份进程很容易超时,当这种情况发生时,进程必须重新启动。通过重复的重新启动周期,备份可能需要很长时间才能完成,失败的备份所使用的资源将被浪费。作为一个非常一般的经验法则,不要将超时设置为低于默认值300秒。

    对于基于行的复制(RBR)设置,临时表不会复制到副本上。确定副本没有发生SBR的用户可以设置——safe-slave-backup-timeout = 0,以mysqlbackup在完成备份之前不会检查任何打开的临时表。

  • ——suspend-at-end

    此选项暂停mysqlbackup备份过程将接近结束时执行此命令。它创建了一个名为ibbackup_suspended在备份日志组主目录中,并等待删除该文件后再继续。此选项用于通过自定义脚本自定义锁定行为和非innodb文件的备份。

    方法关闭锁定,否则所有表在挂起之前都会被锁定,从而使数据库处于只读状态——无固定——、选择。的——only-innodb而且——only-innodb-with-frm选项还可以防止锁定步骤。因为在繁忙的服务器上锁定所有表可能会有问题,所以您可以结合使用——only-innodb而且——suspend-at-end只备份特定的InnoDB表。

  • ——exec-when-locked= "实用程序__arg1最长……”

    命令行格式 ——execute -when-locked="utility arg1 arg2…"
    类型 字符串

    您可以使用此选项运行一个脚本,该脚本备份不包括在常规备份中的任何信息。例如,用——exec-when-locked,你可以使用, mysqldump从内存存储引擎备份不在磁盘上的表。

    在运行之前,设置您想在脚本中使用的任何变量mysqlbackup.在下面的示例中,使用BACKUP_DIR环境变量被设置为指向当前备份目录(的参数使用引号——exec-when-locked,以防止变量的过早膨胀BACKUP_DIR):

    在Unix或Linux系统上:

    出口BACKUP_DIR =path_to_backupdirmysqlbackup——execute -when-locked="mysqldump mydb t1 > $BACKUP_DIR/t1.sql"other_optionsmysqlbackup_command

    或者在Windows系统上:

    设置BACKUP_DIR =path_to_backupdirmysqlbackup——execute -when-locked="mysqldump mydb t1 > %BACKUP_DIR%/t1.sql"other_optionsmysqlbackup_command

    如果该实用程序无法执行或返回非零退出状态,则整个备份过程将被取消。如果你也使用——suspend-at-end选项指定的实用程序——exec-when-locked在暂停解除后执行。