網(wǎng)上有很多關(guān)于pos機(jī)刷機(jī)模式,傳統(tǒng)模式轉(zhuǎn)GTID模式的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)刷機(jī)模式的問題,今天pos機(jī)之家(m.shineka.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來看下吧!
本文目錄一覽:
pos機(jī)刷機(jī)模式
關(guān)鍵字:mysql、復(fù)制、GTID
參考地址:https://www.sundayle.com/mysql-gtid-relication/
備注:本文包含mysql主從復(fù)制從傳統(tǒng)模式切換到GTID模式的操作步驟。
什么是GitdGTID (Global Transaction ID) 是對(duì)于一個(gè)已提交事務(wù)的編號(hào),并且是一個(gè)全局唯一的編號(hào)。
Gtid的作用:Gtid采用了新的復(fù)制協(xié)議,舊協(xié)議是,首先從服務(wù)器上在一個(gè)特定的偏移量位置連接到主服務(wù)器上一個(gè)給定的二進(jìn)制日志文件,然后主服務(wù)器再從給定的連接點(diǎn)開始發(fā)送所有的事件。 新協(xié)議有所不同,支持以全局統(tǒng)一事務(wù)ID (GTID)為基礎(chǔ)的復(fù)制。當(dāng)在主庫上提交事務(wù)或者被從庫應(yīng)用時(shí),可以定位和追蹤每一個(gè)事務(wù)。GTID復(fù)制是全部以事務(wù)為基礎(chǔ),使得檢查主從一致性變得非常簡單。如果所有主庫上提交的事務(wù)也同樣提交到從庫上,一致性就得到了保證。
工作原理:①當(dāng)一個(gè)事務(wù)在主庫端執(zhí)行并提交時(shí),產(chǎn)生GTID,一同記錄到binlog日志中。 ②binlog傳輸?shù)絪lave,并存儲(chǔ)到slave的relaylog后,讀取這個(gè)GTID的這個(gè)值設(shè)置gtid_next變量,即告訴Slave,下一個(gè)要執(zhí)行的GTID值。 ③sql線程從relay log中獲取GTID,然后對(duì)比slave端的binlog是否有該GTID。 ④如果有記錄,說明該GTID的事務(wù)已經(jīng)執(zhí)行,slave會(huì)忽略。 ⑤如果沒有記錄,slave就會(huì)執(zhí)行該GTID事務(wù),并記錄該GTID到自身的binlog, 在讀取執(zhí)行事務(wù)前會(huì)先檢查其他session持有該GTID,確保不被重復(fù)執(zhí)行。 ⑥在解析過程中會(huì)判斷是否有主鍵,如果沒有就用二級(jí)索引,如果沒有就用全部掃描。
模式切換,操作步驟:(1)、主庫,修改業(yè)務(wù)賬號(hào)密碼,禁止寫數(shù)據(jù)到主庫
[root@mayi ~]# mysql -u root -pMayi123@ -S /dev/shm/mysql.sock mysql> update mysql.user set authentication_string=password('Mayi123@') where user='mayi';mysql> flush privileges;
(2)、所有服務(wù)器
mysql> set global ENFORCE_GTID_CONSISTENCY=WARN; #使得所有事務(wù)都允許GTID違反一致性,檢查錯(cuò)誤日志確保無任何警告。mysql> set global ENFORCE_GTID_CONSISTENCY=ON; #使得所有事務(wù)都不能違反GTID一致性。mysql> set global gtid_mode=off_PERMISSIVE; #表明新的事務(wù)是匿名的,同時(shí)允許復(fù)制的事務(wù)是匿名的或GTID。mysql> set global gtid_mode=ON_PERMISSIVE; #表明新的事務(wù)是GTID,同時(shí)允許復(fù)制的事務(wù)是匿名的或GTID。
(3)、從庫
mysql> show global status like 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';
備注:在每個(gè)從庫上等待ONGOING_ANONYMOUS_TRANSACTION_COUNT值為0。狀態(tài)為0表示無事務(wù)需要處理
(4)、所有服務(wù)器
mysql> set global gtid_mode=ON; #開啟GTID
(5)、所有服務(wù)器的my.cnf,增加配置
#GTIDgtid-mode = onenforce_gtid_consistency = 1master-info-repository = TABLErelay-log-info-repository = TABLErelay_log_recovery = onsync-master-info = 1
參數(shù)說明:
gtid-mode = on #啟用gitd功能enforce-gtid-consistency = 1 #開啟強(qiáng)制GTID一致性master-info-repository = TABLE #記錄IO線程讀取已經(jīng)讀取到的master binlog位置,用于slave宕機(jī)后IO線程根據(jù)文件中的POS點(diǎn)重新拉取binlog日志relay-log-info-repository = TABLE #記錄SQL線程讀取Master binlog的位置,用于Slave 宕機(jī)后根據(jù)文件中記錄的pos點(diǎn)恢復(fù)Sql線程relay_log_recovery = on #從庫會(huì)自動(dòng)放棄所有未執(zhí)行的relay log,重新生成一個(gè)relay log,這樣在從庫中事務(wù)不會(huì)丟失sync-master-info = 1 #啟用確保無信息丟失;任何一個(gè)事務(wù)提交后, 將二進(jìn)制日志的文件名及事件位置記錄到文件中(6)、從庫:
mysql> stop slave;mysql> change master to MASTER_AUTO_POSITION=1; #開啟GTID事物mysql> start slave;mysql> show slave status\\G;
(7) 重啟從庫
[root@mayi ~]# systemctl restart mysqld
(8)、主庫,還原alc607wjyd密碼,根據(jù)apollo還原
[root@mayi ~]# mysql -u root -pMayi123@ -S /dev/shm/mysql.sock mysql> update mysql.user set authentication_string=password("dMrHN9N*6Qk") where user='mayi';mysql> flush privileges;
(9)、檢查主從同步
mysql> show slave status\\G; Retrieved_Gtid_Set: dd2feb85-e8ec-11ea-9827-4e66b74e2168:1-308 Executed_Gtid_Set: dd2feb85-e8ec-11ea-9827-4e66b74e2168:1-308
#備注,如果顯示以上信息表示已切換為gtid模式
其他:主庫查看狀態(tài)mysql> show master status;+-------------------------+----------+--------------+------------------+---------------------------------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+-------------------------+----------+--------------+------------------+---------------------------------------------+| mysql-master-bin.000090 | 11912550 | | | 3b8e89ca-fe36-11ea-bbba-66ef29902e35:1-2049 |+-------------------------+----------+--------------+------------------+---------------------------------------------+1 row in set (0.00 sec)mysql> show slave hosts;+-----------+------+------+-----------+--------------------------------------+| Server_id | Host | Port | Master_id | Slave_UUID |+-----------+------+------+-----------+--------------------------------------+| 3 | | 4980 | 1 | cc39d9b2-fe3d-11ea-8d2d-c205e58d09b7 || 2 | | 4980 | 1 | 046312b1-fe3a-11ea-a1f0-8a3384c1b93a |+-----------+------+------+-----------+--------------------------------------+2 rows in set (0.00 sec)mysql> show global variables like '%gtid%';+----------------------------------+---------------------------------------------+| Variable_name | Value |+----------------------------------+---------------------------------------------+| binlog_gtid_simple_recovery | ON || enforce_gtid_consistency | ON || gtid_executed | 3b8e89ca-fe36-11ea-bbba-66ef29902e35:1-2057 || gtid_executed_compression_period | 1000 || gtid_mode | ON || gtid_owned | || gtid_purged | || session_track_gtids | OFF |+----------------------------------+---------------------------------------------+8 rows in set (0.01 sec)其他常用命令
mysql> show binlog events\\G; #查詢第一個(gè)(最早)的binlog日志mysql> show binlog events in 'master-bin.000088'; #指定查詢 master-bin.000088 這個(gè)文件:mysql> show master logs; #查看master有哪些bin文件
注:本文章只用于技術(shù)記錄,不喜勿噴!感謝!
轉(zhuǎn)載請(qǐng)標(biāo)明出處!
以上就是關(guān)于pos機(jī)刷機(jī)模式,傳統(tǒng)模式轉(zhuǎn)GTID模式的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)刷機(jī)模式的知識(shí),希望能夠幫助到大家!
