文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

3:添加一个slave到已有的复制环境(基于二进制日志文件位置)

2024-04-02 19:55

关注
  1. 服务器 192.168.1.2 (master) ,服务器 192.168.1.3 (old slave) 服务器 192.168.1.4 (new slave)
  2. 您可以将另一个slave添加到现有复制配置,而无需停止master。为此,您可以通过复制现有slave的数据目录并为新slave提供不同的server ID (由用户指定)和服务器UUID(在启动时生成)来设置新slave。
  3. 在old slave
    • #停止复制
    • mysql> stop slave;
    • Query OK, 0 rows affected (0.00 sec)
    • #查看主二进制日志文件和中继日志文件位置
    • mysql> show slave status\G
    • 3:添加一个slave到已有的复制环境(基于二进制日志文件位置)
    • #关闭old slave的mysql服务
    • [root@iZ2zee8t2icu340bpmaw23Z ~]# service mysqld stop
    • Redirecting to /bin/systemctl stop mysqld.service
    • [root@iZ2zee8t2icu340bpmaw23Z ~]# ps -ef |grep mysql
    • root 14618 14474 0 21:33 pts/0 00:00:00 grep --color=auto mysql
    • #将old slave的数据目录打包
    • [root@iZ2zee8t2icu340bpmaw23Z ~]# cat /etc/my.cnf | grep datadir
    • datadir=/var/lib/mysql
    • [root@iZ2zee8t2icu340bpmaw23Z ~]# cd /var/lib/mysql
    • [root@iZ2zee8t2icu340bpmaw23Z mysql]# tar -zcvf /tmp/file.tar.gz *
    • #启动mysql
    • [root@iZ2zee8t2icu340bpmaw23Z mysql]# service mysqld start
    • #开始复制
    • mysql> start slave;
    • Query OK, 0 rows affected, 1 warning (0.00 sec)
  4. 在new slave上
    • #先关闭mysql
    • [root@iZ2ze7skefrz53o5o1at5hZ ~]# service mysqld stop
    • Redirecting to /bin/systemctl stop mysqld.service
    • #复制old slave的数据目录,进入本机的mysql数据目录
    • [root@iZ2ze7skefrz53o5o1at5hZ ~]# cat /etc/my.cnf | grep datadir
    • datadir=/var/lib/mysql
    • [root@iZ2ze7skefrz53o5o1at5hZ ~]# cd /var/lib/mysql
    • #利用scp把数据给拿过来
    • [root@iZ2ze7skefrz53o5o1at5hZ mysql]# scp root@192.168.1.3:/tmp/file.tar.gz /tmp
    • #这时候我们需要先把本机的数据给备份一下
    • [root@iZ2ze7skefrz53o5o1at5hZ mysql]# tar -zcvf /tmp/mysql_back.tar.gz *
    • #然后将old slave的数据给压缩
    • [root@iZ2ze7skefrz53o5o1at5hZ mysql]# tar -zxvf /tmp/file.tar.gz
    • #从当前机器上的数据目录副本中删除auto.cnf文件,以便使用不同的生成server UUID启动新slave服务器。 server UUID必须是唯一的。
    • [root@iZ2ze7skefrz53o5o1at5hZ mysql]# rm auto.cnf
    • rm: remove regular file ‘auto.cnf’? y
    • #为服务器配置server_id和--skip-slave-start选项,指定了--skip-slave-start的话,那么mysql启动的时候复制就不会启动
    • 3:添加一个slave到已有的复制环境(基于二进制日志文件位置)
    • #启动mysql服务器并登陆,查看有关信息(这里要注意,因为你直接复制的old slave的数据目录,所以登录mysql的时候要输入old slave对应的用户密码,最后需要修改过来)
    • mysql> show slave status\G
    • 3:添加一个slave到已有的复制环境(基于二进制日志文件位置)
    • #如果跟step4可以对应的上,那就没有啥问题,然后启动复制
    • mysql> start slave;
    • ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
    • #1872 错误 这个时候我们查看一下错误日志
    • [root@iZ2ze7skefrz53o5o1at5hZ ~]# tail -f /var/log/mysqld.log
    • 3:添加一个slave到已有的复制环境(基于二进制日志文件位置)
    • 意思是从./iZ2ze7skefrz53o5o1at5hZ-relay-bin.index找不到./iZ2zee8t2icu340bpmaw23Z-relay-bin.000004 relay log 文件,原因是由于我使用的是冷备份文件恢复的实例,在mysql库中的slave_relay_log_info表中依然保留之前relay_log的信息,所以导致启动slave报错。解决方法如下
    • mysql> reset slave;
    • Query OK, 0 rows affected (0.02 sec)
    • mysql> start slave;
    • Query OK, 0 rows affected (0.02 sec)
    • mysql> show slave status\G
      *3:添加一个slave到已有的复制环境(基于二进制日志文件位置)
    • 那么就说明成功了
  5. 添加一下测试数据,看下数据是否同步

注意事项

reset slave讲解:

参考链接:https://dev.mysql.com/doc/refman/5.7/en/binlog-replication-configuration-overview.html

PREV: 2:基于二进制日志文件位置的复制 https://blog.51cto.com/itzhoujun/2351367
NEXT: 4:GTID简单介绍 https://blog.51cto.com/itzhoujun/2352688

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