11 mysql replication
MySQL Server 1 作为主服务器运行。
MySQL Server 2 作为 Slave 运行。
两个数据库都在线时,它们处于“完美同步”状态。如果Slave下线,Master还在线没有问题;一旦 Slave 再次在线,它们将恢复同步。
除了服务器配置之外,如果主服务器脱机,我会重定向从数据库的连接(使用 JSP 代码)(我当然用 /etc/init.d/mysqld stop 进行了测试)。
当Master重新上线时,有没有自动同步Master和Slave更新的方法?
实现这种性质的一种好方法是设置主-主复制或循环复制。这不要与多主复制混淆。
如果您设置了主从复制,则设置循环复制实际上非常容易。这是您需要执行的操作才能对其进行配置。
对于本示例,我们假设主从复制处于活动状态,但您会遇到一些停机时间(1-2 分钟):
步骤 1) 将此行添加到 Master 上的 /etc/my.cnf。
日志从站更新
步骤 2) 将这些行添加到 Slave 上的 /etc/my.cnf:
log-bin=mysql-bin(或者有任何 master 有这个) log-slave-updates
警告:这是短暂的停机时间!!!
步骤3)在Slave上,service mysql restart
这将激活 Slave 上的二进制日志
步骤4)在Master上,service mysql stop
步骤5)使用rsync将Slave的/var/lib/mysql文件夹复制到Master。
警告:这是更长的停机时间!!!
步骤6)在Slave上,service mysql stop
步骤7)在Slave上,找出最后的二进制日志
步骤8)在Slave上,找出最后一个二进制日志的文件大小
步骤9)使用rsync将Slave的/var/lib/mysql文件夹复制到Master。这应该是一个更快的副本。
步骤10)在Master上,
用Slave的最后一个二进制日志编辑master.info的第2行。
master.info 的第 3 行,带有 Slave 的最后一个二进制日志的文件大小。
master.info 的第 4 行带有 Slave 的 IP。
第5行是复制用户的userid(DO NOT TOUCH)
第6行是复制用户的密码(DO NOT TOUCH)
步骤11)删除Master的所有二进制日志和二进制日志索引文件。
步骤12)在Slave上,service mysql start,等待15秒
步骤13)在Master上,service mysql start
步骤14)在Master上,运行STOP SLAVE;显示主状态;
Step 15) 在 Slave 上,运行 CHANGE MASTER TO MASTER_HOST='IP of Slave',MASTER_USER='userid of replication user from Step10',MASTER_PASSWORD='password of replication user from Step10',MASTER_LOG_FILE='binary log from Step14', MASTER_LOG_POS=来自 Step14 的 LogPos。
步骤 16) 在 Slave 上,运行 START SLAVE;
步骤17)在Master上,运行START SLAVE;
我为我回答的另一个 StackExchange 问题执行了与此类似的步骤。
试一试 !!!
归档时间: |
|
查看次数: |
18717 次 |
最近记录: |