关于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主从同步 1. 主从同步的定义 主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave).因为复 ...

  2. mysql主从同步端口_mysql主从同步设置

    在主机的my.cnf中的mysqld模块下添加 log-bin=mysql-bin server-id=1(随便,只要和slave不一样就行,一般可用IP末尾) 在从机的mysqld模块下添加serv ...

  3. mysql 主从同步 速度_MySQL主从同步延迟原因及解决办法

    MySQL主从同步延迟原因及解决办法 MySQL主从延迟原因以及解决方案: 谈到MySQL数据库主从同步延迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作(mysq ...

  4. mysql 主从同步权限_MYSQL 主从同步详解

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

  5. mysql 从服务器同步设置_mysql主从同步配置

    1.为什么要主从同步? 在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一.尤其是在大规模系统中,数据库集群已经成为必备的配置之一.集群的好处主要有:查询负载.数据库复制备份等.其中Ma ...

  6. mysql主从同步原理_mysql主从同步以及原理

    mysql主从复制介绍 当前的生产工作中,大多数应用的mysql主从同步都是异步的复制方式,即不是严格实时的数据同步. 实时和异步: 同步复制: 指的是客户端连接到MySQL主服务器写入一段数据,My ...

  7. mysql的主从同步问题_mysql主从同步问题梳理

    前言: MySQL主从复制故障机延迟原因有很多,之前详细介绍了Mysql主从复制的原理和部署过程,在mysql同步过程中会出现很多问题,导致数据同步异常.以下梳理了几种主从同步中可能存在的问题: 1) ...

  8. mysql 主从同步不一致_MySQL 主从同步延迟的原因及解决办法

    mysql 用主从同步的方法进行读写分离,减轻主服务器的压力的做法现在在业内做的非常普遍. 主从同步基本上能做到实时同步.我从别的网站借用了主从同步的原理图. 在配置好了, 主从同步以后, 主服务器会 ...

  9. mysql 主从同步 工具_mysql主从同步工具maatkit安装

    Maatkit是非常不错的mysql管理工具,网络评价非常不错.包含以下主要工具: 1.mk-table-checksum 检查主从表是否一致的有效工具 2.mk-table-sync 有效保证表一致 ...

最新文章

  1. 深入理解javascript的闭包
  2. (转)HIBERNATE与 MYBATIS的对比
  3. 【Android 插件化】VAHunt 检测插件化引擎的具体细节
  4. OpenCV梯度直方图HOG的实例(附完整代码)
  5. xfce4开始菜单中的小老鼠图标不见了
  6. 荆州水文水位查询_【心能源】天欣公司矿井水文自动观测系统投入使用
  7. 在laravel5.8中集成swoole组件----用协程实现的服务端和客户端(二)---静态文件如何部署...
  8. python json.dumps慢_python json.dumps中文乱码问题解决
  9. android屏幕亮度权限,安卓支持将屏幕亮度设为0的方法。
  10. mysql php 连接查询_php如何连接mysql并查询数据
  11. 【报告分享】2020年中国智慧城市发展研究报告.pdf(附下载链接)
  12. 向上造型和向下造型_动漫美少年漫画造型-仰视、俯视、情感表现
  13. 两个可用于浏览器兼容性测试的Firefox插件
  14. Mac好用的硬盘数据恢复软件推荐
  15. JAVA快递单号查询接口对接教程【快递鸟DEMO】
  16. 【Endnote X9服务器运行失败】
  17. 【Elasticsearch】 (搜索引擎如何做搜索推荐?) Elasticsearch中 使用 Suggesters 推荐查询
  18. 【UE4 附源工程】VR直升机模拟飞行与轰炸制作流程
  19. 服务器被挖矿入侵,进程 command为ld-linux-x86-64占用cpu很高,解决经历
  20. c语言零基础入门(完整版)

热门文章

  1. 区块链学习8:超级账本项目Fabric中的背书、背书节点、背书策略、背书签名
  2. 北风:利用微信红包封面怎么引流和变现(案例)
  3. 极空间家庭私有云,您的数字资产大管家
  4. 快速生成树(RSTP)
  5. 除了刺激战场和全军出击,最近还有哪些好玩的手游值得推荐?
  6. additiv.sh
  7. Java连载91-Map常用方法、Hashtable、SortedMap
  8. Android 玩机之路(刷第三方recovery twrp+面具Magisk)
  9. 2022 SWPUCTF Web+Crypto方向wp
  10. Arch Linux 安装