使用现有数据设置复制时,您必须在启动复制服务之前决定如何最好地将数据从源获取到副本。
使用现有数据设置复制的基本过程如下:
在 MySQL 源运行的情况下,创建一个用户,供副本在复制期间连接到源时使用。请参阅 第 17.1.1.3 节,“为复制创建用户”。
如果您尚未
server_id
在源服务器上配置系统变量并启用二进制日志记录,则必须将其关闭以配置这些选项。请参阅 第 17.1.1.1 节,“设置复制源配置”。如果您必须关闭源服务器,这是拍摄其数据库快照的好机会。在关闭源、更新配置和拍摄快照之前,您应该获取源状态(请参阅 第 17.1.1.4 节“获取复制源二进制日志坐标” )。有关如何使用原始数据文件创建快照的信息,请参阅 第 17.1.1.6 节,“使用原始数据文件创建数据快照”。
如果您的源服务器已经正确配置,请获取其状态(请参阅 第 17.1.1.4 节,“获取复制源二进制日志坐标”),然后使用mysqldump拍摄快照(请参阅 第 17.1.1.5 节,“使用创建数据快照mysqldump” )或使用第 17.1.1.6 节“使用原始数据文件创建数据快照”中的指南拍摄实时服务器的原始快照 。
更新副本的配置。请参阅 第 17.1.1.2 节,“设置副本配置”。
下一步取决于您如何在源上创建数据快照。
如果您使用mysqldump:
使用选项启动副本,
--skip-slave-start
以便复制不会启动。导入转储文件:
$> mysql < fulldb.dump
如果您使用原始数据文件创建快照:
将数据文件提取到副本的数据目录中。例如:
$> tar xvf dbdump.tar
您可能需要设置文件的权限和所有权,以便副本服务器可以访问和修改它们。
使用选项启动副本,
--skip-slave-start
以便复制不会启动。
使用来自源的复制坐标配置副本。这告诉副本二进制日志文件和文件中需要开始复制的位置。此外,使用源的登录凭据和主机名配置副本。有关
CHANGE MASTER TO
所需语句的更多信息,请参阅第 17.1.1.10 节,“在副本上设置源配置”。启动复制线程:
mysql> START SLAVE;
执行此过程后,副本应连接到源并赶上自拍摄快照以来发生的任何更新。
如果您忘记为
server_id
源设置系统变量,则副本无法连接到它。
如果您忘记
server_id
为副本设置系统变量,您会在副本的错误日志中收到以下错误:
Warning: You should set server-id to a non-0 value if master_host
is set; we will force server id to 2, but this MySQL server will
not act as a slave.
如果由于任何其他原因无法复制,您还会在副本的错误日志中找到错误消息。
副本使用存储在其连接元数据存储库中的信息来跟踪它已处理了多少源的二进制日志。存储库可以是文件或表格的形式,由为
master_info_repository
系统变量设置的值决定。当副本运行时
master_info_repository=FILE
,您可以在其数据目录中找到两个文件,名为
master.info
和
relay-log.info
。master_info_repository=TABLE
相反,此信息保存在系统数据库中的
表
中master_slave_info
。
mysql
在任何一种情况下,都
不要删除或编辑文件或表格,除非您确切地知道自己在做什么并完全理解其中的含义。即使在那种情况下,您也最好使用该CHANGE MASTER TO
语句来更改复制参数。副本可以使用语句中指定的值自动更新状态文件。有关更多信息,请参阅第 17.2.2 节,“中继日志和复制元数据存储库”。
连接元数据存储库的内容会覆盖在命令行或
my.cnf
. 有关详细信息,请参阅
第 17.1.4 节,“复制和二进制日志记录选项和变量”。
源的单个快照足以用于多个副本。要设置其他副本,请使用相同的源快照并按照刚刚描述的过程的副本部分进行操作。