关于MYSQL主从同步

什么是MYSQL的主从复制

主从复制是指将一个服务器作为主服务器,所有的数据更新操作都在主服务器进行,并且将主服务器的数据同步到一个或多个从服务器,保证从服务器和主服务器的数据一致。

为什么需要主从复制高可用,主从复制实现了数据的热备份,可以有效避免单点故障导致的数据丢失。

高性能,可以用来实现读写分离,提高MYSQL服务的并发性能。

MYSQL主从复制原理主节点 binlog,主从复制的基础是主库记录数据库的所有变更记录到 binlog。binlog 是数据库服务器启动的那一刻起,保存所有修改数据库结构或内容的一个文件。

主节点 log dump 线程,当 binlog 有变动时,log dump 线程读取其内容并发送给从节点。

从节点 I/O线程接收 binlog 内容,并将其写入到 relay log 文件中。

从节点的SQL 线程读取 relay log 文件内容对数据更新进行重放,最终保证主从数据库的一致性。

注:主从节点使用 binglog 文件 + position 偏移量来定位主从同步的位置,从节点会保存其已接收到的偏移量,如果从节点发生宕机重启,则会自动从 position 的位置发起同步。

MYSQL主从复制的模式

1、异步模式(默认方式)

异步模式下,主节点执行完客户端提交的事务后立即提交事务并返回给客户端,并不关心

log dump 线程是否成功地将将此次事务写进 binglog 并且发送给从库。假如执行事务的主线程提交事务后,log dump

线程还未来得及写入 binlog,此时系统宕机,则会造成 binglog 中没有保存刚才提交的事务,造成主从数据不一致。

优点:异步模式下,主线程不用关系同步操作,性能最好。

缺点:可能导致主从数据的不一致。

2、半同步复制

半同步方式,当主库在执行完客户端提交的事务后不是立即提交事务,而是等待 log dump 线程将此次事务同步到binlog 发送给从库,并且至少一个从库成功保存到其relay log中,此时主库的才提交事务并返回客户端。

优点:相比于异步模式,半同步方式一定程度上保证了数据同步的可靠性。

缺点:增加了主库响应客户端的延时,延时至少为一个 TCP/IP 的往返时间,即 binglog 发送给从库至收到从库的响应时间。

3、全同步复制

全同步方式,当主库在执行完客户端提交的事务后,必须等待此次的binlog发送给从库,并且所有从库成功地执行完该事务后,主库才能返回客户端。其与半同步复制的区别如下:半同步下,主库等待binlog写入到从库的relay log即可返回,全同步方式下,必须等到从库执行事务成功。

半同步下,至少一个从库响应后主库即可返回客户端,全同步下必须等待所有的从库返回。

优点:对比半同步复制方式,全同步复制方式数据一致性的可靠性进一步提高

缺点:执行事务时,主库需要等待所有的从库执行成功后才能返回,所以会大大提高主库的响应时间。

MYSQL主从复制搭建

1、环境准备

操作系统:centos 7

MYSQL:mysql 8.0

主库地址:192.168.44.101

从库地址:192.168.44.102

Centos 下安装 mysql 的方式在此不再介绍

2、主库配置

(1)配置 my.cnf

(2)重启主库

systemctl restart mysqld

登录 mysql,执行show master status;

File:binglog 文件名,每次重启 mysql 服务都会生成一个新的 binlog 文件(序号递增),当文件大小超过限制(默认1G)时也会生产一个新的 binlog 文件。

Position:binlog 文件偏移量,等于binglog文件大小(字节数)

Binlog_Do_DB:要同步的数据库。不设置的话默认同步所有的数据库,包括 mysql 默认的数据库。

Binlog_Ignore_DB:不需要同步的数据库。

(3)处于数据安全的考虑,添加专门用于主从复制的用户,并仅授予其复制的权限创建用户

(4)授予其复制权限

(5)设置 replicarion_user 远程连接的密码验证方式

3、从库配置

(1)配置 my.cnf

重启从库 systemctl restart mysqld

(2)指定主库

master_log_file:要同步的 binlog 文件。

master_log_pos:从哪个位置开始同步。

一般情况下,我们需要保证主从库的初始数据一致(可以通过 dump 的方式手动同步),然后从这个一致状态为起始位置开始自动主从同步。

(3)开启从库

(4)查看从节点状态

Slave_IO_Running:从库的IO线程,用来接收master发送的binlog,并将其写入到中继日志relag log

Slave_SQL_Running:从库的SQL线程,用来从relay log中读取并执行binlog。

Slave_IO_Running、Slave_SQL_Running:这两个进程的状态需全部为 YES,只要有一个为 NO,则复制就会停止。

Master_Log_File:要同步的主库的binlog文件名。

Read_Master_Log_Pos:已同步的位置,即同步的 binlog 文件内的字节偏移量,该值会随着主从同步的进行而不断地增长。

Relay_Log_File:从库的中继日志文件,对接收到的主库的 binlog 进行缓冲。从库的SQL线程不断地从 relay log 中读取 binlog 并执行。

