MySQL主从复制 - 基于GTID

环境

主从库IPLinux版本MySQL版本
主库101.201.xxx.11Linux version 3.10.0-514.6.2.el7.x86_645.7.22
从库101.201.xxx.22Linux version 3.10.0-693.11.1.el7.x86_645.6.35

步骤

1. 创建用户并授权

主库某个用户授予从库IP的主从复制的权限

grant replication slave on *.* to repl22@'101.201.xxx.22' identified by 'xxxx';
flush privileges;

2. 修改MySQL配置文件my.cnf

主库开启GTID复制模式

配置释义
server-id必须唯一,设置为IP尾段便于管理
binlog-format主从复制方式之一
gtid-mode开启GTID模式
enforce-gtid-consistency强制GTID的一致性,事务安全
lower_case_table_names表名不区分大小写
log-bin开启二进制日志
log_bin_index二进制的索引文件名
log-slave-updatesslave更新是否记入日志
replicate-do-db指定要复制的数据库 *
vim /etc/my.cnf

server-id = 31
binlog-format = ROW
gtid-mode = on
enforce-gtid-consistency = true
lower_case_table_names = 1
log-bin = mysql-bin
log_bin_index = /var/lib/mysql/mysql-bin.index
log-slave-updates = true
replicate-do-db = targetDB 

3. 重启MySQL服务,使配置生效

service mysqld restart

4.导出主库数据,导入从库

5. 查看主库的复制位置

show master status;
master_log_filemaster_log_pos
mysql-bin.0000031638

6.配置主从同步

从库MySQL安装目录下的bin目录中执行/也可以在NaviCat中执行

./mysql -uroot -p

mysql>use mysql; 
mysql>stop slave;
mysql>change master to
      master_host='xx.xx.xx.11',
      master_user='repl22',
      master_password='xxxx',
      master_log_file='mysql-bin.000003',
      master_log_pos=1638;
mysql>start slave;
mysql>show slave status\G;

主要观察下面几项即可
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
- Log_File Log_Posmaster的相同

有错可以看 last_Error中的描述

7.双主互相复制的my.cnf配置

#添加配置
auto_increment_increment = 10
auto_increment_offset = 1

auto-increment-offset、auto-increment-increment
两个参数用于在 双主(多主循环)互相备份。 因为每台数据库服务器都可能在同一个表中插入数据,如果表有一个自动增长的主键,那么就会在多服务器上出现主键冲突。 解决这个问题的办法就是让每个数据库的自增主键不连续。 上图说是, 我假设需要将来可能需要10台服务器做备份, 所以auto-increment-increment 设为10. 而 auto-increment-offset=1 表示这台服务器的序号。 从1开始, 不超过auto-increment-increment。这样做之后, 我在这台服务器上插入的第一个id就是 1, 第二行的id就是 11了, 而不是2.(同理,在第二台服务器上插入的第一个id就是2, 第二行就是12, 这个后面再介绍) 这样就不会出现主键冲突了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fool_dawei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值