本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • MySQL
  • MySQL主从复制(4)把已有数据的MySQL改为主从结构

MySQL主从复制(4)把已有数据的MySQL改为主从结构

发布:TangLu2018-11-23 18:22分类: MySQL 标签: mysql 主从复制 mysql主从

问题:公司业务数据一直使用单台MySQL服务器,现在需要扩展为主从结构,对于已经存在的数据需要不受影响,应该如何实现?

答案:如果之前的服务器有记录二进制日志,那么直接按正常操作配置主从即可,如果没有记录二进制日志,则需要先把Master服务器数据导出到Slave服务器上,然后进行主从复制

配置步骤如下:

1、首先要导出主库的数据,分为两种情况,如果是innodb引擎的可以不锁表,反之要上锁。下面语句适用于innodb引擎,不用锁表。

mysqldump -u root  --master-data=2 --single-transaction --databases  database1  database2  >/mysqldata.sql  
# master-data=2 是为了记录binlog日志的位置,查看备份文件可以找到需要的postion
# single-transaction  innodb引擎加该选项不用锁表

如果非innodb引擎,先进行锁表再执行导出操作,防止导出数据中途插入了新内容(该终端不要退出,否则锁表会中止

flush tables with read lock;    #该语句只在当前会话生效,这个时候需要另启终端进行导出

2、主服务器启用二进制日志,然后重启服务
vim /etc/my.cnf
log_bin = master-bin
binlog_format = row
server_id = 1

3、在Slave服务器上导入Master的备份数据
mysql  -u root < /mysqldata.sql

4、验证数据是否导入成功

show databases;


5、在Master服务器上做授权操作

grant replication slave on *.* to 'repuser'@'192.168.1.110' identified by '123456'
flush privileges


6、在Slave上执行同步语句,由于通常备份时会指定--master-data=2,所以master_log_file和master_log_pos可以在备份文件中看到:

企业微信截图_20181010134923.png

也可以在Master服务器上执行show  master status\G来查看

change master to 
master_host='192.168.1.100'.
master_user='repuser',
master_password='123456',
master_log_file='mysql-bin.000004',
master_log_pos=1484;


 7、从服务器上执行SQL语句,如果Slave_IO_Running和Slave_SQL_Running两项的工作状态为yes就代表成功了

mysql > start slave
mysql > show slave status\G


8、Master服务器解锁 unlock  tables;

 

9、插入一些数据测试同步情况

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《MySQL主从复制(4)把已有数据的MySQL改为主从结构
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-228.html  [生成短网址]

已有 0/1950 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~