記錄♪(^∇^*) 1、二進制文件和位置的複製;2、基於全局事物標識符(GTID)兩種方式的主從複製:(測試環境爲CentOS 7.3)
一、基於二進制日誌文件(傳統方式)
(1)、工作原理:
1、Master把數據庫操作記錄到Binary log,併發送給Slave的I/O線程;
2、Slave的I/O線程把接收到Binary log存儲到本地的Relay log;
3、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;