MySQL主从复制

MySQL主从复制的方式

MySQL5.6开始主从复制有两种方式:基于日志(binlog),基于GTID(全局事务标识符)

MySQL主从复制(也称A/B复制)的原理

  1. Master将数据改变记录到二进制日志(binary log)中,也就是配置文件log-bin制定的文件,这些记录叫做二进制日志事件(binary log events);
  2. Slave通过I/O线程读取Master中的binary log events并写入到它的中继日志(relay log);
  3. Slave重做中继日志中的事件,把中继日志中的事件信息一条一条的在本地执行一次,完成数据在本地的存储,从而实现将改变反映到它自己的数据中数据重放)。

主从配置需要注意的点:

  1. 主从服务器操作系统版本和位数一致;
  2. Master和Slave数据库的版本要一致;
  3. Master和Slave数据库的数据要一致; 
  4. Master开启二进制日志,Master和Slave的server_id在局域网内必须唯一。

主从配置的简要步骤

1. Master上的配置

(1) 安装数据库;

(2) 修改数据库配置文件,指明 server_id,开启二进制日志(log-bin);

(3) 启动数据库,查看当前是哪个日志,position 号是多少;

(4) 登录数据库,授权数据复制用户(IP 地址为从机 IP 地址,如果是双向主从,这里的 还需要授权本机的 IP 地址,此时自己的 IP 地址就是从 IP 地址);

(5) 备份数据库(记得加锁和解锁);

(6) 传送备份数据到 Slave 上;

(7) 启动数据库;

以下步骤,为单向主从搭建成功,想搭建双向主从需要的步骤:

(1) 登录数据库,指定 Master 的地址、用户、密码等信息(此步仅双向主从时需要) ;

(2) 开启同步,查看状态; 

2、Slave 上的配置

(1) 安装数据库;

(2) 修改数据库配置文件,指明 server_id(如果是搭建双向主从的话,也要开启二进制 日志 log-bin) ;

(3) 启动数据库,还原备份;

(4) 查看当前是哪个日志,position 号是多少(单向主从此步不需要,双向主从需要);

(5) 指定 Master 的地址、用户、密码等信息;

(6) 开启同步,查看状态。 

 主从环境搭建

修改Master的配置文件/etc/my.cnf

 1 ## 在 [mysqld] 中增加以下配置项
 2 ## 设置 server_id,一般设置为 IP
 3 
 4 server_id=205
 5 
 6 ## 复制过滤:需要备份的数据库,输出 binlog
 7 
 8 #binlog-do-db=roncoo
 9 
10 ## 复制过滤:不需要备份的数据库,不输出(mysql 库一般不同步)
11 
12 binlog-ignore-db=mysql
13 
14 ## 开启二进制日志功能,可以随便取,最好有含义
15 
16 log-bin=edu-mysql-bin
17 
18 ## 为每个 session 分配的内存,在事务过程中用来存储二进制日志的缓存
19 
20 binlog_cache_size=1M
21 
22 ## 主从复制的格式(mixed,statement,row,默认格式是 statement) 
23 
24 binlog_format=mixed
25 
26 ## 二进制日志自动删除/过期的天数。默认值为 0,表示不自动删除。
27 
28 expire_logs_days=7
29 
30 ## 跳过主从复制中遇到的所有错误或指定类型的错误,避免 slave 端复制中断。
31 
32 ## 如:1062 错误是指一些主键重复,1032 错误是因为主从数据库数据不一致 
33 
34 slave_skip_errors=1062 

 

 

 

MySQL复制过程分为三步(基本原理):

  1. master将改变记录到二进制日志(binary log)中,这些记录过程叫做二进制日志时间,binary log events;
  2. slave将master的binary log events拷贝到它的中继日志(relay log);
  3. slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是异步的且串行化的。

复制的基本原则:

  1. 每个slave只有一个master;
  2. 每个slave只能有一个唯一的服务器ID;
  3. 每个master可以有多个salve。

复制的最大问题:延时

主机修改my.cnf配置文件:

  1. 【必须】主服务器唯一ID server-id=1
  2. 【必须】启用二进制日志 log-bin=自己本地的目录/mysql-bin
  3. 【可选】启用错误日志 log-err=
  4. 【可选】根目录 basedir=
  5. 【可选】临时目录 tmpdir=""
  6. 【可选】数据目录 datadir=""

转载于:https://www.cnblogs.com/billyCheng/p/11204911.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值