mysql主从复制的实现步骤


Posted in MySQL onOctober 24, 2021

mysql主从复制

本来是在做sharding的,可是做好之后发现数据库的主从复制还没有做,所以在配置好了之后做了些记录:

mysql主从复制的方式

mysql主从复制有两种方式:基于日志(binlog)、基于GTID(全局事物标示符)本博文用的是基于日志(binlog)的复制。

mysql主从复制的原理

1、 Master将数据记录到二进制日志中,也就是mysql配置文件my.cnf的log-bin指定的文件,这些记录叫做二进制日志事件。
2、 Slave有两个线程,一个I/O线程,一个SQL线程。I/O线程请求Master,将得到的binlog日志写到relay log(中继日志) 文件中。
3、 SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致。

mysql主从复制的实现步骤

mysql的主从配置的具体实现方式

1、 Master配置

(1) 修改mysql的my.cnf配置文件,这里比较坑爹的是我用的mysql版本没有my.cnf 配置文件,连my-default.cnf都没有,一般来说my.cnf在/etc目录下, my-default.cnf在/usr/local/mysql/support-files中。最终我在网上复制了一份my.cnf文件放在了/etc中(朋友们可以自己去网上找,有很多的)。
(2) my.cnf中需要修改的配置主要有开启日志功能,设置server_id保证其唯一性(不能跟从库一样),过滤需备份的数据库。

bash-3.2# vim /etc/my.cnf
# 设置server_id,不能重复,一般可以设置为主库的IP
server_id=81
# 备份过滤:需要备份的数据库,输出binlog
binlog-do-db=demo_ds_master
# 备份过滤:不需要备份的数据库,不输出
binlog-ignore-db=mysql
# 开启二进制日志,将主库数据记录到mysql-bin开头的日志文件中(可自定义)          
log-bin=mysql-bin
# 配置每个session的内存,在事物过程中用来存储二进制日志的缓存
binlog_cache_size=1M
# 主从复制的格式(mixed,statement,row 默认的是statement)
binlog_format=mixed
# 二进制日志自动删除/过期的天数,默认为0,不自动删除
expire_logs_days=7
# 用于跳过主从复制中遇到的所有错误或指定的错误类型,避免slave端的终端
# 1062:主键冲突(具体的参数可以去网上查询)
slave_skip_errors=1062

(3) 启动/重启Master数据库服务,登录数据库,创建数据同步用户,并授权

#授权这个机器可以备份主数据库的数据
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'root'@'192.168.31.60' identified by 'password';
#然后刷新权限
mysql> flush privileges;
#查看配置的主库信息
mysql> show master status;

mysql主从复制的实现步骤 

(4) 主库数据备份,确保主从库的数据一致性

# 临时锁住表,设置只读权限
mysql> flush tables with read lock;
# 备份数据库
bash-3.2# mysqldump -uroot -p --add-drop-table demo_ds_master_1 > /tmp/demo_ds_master_1.sql;
# 解锁表
mysql> unlock table;

2、 Slave配置

(1) 修改从数据库mysql的my.cnf配置文件,添加从数据库的中继日志配置

[root@develop etc]# vim my.cnf
# 设置server_id,不能重复,这里设置的是从库的IP
server-id=60
# 开启从数据库中继日志,将主数据库的binlog写到relay log中,中继日志以hehe-mysql-relay-bin开头(可自定义)
relay_log=hehe-mysql-relay-bin
# 设置从数据库为只读权限,防止主从数据不一致
read_only=1

(2) 如果从库需要作为另一个库的主库的话,需要加上Master上的配置信息,并且加上log_slave_updates=1将Master的binlog记录到自己的binlog日志中。

mysql主从复制的实现步骤 

(3) 重启从库数据库,同步主库数据

# 运行主数据库的备份数据库
[root@develop etc]# mysql -uroot -p demo_ds_master_1 < /tmp/demo_ds_master_1.sql
# 登录从数据库
[root@develop etc]# mysql -uroot -p
# 设置该从节点的主节点
mysql> change master to master_host='192.168.31.80', master_user='root',master_password='password',
master_port=3306,
master_log_file='mysql-bin.000001',
master_log_pos=154;
# 开启主从同步
mysql> start slave;
# 查看主从同步状态
mysql> show slave status\G;
# 查看主从线程状态
mysql> show processlist\G;

mysql主从复制的实现步骤 

图片中显示如下,说明主从复制已经配置好了,下面主库插入数据就可以实现从库自动复制主库数据了。

  • Slave_IO_State: Waiting for master to send event
  • Slave_IO_Running: Yes
  • Slave_SQL_Running: Yes

到此这篇关于mysql主从复制的实现步骤的文章就介绍到这了,更多相关mysql主从复制内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
jdbc使用PreparedStatement批量插入数据的方法
Apr 27 MySQL
MySQL update set 和 and的区别
May 08 MySQL
安装配置mysql及Navicat prenium的详细流程
Jun 10 MySQL
MySQL 亿级数据导入导出及迁移笔记
Jun 18 MySQL
MySQL中连接查询和子查询的问题
Sep 04 MySQL
面试被问select......for update会锁表还是锁行
Nov 11 MySQL
详解MySql中InnoDB存储引擎中的各种锁
Feb 12 MySQL
面试中老生常谈的MySQL问答集锦夯实基础
Mar 13 MySQL
详解Mysql事务并发(脏读、不可重复读、幻读)
Apr 29 MySQL
MySQL 数据表操作
May 04 MySQL
mysql 获取相邻数据项
May 11 MySQL
Mysql数据库group by原理详解
Jul 07 MySQL
记一次Mysql不走日期字段索引的原因小结
Oct 24 #MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 #MySQL
MySQL七种JOIN类型小结
MySQL中的引号和反引号的区别与用法详解
SQL实战演练之网上商城数据库商品类别数据操作
Oct 24 #MySQL
为什么MySQL 删除表数据 磁盘空间还一直被占用
mysql中int(3)和int(10)的数值范围是否相同
You might like
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
php中$this-&amp;gt;含义分析
2009/11/29 PHP
PHP错误抑制符(@)导致引用传参失败Bug的分析
2011/05/02 PHP
Php中用PDO查询Mysql来避免SQL注入风险的方法
2013/04/25 PHP
给WordPress的编辑后台添加提示框的代码实例分享
2015/12/25 PHP
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
jquery阻止后续事件只执行第一个事件
2014/07/24 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
js面向对象的写法
2016/02/19 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
vue.js指令v-model实现方法
2016/12/05 Javascript
Javascript计算二维数组重复值示例代码
2016/12/18 Javascript
jQuery zTree树插件简单使用教程
2017/01/10 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
2017/12/11 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
python3编写C/S网络程序实例教程
2014/08/25 Python
Python contextlib模块使用示例
2015/02/18 Python
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
Python使用functools实现注解同步方法
2018/02/06 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
django 在原有表格添加或删除字段的实例
2018/05/27 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
python解释器安装教程的方法步骤
2020/07/02 Python
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
2014/09/05 面试题
水务局局长岗位职责
2013/11/28 职场文书
业务主管岗位职责范本
2013/12/25 职场文书
青春无悔演讲稿
2014/05/08 职场文书
俞敏洪北大演讲稿
2014/05/22 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
2014年“四风”问题个人整改措施
2014/09/17 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
2016新年问候语大全
2015/11/11 职场文书
使用HTML+Css+transform实现3D导航栏的示例代码
2021/03/31 HTML / CSS
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang
uniapp开发打包多端应用完整方法指南
2022/12/24 Javascript