17.1.1.8 Setting Up Replication with Existing Data 设置复制在存储数据的情况下
当设置复制在有数据存在的情况下,你需要决定如何最好的从master得到数据到slave 在开始复制前:
建立复制的基本过程具有数据步骤如下:
在Mysql Master运行的情况下,创建一个用户用于slave连接到master在复制的时候 See Section 17.1.1.3, “Creating a User for Replication”.
如果你没有配置server-id和启动binary loggging在master server上,你需要关闭来配置这些选项。Section 17.1.1.1, “Setting the Replication
Master Configuration”.
如果你需要关闭你的master server,这是一个很好的机会来获取一个数据库的快照,你需要得到master的状态在你关闭master前,
更新配置和创建一个快照。
如果你的master server 已经正确配置,得到它的状态信息,使用mysqldump 来创建一个快照。
更新你的slave的配置
下一步依赖你如何常见一个master的快照数据:
如果你使用mysqldump
启动salve,使用–skip–slave–start选项,让复制不随slave启动而启动
导入dump文件;
shell> mysql < fulldb.dump
如果你创建一个快照使用raw 数据文件:
减压你的数据文件到的slave数据目录
shell> tar xvf dbdump.tar
你需要设置权限和数组
启动slave,使用 –skip-slave-start option so that replication does not start.
配置slave 使用复制坐标从master获得的信息,这个高速slave binary log file
和位置在文件里是复制的起点。 配置slave的登陆认证和master的主机名
启动slave
在你执行这个过程后,slave 应该连接到master和捕捉任何的更新自从快照之后
如果你忘记设置master的server-id选项,slaves 不能连接master
如果你忘记设置slave的server-id,你可能得到下面的错误信息在slave的error log里:
警告;你应该设置server-id 为非0值 如果master_host 被设置,我们会强制server id 为2,
但是MySQL server 不会表现为slave.
slaves使用存储在master info 知识库的信息来跟踪master 的binary log 已经处理多少了。
这个知识库可以以文件或者表的形式,取决于-master-info-repository的设置。
当slave 运行带with –master-info-repository=FILE,你可以在数据目录找到2个文件,命名为master.info和relay-log.info
如果 –master-info-repository=TABLE,这些信息被存储在表master_slave_info 。在任何一种情况,
不要删除或者编辑文件或者表除非你知道你正正在干什么或者完全理解它的影响。