前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL复制全解析 Part 2 一步步搭建基于二进制文件位置的MySQL复制

MySQL复制全解析 Part 2 一步步搭建基于二进制文件位置的MySQL复制

作者头像
bsbforever
发布2020-08-18 15:40:10
3070
发布2020-08-18 15:40:10
举报

实验环境

此次实验的环境如下

  • MySQL 5.7.25
  • Redhat 6.10
  • 操作系统账号:mysql
  • 数据库复制账号:repl
  • 复制格式:基于行的复制

IP地址

主从关系

复制账号

复制格式

11.12.14.29

主库

repl

Row-Based

11.12.14.30

从库(半同步)

repl

Row-Based

这节我们的内容为MySQL的复制,MySQL复制有两种形式

  • 基于二进制日志文件位置
  • 基于GTID

这节为第一种基于二进制日志文件位置

1. 开启二进制日志功能

无论是使用哪种方式我们都需要启用二进制日志功能

如果未开启则需要在my.cnf文件中加入如下参数,需要重启数据库生效

主库

[mysqld] 
server-id = 11121429
binlog_format = row
log_bin = /datalog/mysql/binlog/mysql-bin.log
expire_logs_days = 14

从库

[mysqld] 
server-id = 11121430
binlog_format = row
log_bin = /datalog/mysql/binlog/mysql-bin.log
expire_logs_days = 14
read_only=1

我们需要保证server-id不一样,这里我们用IP地址命名

从库使用了read_only参数确保无其他写入

之后重启数据库

2. 查看UUID是否一致

需要注意的是如果从库是由主库克隆而来,这时的uuid是一样的,这样也会报错

该文件位于daadir的auto.cnf文件中

vim /data/mysql/data/auto.cnf

如果一样可删除该文件后重新启动数据库即可,这时会生成一个新的文件

3. 建立复制账号

接下来我们建立一个独立的用于复制的账号

主库和从库

mysql> CREATE USER 'repl'@'11.12.14.29' IDENTIFIED BY 'rpl'; 
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'11.12.14.29';
mysql> CREATE USER 'repl'@'11.12.14.30' IDENTIFIED BY 'rpl'; 
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'11.12.14.30';
mysql>flush privileges;

这里我们限制该账号只能从同步的两台服务器上连接

4. 备份主库

我们通过mysqldump备份主库的文件

主库

mysqldump -S /data/mysql/data/mysql.sock -usystem -p --all-databases --master-data=2 --set-gtid-purged=off > /tmp/dumpmaster.sql

5. 文件传输

接下来将主库的dump文件传到备份,之后更改备库的文件权限

主库

scp /tmp/dumpmaster.sql root@11.12.14.30:/tmp

从库

chown mysql:mysql /tmp/dumpmaster.sql

6. 备库导入数据

接下来我们将备份的数据导入到备份

mysql -S /data/mysql/data/mysql.sock -usystem -p </tmp/dumpmaster.sql

7.开始同步

接下来我们开启同步

首先我们查看dumpmaster.sql文件中master的信息

之后使用如下命令开启同步

mysql> change master to master_host='11.12.14.29', master_user='repl', master_password='rpl',master_log_file='mysql-bin.000001',master_log_pos= 10843699;


mysql > start slave;

8. 查看同步状态

使用如下命令查看同步是否正常

mysql>show slave status\G

主要关注如下几点

  • Slave_IO_Running需要为YES
  • Slave_SQL_Running需要为YES
  • Seconds_Behind_Master需要为0

9. 重启和重置复制

使用如下命令关闭重启

mysql>stop slave;
mysql>start slave;

我们可以独立的重启IO进程或者SQL进程

mysql>stop slave sql_thread;
mysql>stop slave io_thread;

mysql>start slave io_thread;
mysql>start slave sql_thread;

使用如下命令重置复制

mysql>reset slave;

该命令更多内容后面介绍

10. 参考资料

本专题内容翻译自官方文档并结合自己的环境

https://dev.mysql.com/doc/refman/5.7/en/replication.htm

觉得文章不错的欢迎关注,转发,收藏~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 宅必备 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实验环境
  • 1. 开启二进制日志功能
  • 2. 查看UUID是否一致
  • 3. 建立复制账号
  • 4. 备份主库
  • 5. 文件传输
  • 6. 备库导入数据
  • 7.开始同步
  • 8. 查看同步状态
  • 9. 重启和重置复制
  • 10. 参考资料
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档