Relay_Log_Pos:relay log 中已读取的位置偏移量。

Seconds_Behind_Master: 主从同步延时, 值为 0 为正常情况,正值表示已经出现延迟,数字越大从库落后主库越多。

4、主从同步测试

在主库建表并插入数据

插入两条数据:

在从库查询

可以看到我们创建的 test 数据库 person 表和表中的数据都成功同步到了从库。作者:Stars

来源:掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

mysql 主从同步权限_MYSQL 主从同步详解相关推荐

  1. 如何查看mysql备份的情况_MySQL数据库备份详解(示例代码)

    原文:MySQL数据库备份详解 对于任何数据库来说,备份都是非常重要的 数据库复制不能取代备份的作用 比如我们由于误操作,在主数据库上删除了一些数据,由于主从复制的时间很短,在发现时,从数据库上的数据 ...

  2. mysql 长事务查询_MySQL长事务详解

    前言: 『入门MySQL』系列文章已经完结,今后我的文章还是会以MySQL为主,主要记录下近期工作及学习遇到的场景或者自己的感悟想法,可能后续的文章不是那么连贯,但还是希望大家多多支持.言归正传,本篇 ...

  3. mysql 用户管理表_Mysql—用户表详解(mysql.user)

    MySQL 数据库 Mysql-用户表详解(mysql.user) MySQL是一个多用户管理的数据库,可以为不同用户分配不同的权限,分为root用户和普通用户,root用户为超级管理员,拥有所有权限 ...

  4. mysql赋予权限routine_关于mysql create routine权限的代码实例详解

    下面小编就为大家带来一篇关于mysql create routine 权限的一些说明.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 1.如果用户有create rout ...

  5. mysql binlog sql统计_mysql的binlog详解

    binlog是mysql记录操作的二进制日志文件,有三种格式可选,但是老旧的SBR已经不适合现在大多数业务需求,所以大多数都建议用MBR和RBR,即mixed或row,而解析他的原因,几乎都只有一个, ...

  6. mysql as 后面字段_mysql 字段as详解及实例代码

    mysql 字段使用as 在mysql中,select查询可以使用AS关键字为查询的字段起一个别名,该别名用作表达式的列名,并且别名可以在GROUP BY,ORDER BY或HAVING等语句中使用. ...

  7. mysql 分号子查询_MySQL子查询详解

    子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从 MySQL 4.1 开始引入,在 SELECT 子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多个表 ...

  8. mysql week函数参数_MySQL week()函数详解

    一枚小产品的学习记录 在做sql练习题时了解到的新函数,做个简要的记录,因非技术人员(专业人士),可能会存在一定的局限性,若有不严谨的地方,请指正. 在日常的业务统计需求中,可能会有类似查询" ...

  9. mysql的联合索引_mysql联合索引详解

    联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引是key index (a,b,c). 可以支持a | a,b| ...

最新文章

  1. EJBCA使用之注册用户及创建证书
  2. Jest DoneCallback 数据类型的理解
  3. 抓取手机https_python爬虫入门02:教你通过 Fiddler 进行手机抓包
  4. RPC、RMI与MOM与组播 通信原理 .
  5. css设置 ul的内外边距,9月3日学习CSS选择器,背景设置,及内外边距知识总结
  6. oracle 取mac地址,java执行命令,得到Mac地址
  7. spring boot 源码分析(七) 事件机制 之 SpringApplicationEvent
  8. 部署一个Windows Server 2008 的只读域控制器
  9. 【Unity开发小技巧】Unity中文转拼音
  10. 仿淘宝中心轮播图 JS[代码+详细讲解+效果图]
  11. SSD1306 - OLED显示屏
  12. 网易实探瑞幸门店:消费者1.8折买到手软,店员累到流汗
  13. 语音模块:pyttsx变声项目
  14. 用两个小例子来解释单例模式中的“双重锁定”
  15. 怎样删除计算机中的来宾用户密码,win7怎么删除来宾账户_win7如何删除来宾账户...
  16. kafka 复制因子_选择正确的分区计数复制因子apache kafka
  17. STM32蜂鸣器andMIDI音乐
  18. Chrome模拟企业微信环境
  19. 微信支付url未注册问题解决方案
  20. SD 协议与协议栈源码分析(SD 内存卡)

热门文章

  1. 美云Java工资,格莱科技郑州实训中心展开模拟面试与就业指导会!
  2. Linux shell中使用sed 替换\n换行符 (多行边一行、一行变多行)
  3. php视频设置背景音乐,怎么给视频配上应景的背景音乐?视频添加背景音乐的方法|视频添加配乐的软件...
  4. switch hosts的使用
  5. 华为即将发布2019年业绩,2019年Q4业绩或出现下滑
  6. 使用MD5对项目文件进行加密
  7. Assets--unity资源映射
  8. 你连985都考不上,哪来的资格谈素质教育?
  9. 如何制作一个简单的短视频 app
  10. 数据分析笔记--matplotlib(二) 解决关于x,y轴不为数字的情形和中文显示实例