千家信息网

MySQL的复制原理详解以及基础配置

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,MySQL 的日志类型二进制日志,事务日志,错误日志,一般查询日志,中继日志,慢查询日志二进制日志有以下内容数据目录,一般放置在mysql-bin.XXXXX编号)滚动:达到一个最大上限,flush
千家信息网最后更新 2026年11月01日MySQL的复制原理详解以及基础配置

MySQL 的日志类型

二进制日志,事务日志,错误日志,一般查询日志,中继日志,慢查询日志


二进制日志有以下内容

数据目录,一般放置在mysql-bin.XXXXX编号)

滚动:达到一个最大上限,flush logs,服务器重启

格式:statement

row

mixed

mysql-bin.index:二进制日志文件索引文件

mysql > SHOW MASTER STATUS查看主服务器的状态

mysql > SHOW BINARY LOGS 查看二进制日志

mysql > SHOW BINLOG EVENTS IN 'file'查看二进制日志中的事件


event中比较重要的选项:

timestamp时间戳

position,offset,operation,server-id


MySQL的隔离级别:

READ-UNCOMMITED

READ-COMMITED

如果使用mixed可能会发生数据不一致的情况

官方推荐使用row 的方法

REPEATABLE-READ

SERIALIZABLE



复制实现的功能

  1. 实现数据备份

  2. 如果有从服务器,主服务器发生故障之后,开通从服务器的写入功能,从而提供高可用的使用功能

  3. 异地容灾

  4. 分摊负载(scale out )主服务器:写 从服务器:读


复制方法有三种,分别是主从复制,半同步复制以及主主复制


首先介绍主从复制(使用较频繁)


在主服务器上,前端用户每次执行一次数据库发生修改或者引起修改的指令,都会在二进制日志中保存为一个事件,每保存一个事件,都会通过MySQL的3306端口发送给另外一个服务器,另外一台服务器将这个日志接收下来,然后先保存在本地的日志文件中,然后每次读取一个操作,然后将每一次修改执行到自己服务器上,这个过程叫做MySQL 的复制


master上存在一个二进制文件Binary log

slave 从主服务器上二进制文件复制而成的文件,叫做中继日志(relay log)

在主服务器上当有多个事务并发执行的时候,但是在写入二进制文件中的时候只能一条一条写,因此就需要一个暂时缓存的日志文件进行缓存,接着再向二进制文件中写入


其中在复制方法上同时又有同步复制以及异步复制的区分:


同步复制

从服务器不能比主服务器慢,前端发生的修改不能及时的得到slave 的响应

因此基本上是使用半同步复制的方法

半同步复制只是将数据同步发送给另一个节点,只能保证近的节点能够及时的响应


异步复制:一主多从,等待每一个服务器都同步完成的时候,


在多台从服务器进行复制的时候,可能会因为请求过多,主服务器难以有效的处理,因此就需要一个前端代理。

读写分离(rw-splitting):找一个MySQL的前端代理,工作在应用层,能够理解MySQL的语句,能够完成将不同的操作(读 写)定向到不同的服务器,分别分发给主服务器和从服务器,从而完成读写分离


多级复制:一个从服务器可能是一个主服务器的从服务器,也可能是另一个从服务器的从服务器

如果一个从服务器不记录中继日志,则不能将内容发送给下一级服务器,从服务器上不能进行写操作


接下来介绍双主模型:


双主模型的时候,配置几乎一样,但是要很注意server-id的重要性,防止出现复制环路的产生

无法实现减轻写操作,很容易出问题


例如

tutors:name,age,gender,tid

tom 10

jerry 30

A主机:UPDATE tutords SET name=jerry

B主机:UPDATE tutors SET age=30 WHERE name=tom

在最终的完成同步的时候,查询出来的结果并不认能够合并,会产生冲突


所以在生产环境中,一般不建议使用双主模型



读写分离可以由下面的组件实现:

mysql-proxy

amoeba


