当前位置: 首页 > news >正文

【MySQL】MySQL 复制

MySQL复制介绍

MySQL复制允许将主实例(master)上的数据同步到一个或多个从实例(slave)上,默认情况下复制是异步进行的,从库也不需要一直连接到主库来同步数据。

MySQL复制的数据粒度可以是主实例上所有的数据库,也可以是指定的一个或多个数据库,也可以是一个数据库里的指定的表。

MySQL复制所带来的优势在于:

拓展能力: 通过复制功能可以将MySQL的性能压力分担到一个或多个slave上。这要求所有的写操作和修改操作都必须在Master上完成,而读操作可以被分配到一个或多个slave上。将读写分离到不同服务器执行之后,MySQL的读写性能得到提升。

数据库备份:由于从实例是同步主实例的数据,所以可以将备份作业部署到从库。

数据分析和报表:同样,一些数据分析和报表的实现可以在从实例执行,以减少对主库的性能影响。

容灾能力:可以在物理距离较远的另一个数据中心建立一个slave,保证在主实例所在地区遭遇灾难时,在另一个数据中心能快速恢复。


MySQL复制有两种方法:

传统方式:基于主库的bin-log将日志事件和事件位置复制到从库,从库再加以应用来达到主从同步的目的

GTID方式:global transaction identifiers是基于事务来复制数据,因此也就不依赖日志文件,同时又能更好的保证主从库数据一致性


MySQL复制有多种类型:

异步复制:一个主库,一个或多个从库,数据异步同步到从库

同步复制:在MySQL Cluster中特有的复制方式

半同步复制:在异步复制的基础上,确保任何一个主库上的事务在提交之前至少有一个从库已经收到该事务并日志记录下来

延迟复制:在异步复制的基础上,人为设定主库和从库的数据同步延迟时间,即保证数据延迟至少是这个参数


复制的工作原理是数据库修改事件记录到bin log中并传递到slave,然后slave在本地还原的过程。而事件记录到bin log的格式会有所不同。


MySQL复制有三种核心格式:

基于语句的复制(statement based replication):基于主库将SQL语句写入到 bin log中完成复制

基于行数据的复制(row based replication):基于主库将每一个行数据变化的信息作为事件写入到bin log中完成日志

混合复制(mixed based replication):上述两者的结合。默认情况下优先使用基于语句的复制,只有当部分语句如果基于语句复制不安全的情况下才会自动切换为基于行数据的复制



参考

MySQL 5.7 主从复制

https://www.cnblogs.com/backz/p/15426071.html



喜欢的朋友记得点赞、收藏、关注哦!!!

相关文章:

  • Git 批量合并 Commit 并且保留之前的 Commit 快速实现的思路
  • 【Jenkins】Pipeline流水线语法解析全集 -- 脚本式流水线、groovy语法
  • 数字后端培训实战项目六大典型后端实现案例
  • DeepSeek:构筑大数据平台底座的最优解
  • Unity3D 刚体动力学(Rigidbody Dynamics)详解
  • LIUNX学习-线程
  • 【3DMAX室内设计】2D转3D平面图插件2Dto3D使用方法
  • TomcatServlet
  • MyBatis-Plus 自定义 SQL 和复杂查询
  • 迭代器模式:遍历集合的艺术
  • flink集成tidb cdc
  • Redis - 解读三种方案实现Redis跨机房数据同步
  • QT-绘画事件
  • AutoGen学习笔记系列(七)Tutorial - Managing State
  • JAVA编程【jvm垃圾回收的差异】
  • PHP之特性
  • LLM-ESR实验代码讲解
  • 蓝桥与力扣刷题(蓝桥 旋转)
  • 学习笔记-AMD CPU 命名
  • 分库分表 MyBatis的拦截器(Interceptor)在 SQL 执行前动态修改表名
  • 万网空间上传网站/百度问一问免费咨询
  • 礼物说网站模板/友情链接模板
  • 福建省网站建设方案书/给企业做网站的公司
  • 电子书网站模板/百度有什么办法刷排名
  • 三亚网站建设/深圳百度推广代理
  • 创新的商城网站建设/百度指数官网查询入口