MySQL备份和恢复/使用复制备份/备份来自副本的原始数据

2.2从副本备份原始数据

为了保证复制的文件的完整性,应在副本服务器关闭时备份MySQL副本上的原始数据文件。如果MySQL Server仍在运行,后台任务仍可能更新数据库文件,特别是那些涉及存储引擎的数据库文件,如图所示Innodb.。和Innodb.,这些问题应在崩溃恢复期间解决,但由于备份过程中可以关闭副本服务器,而不会影响源的执行,因此利用此功能是有意义的。

要关闭服务器并备份文件:

  1. 关闭副本MySQL服务器:

    shell> mysqladmin关闭
  2. 复制数据文件。您可以使用任何合适的复制或存档实用程序,包括CP柏油或者Winzip.。例如,假设数据目录位于当前目录下,您可以存档整个目录,如下所示:

    shell> tar cf /tmp/dbbackup.tar ./data
  3. 再次启动MySQL服务器。Unix下:

    shell> mysqld_safe&

    在Windows下:

    C:\>“C:\ Program Files \ MySQL \ MySQL服务器8.0 \ bin \ mysqld”

通常,您应该备份副本MySQL Server的整个数据目录。如果您希望能够恢复数据并作为副本操作(例如,在副本发生故障时),除了数据之外,还需要具有副本的连接元数据存储库和应用程序元数据存储库中继日志文件。在恢复副本的数据后,需要这些项目恢复复制。假设表已用于副本的连接元数据存储库和应用程序元数据存储库(请参阅中继日志和复制元数据存储库),它是MySQL 8.0中的默认值,这些表与数据目录一起备份。如果文件已用于存储库,则会弃用,您必须单独备份这些。如果已将其放在数据目录中的不同位置,则必须单独备份中继日志文件。

如果你丢失了中继日志,但仍然有Relay-log.info.文件,您可以检查它以确定复制SQL线程在源二进制日志中执行的速度。然后你可以使用将复制源更改为声明(来自MySQL 8.0.23)或改变大师声明(在MySQL 8.0.23之前)与source_log_file.|master_log_file.source_log_pos.|master_log_pos.选项以告诉副本从该点重新读取二进制日志。这要求源服务器上的二进制日志仍然存在。

如果您的副本复制加载数据陈述,您还应该备份任何sql_load- *在副本为此目的使用的目录中存在的文件。副本需要这些文件恢复任何中断的复制加载数据操作。此目录的位置是值的slave_load_tmpdir.系统变量。如果没有使用该变量集启动服务器,则目录位置是值的TMPDIR.系统变量。