您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關MYSQL架構中該怎么主從GTID,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
GTID又叫全局事務ID(Global Transaction ID),是一個已提交事務的編號,并且是一個全局唯一的編號,Mysql 5.6版本之后在主從復制類型上新增了GTID復制。
GTID是由server_uuid和事務ID組成的。即GUID=server_id:transaction_id.server_uuid是在數據庫啟動過程中自動生成的。每臺機器的server_uuid不一樣,同一環境刪除重新搭建之后也不一樣。
工作原理:
1. master更新數據時,會在事務前產生GTID,一同記錄到binlog日志中。
2. slave端的I/O線程將變更的binlog,寫入到本地的relay log中。
3. sql線程從relay log中獲取GTID,然后對比slave端的binlog是否有記錄。
4. 如果有記錄,說明該GTID的事務已經執行,slave會忽略。
5. 如果沒有記錄,slave就會從relay log中執行該GTID的事務,并記錄到binlog.
環境配置
/ | 主服務器 | 從服務器 |
Ip | 192.168.31.79 | 192.168.31.188 |
hostname | mysql | mysql2 |
mysql-version | 5.7.23 | 5.7.23 |
Server-id | f99accbf-6690-11ea-a934-080027c1c1ff | a535303f-668e-11ea-8be9-080027b0e953 |
1.1參數配置
[root@mysql2 bin]# vi /etc/my.cnf
添加內容如下
gtid_mode=on
enforce_gtid_consistency=on
log_bin=on
binlog_format=row
server-id=79
[root@mysql2 bin]# service mysql stop
[root@mysql2 bin]# service mysql stop
1.2權限配置
[root@mysql bin]# mysql -uroot -p
mysql> grant replication slave on *.* to 'rep'@'192.168.31.%' identified by 'Oracle123';
mysql> flush privileges;
注:如果是新搭建的環境,可以不用做遷移步驟。
2.1 從庫參數配置
[root@mysql2 bin]# vi /etc/my.cnf
添加內容如下
gtid_mode=on
enforce_gtid_consistency=on
log_slave_updates=1
serve-id=188
2.2從庫權限配置
[root@mysql2 bin]# mysql -uroot -p
mysql> change master to master_host='192.168.31.79', master_user='rep',master_password='Oracle123',master_port=3306,master_auto_position=1;
mysql> start slave;
1)主庫
mysql> show master status;
2)從庫
mysql> show slave status\G;
4.驗證
1)主庫
mysql> create database test;
2)從庫
mysql> show databases;
注:
在mysql 5.7版本之后,gtid_executed數值會被持久化
mysql> use mysql
mysql> desc gtid_executed;
mysql> select * from gtid_executed;
在執行reset master中,會清空表內的數據。
mysql> show variables like '%gtid_executed%';
該參數用來控制gtid_executed表的壓縮。默認值是1000.意味著表壓縮在執行1000個
事務之后開始。
上述就是小編為大家分享的MYSQL架構中該怎么主從GTID了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。