文章目录
- 主要内容
- 一.给复制拓扑添加新的节点
- 6.启动复制线程,检查slave从属服务器的状态,可以看到I/O线程和SQL线程都正常运行
- 总结
主要内容
- 给复制拓扑添加新的节点
这一节将把server3加入到前面由server1和server2组成的复制结构中,server3会成为server2 的从属服务器,三个节点共同组成了一个三层的主从简单复制拓扑:server1->server2-> server3。要将server3作为server2的从属服务器,首先要把server2的历史数据复制到server3以保证数据库数据的完整性,这需要使用mysqldump工具以逻辑备份的方式将world数据库整体转储到一个sql文件中保存,然后把该文件发送到server3并导入即可。
一.给复制拓扑添加新的节点
1.使用mysqldump工具时可以添加–master-data=2选项,它会在输出文件中添加注释起来的CHANGE, MASTER TO语句,这样在server3上导入数据的同时会将server3的角色更改为server2的slave。
代码如下(示例):
mysqldump -uroot -p --master-data=2 \
-B world > /tmp/server2.sql
2.编辑导出的文件,去掉注释,并添加MASTER_HOST=‘server2’,MASTER_PORT=3306,也就是server3 的主服务器server2,保存。
3.将修改后的转储文件发送到server3,使用scp命令:
代码如下(示例):
scp /tmp/server2.sql root@server3:/tmp/
4.在server3确认转储文件:
代码如下(示例):
ll /tmp/server2.sql
5.登陆server3服务器,使用source命令导入转储文件:
代码如下(示例):
source /tmp/server2.sql
6.启动复制线程,检查slave从属服务器的状态,可以看到I/O线程和SQL线程都正常运行
代码如下(示例):
start slave user='repl' PASSWORD='oracle';
7.在server1上删除city表的id大于4070的行,然后在server2和server3上验证。
代码如下(示例):
select id,name
from world.city
order by id desc
limit 5;
delete from world.city
where id >4070;
8.可以看到,server1上的删除操作,在server2和server3上都同步进行了删除,保持了数据的一致性。另外,在server2和server3上执行show slave status命令检查复制的状态,中继日志坐标位置分别是736780和875,在同一个复制结构中,都是slave角色.
总结
以上是今天要讲的内容,学到了MySQL复制拓扑的给复制拓扑添加新的节点。