GTID = source_id:transaction_id
source_id 表示執行事務的主庫
transaction_id 是一個序列號,表示這個主庫上執行的第 n 個事務。
server_uuid是系統自動生成的,用來的替代server_id,由於source_id是手工設置的,可能會有衝突
mysql-community-client-5.7.17-1.el6.x86_64.rpm
mysql-community-common-5.7.17-1.el6.x86_64.rpm
mysql-community-libs-5.7.17-1.el6.x86_64.rpm
mysql-community-libs-compat-5.7.17-1.el6.x86_64.rpm
mysql-community-server-5.7.17-1.el6.x86_64.rpm
yum install * -y
/etc/init.d/mysqld start
tail -n 3 /var/log/mysqld.log
建立root用戶mysql
mysql> alter user root@localhost identified by 'Westos+007';
vim /etc/my.cnflinux
23 server-id=3
24 gtid-mode=ON
25 enforce-gtid-consistency
26
27 log-bin=mysql-bin
28 binlog-do-db=test
29
30 log-slave-updates
mysql> grant replication slave on *.* to miao@'172.25.88.%' identified by 'Westos+007';
vim /etc/my.cnfsql
23 server-id=4
24 read-only
25
26 gtid-mode=ON
27 enforce-gtid-consistency
28
29 log-slave-updates #開啓從庫改變記錄在log-bin日誌的屬性,從庫也可能做其餘數據庫的主庫
將server33設置master,數據庫
mysql> change master to master_host='172.25.88.33',master_user='miao',master_password='Westos+007' ,master_auto_position=1;#自動定位pos
mysql> start slave;
檢驗是否爲GTID模式vim
1.不用手動定位pos和binlog的位置,添加參數master_auto_position=1便可
2.多線程併發複製,Slave-parallel-workers=0,1,2(禁用,單線程,兩個線程)
master數據庫有改動,好比DML,存入bin-log中,
備份到主數據庫中,網絡I/O纔去master給slave去取數據
因此經典模式下通常手動設置給slave備份,由於必定要保證主被數據同樣,自動容易出問題。
推薦使用mysql5.7
1.DDL(Definition)數據庫定義語言
DDL不須要commit.
CREATE,ALTER,DROP,TRUNCATE(快速清空sql表),COMMENT,RENAME
2.DML(Manipulation)數據操縱語言
DML須要commit.
SELECT,INSERT,UPDATE,DELETE,MERGE(更改),CALL,EXPLAIN PLAN,LOCK TABLE
3.DCL(Control )數據庫控制語言
GRANT 受權 REVOKE
4.TCL(Transaction Control Language)事務控制語言
SAVEPOINT 設置保存點,ROLLBACK 回滾,SET TRANSACTION
I/O:selinux,iptables,受權SQL:主從數據不一致