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
    • #关闭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启动的时候复制就不会启动
    • #启动mysql服务器并登陆,查看有关信息(这里要注意,因为你直接复制的old slave的数据目录,所以登录mysql的时候要输入old slave对应的用户密码,最后需要修改过来)
    • mysql> show slave status\G
    • #如果跟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
    • 意思是从./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
      *
    • 那么就说明成功了
  5. 添加一下测试数据,看下数据是否同步

注意事项

  • 在新的slave上,一定要查看错误日志以及对比新slave和现有slave的show slave status内容,查看Master_Log_File和Read_Master_Log_Pos是否有差异
  • 因为你直接复制的old slave的数据目录,所以登录new salve的mysql的时候要输入old slave对应的用户密码,最后需要修改过来

reset slave讲解:

  • 参考链接: https://dev.mysql.com/doc/refman/5.7/en/reset-slave.html
  • RESET SLAVE makes the slave forget its replication position in the master's binary log. This statement is meant to be used for a clean start: It clears the master info and relay log info repositories, deletes all the relay log files, and starts a new relay log file. It also resets to 0 the replication delay specified with the MASTER_DELAY option to CHANGE MASTER TO. RESET SLAVE does not change the values of gtid_executed or gtid_purged.
  • RESET SLAVE会让slave忘记master的二进制文件的复制位置。主要用于干净的启动一个复制,它会清除主信息和中继日志信息库(就是清除mysql.slave_master_info和slave_relay_log_info这两个表),删除所有的中继日志文件,并且启动一个新的中继日志文件。会将CHANGE MASTER TO的 MASTER_DELAY选项指定的值重置为0,RESET SLAVE 不会更改gtid_executed或gtid_purged的值。

参考链接: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

转载于:https://blog.51cto.com/itzhoujun/2351567

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

  1. mysql二进制日志文件差不多_mysql数据同步-基于二进制日志文件和position复制点的方式...

    mysql的binlog日志有三种格式,分别为statement,mixed,以及row. 1.Statement:每一条会修改数据的sql都会记录在binlog中 优缺点:1)不用记录每一行的变化, ...

  2. Mysql的主从复制,基于position的主从复制(二进制日志文件位置的复制)和基于gtid的主从复制

    一.MySQL的下载流程 https://dev.mysql.com/downloads/mysql/ 二.实验环境 两台7版本的虚拟机+一台7版本的真机 主机信息 主机的功能 server1(172 ...

  3. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    构建一个基本的前端自动化开发环境 -- 基于 Gulp 的前端集成解决方案(四) 参考文章: (1)构建一个基本的前端自动化开发环境 -- 基于 Gulp 的前端集成解决方案(四) (2)https: ...

  4. mklink 创建链接(当文件已存在时,无法创建该文件||位置不可用)

    mklink 创建链接 遇到的问题: 当文件已存在时,无法创建该文件. 红框位置的文件夹

  5. [已解决]vscode环境 ros系统 msg文件不生成.h文件

    vscode环境 ros系统 msg文件不生成.h文件 的解决方法 问题描述 问题原因 解决方式 问题描述 在没有用vscode编译器之前,通过修改Cmakelist文件能够正常生成msg文件的 同名 ...

  6. 批量给 PDF 文件的末尾添加一个新页面

    概要:我们有时候需要批量给 PDF 文件的末尾添加一个新的页面,比如说我们需要给最后一页添加一个联系页面等.对于 PDF 这种文件格式来说,我们还需要安装额外的编辑软件,但是这里不需要安装专业的 PD ...

  7. Mysql原理、主从复制、半同步复制及基于SSL复制

    本篇博文主要讲解Mysql主从复制.半同步.基于SSL加密的复制 简介 MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司.MySQL被广泛地应用在Internet上 ...

  8. 43. Systemd的Unit配置详解,unit文件位置,优先级,unit类型,unit文件字段详解,Unit/Service/Install字段,添加mysql服务等例子

    Systemd的Unit配置详解,unit文件位置和优先级,unit文件类型,unit文件字段详解,[Unit]字段,[Service]字段,[Install]字段,添加服务,创建.service 文 ...

  9. 从Apache的日志文件收集和提供统计数据(一个Python插件架构的简单实现)

    从Apache的日志文件收集和提供统计数据 这一章我们将介绍基于插件程序的架构和实现.作为例子,我们将构建一个分析Apache服务器log文件的框架.这一次我们不再使用单片机的方式来创建,而是改为采用 ...

最新文章

  1. Python爬虫图形界面封装版本
  2. linux 定时运行脚本_教你如何在Linux下让Python脚本自启动和定时启动
  3. 合作式智能运输系统 车用通信系统应用层及应用数据交互标准(第二阶段)_携手推进汽车与信息通信标准化融合发展,CSAE与CCSA签署标准化工作备忘录...
  4. mysql 搭建日志服务器_一、架构01-搭建日志服务器Rsyslog
  5. 李宏毅机器学习(二)自注意力机制
  6. 如何让程序异常退出后重启
  7. JS将各值拼接JSON串小例
  8. PHP实现动态获取函数参数的方法
  9. python地图空间可视化神器folium实现以阿里巴巴园区为中心绘制租房小区位置信息
  10. 使用XenApp/XenDesktop发布App-V应用——安装App-V服务器
  11. matlab怎么绘制球差像差曲线,减小球差的环带透镜设计
  12. 贴吧自动签到脚本linux,【渣作】shell脚本百度贴吧签到器
  13. vba python 基金历史排名_“科技基金”万里挑一:近三年各阶段排名前10“科技基金”全在这...
  14. 我的感慨——渴望爱与安定 喜欢云淡风轻!
  15. 最近再看一遍《X战警》系列
  16. 《深度学习之美》第1章
  17. 敢创业但不敢上台演讲?
  18. rpm常用命令汇总 -- 安装,升级,查询,验证,卸载
  19. vue在创建项目时不小心选上代码校验选项(linter/ESlint)后,如何关掉?
  20. PIPIOJ 1004: 惠民工程

热门文章

  1. Java动态编程初探——Javassist
  2. chrome 插件 vimium 介绍
  3. 一图秒懂P2P、P2C 、O2O 、B2C、B2B、C2C
  4. 如何使用LaTeX让自己不乱?
  5. Python整型数与字符串相互转换
  6. 一些很有用的技术工具
  7. Hadoop Streaming
  8. 鸟哥的Linux私房菜(基础篇)-第四章、安装 CentOS 5.x 与多重开机小技巧(三.1. 本练习机的规划--尤其是分割参数)
  9. ReactNative用指定的设备/模拟器运行项目
  10. 前沪江高级架构师学习笔记分享:分布式框架设计与实现