数据拆分之后实现路由:

cobar


补充:

master :slave

1-->N

slave :master

1-->N X

一个从服务器只能属于一个主服务器


MySQL 5.5之前的复制实现非常简单,

MySQL 5.6之后引用了 gtid,multi-thread replication(多线程复制)


配置MySQL复制基本步骤


主从复制

一.master

启用二进制日志

log-bin=master-bin

log-bi-index =master-bin.index

  1. 选择一个唯一的server-id

    server-id ={0-2^32}

  2. 创建具有复制权限的用户

REPLICATION SLAVE

REPLICATION CLIENT


二.slave

1.启用中继日志

relay-log =relay-log

log-bin-index=

2.选择一个唯一的server-id

server-id ={0-2^32}

3.连接至主服务器,并开始复制数据

mysql > CHANGER MASTER TO MASTER_HOST= ' ',MASTER_PORT= ' ',MASTER_LOG_FILE=' ',MASTER_LOG_FILE_POS=' ',MASTER_USER=' ' ,MASTER_PASSWORD=' ';

mysql >START SLAVE

mysql>START SLAVE SQL_Thread 开启SQL线程

mysql>START SLAVE IO_Thread开启IO线程


复制线程:

master:dump

slave :IO_Thread,SQL_Thread


read_only=YES

在从服务器上设定,对具有SUPER权限的用户不生效


sync-binlog = ON

在主服务器上设定,用于事务安全


半同步复制

在master 和slave 上各自安装一个google提供的插件

主服务器上


mysql>INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

mysql>SET GLOBAL rpl_semi_sync_master_enabled=1;

mysql>SET GLOBAL rpl_semi_syc_master_timeout=1000;


从服务器上

mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

mysql>SET GLOBAL rpl_semi_sync_slave_enables =1;

mysql_STOP SLAVE IO_Thread;START SLAVE IO_Thread;


双主复制

  1. 在两台服务器上各自建立一个具有复制权限的用户

  2. 修改配置文件

主服务器上

server-id =10

log-bin =mysql-bin

relay -log=relay -mysql

relay-log -index =relay -mysql.index

auto-increment-incremeng =2

auto-increment-offset =1


从服务器上

server-id=20

log-bin=mysql=bin

relay-log=relay-mysql

relay-log-index=relay-mysql.index

auto-increment-increment=2

auto-increment-offset =2


3.如果此时两台服务器均为新建立,且无其他写入操作,各服务器之需记录当前自己的二进制文件以及事件位置,以之作为另一台服务器复制起始位置即可


4.各服务器接下来指定对另一台服务器为自己的主服务器即可


A主机必须查看B的二进制文件及位置,并以之作为自己的复制起点

B主机必须查看A的二进制文件及位置,并以之作为自己的复制起点

两个服务器都能进行读写,即为双主模型









服务器 服务 日志 二进制 文件 同步 数据 时候 主机 事件 位置 方法 模型 用户 线程 中继 配置 主从 事务 前端 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技园 华服互联网科技靠谱吗 互联网科技公司的优势 金融科技 互联网金融 互联网科技公司电话 互联网科技股票 科技互联网公司logo 撒么互联网科技公司 深圳卡尔迅互联网科技有限公司怎么样 无锡溥仪互联网科技有限公司 华服互联网科技官网 移动互联网科技公司 无锡工业互联网科技有限公司 怎样加入科技互联网 广州百诚互联网科技有限公司官网 济南小医互联网科技有限公司招聘 互联网时代科技型公司的机会 第三届互联网大会安防黑科技 银川新华互联网科技学校招聘 利用互联网等科技手段 厦门中拓互联网络科技有限公司 易互联网科技有限公司 鑫亿盛互联网科技 睿民互联网科技 安控科技rtu产品工业互联网 南山科技园互联网公司有哪些 无锡工业互联网科技有限公司 山东大美朱楼互联网科技有限公司 湖北辰鑫科技互联网 唯美互联网科技
0