记录?(^?^*) 1, 二进制文件和位置的复制; 2, 基于全局事物标识符 (GTID) 两种方式的主从复制:(测试环境为 CentOS 7.3)
一, 基于二进制日志文件(传统方式)
(1), 工作原理:
,Master 把数据库操作记录到 Binary log, 并发送给 Slave 的 I/O 线程;
,Slave 的 I/O 线程把接收到 Binary log 存储到本地的 Relay log;
,Slave 的 SQL 线程从 Relay log 读取信息并在本地更新;
(2), 具体配置
主数据库(Master,192.168.100.51):
1, 修改配置文件
- # vi /etc/my.cnf
- [mysqld]
- #该 id 需设置为唯一
- server-id = 1
- #开启二进制日志
- log-bin = bin-log
2, 创建复制账户
进入 MySQL
- create user 'slave' @ '%' identified by 'slavepass';
- grant replication slave on *.* to 'slave' @ '%';
3, 查看 Master 二进制文件名及位置
show master status;
从数据库(SLAVE,192.168.100.52):
1, 修改配置文件:
- # vi /etc/my.cnf
- [mysqld]
- #该 id 需设置为唯一
- server-id = 2
2, 配置连接
- # 与主数据库创建的复制账户对应
- MySQL> CHANGE MASTER TO
- MASTER_HOST='192.168.100.51',
- MASTER_USER='slave',
- MASTER_PASSWORD='slavepass',
- MASTER_LOG_FILE='和主服务器 file 对应',
- MASTER_LOG_POS='和主服务器 pos 对应';
3, 启动 SLAVE
MySQL> START SLAVE;
4, 查看 SLAVE 状态
MySQL> SHOW SLAVE STATUS\G;
查看 Slave SQL 线程和 IO 线程是否正常运行
(3), 测试
在主数据库创建数据库, 新增加表及数据, 查看从库是否更新即可.
二, 基于全局事务标识符复制(GTID)
(1), 原理
GTID 是 MySQL 5.6 引用的新特性, 在数据库事务提交时会在 binlog 中产生一个对应的 GTID, 主从
复制时, 从数据库会通过 GTID 来确定同步的位置, 不用在去找 File 和 Position. 为什么说是全局, 因为传统方式使用的 pos 在 master 和 slave 当中是不一样的. 而对于 GTID, 对于相同的事务在 master 和 slave 当中是一致的. 这样, 当一个 master 宕机后, slave1 提为 master 后, slave2 不用在去找 slave1 的 File 和 Position.
(2), 具体配置
主数据库(Master,192.168.100.51):
1, 修改配置文件
- # vi /etc/my.cnf
- [mysqld]
- #该 id 需设置为唯一
- gtid_mode = ON
- server-id = 1
- #开启二进制日志
- log-bin = bin-log
- enforce_gtid_consistency = ON
2, 创建复制账户
MySQL> grant replication slave on *.* to 'slave' @ '%' identified by 'slavepass';
从数据库(Master,192.168.100.52):
1, 修改配置文件
- # vi /etc/my.cnf
- [mysqld]
- gtid_mode = ON
- server_id = 2
- enforce_gtid_consistency = ON
2, 配置复制连接
- MySQL> CHANGE MASTER TO
- MASTER_HOST='192.168.100.51',
- MASTER_USER='slave',
- MASTER_PASSWORD='slavepass',
- MASTER_AUTO_POSITION = 1;
3, 启动 slave 并查看
- MySQL> start slave;
- MySQL> show slave status\G;
来源: http://www.bubuko.com/infodetail-2987887.html