pos機刷機模式,傳統模式轉GTID模式

 新聞資訊2  |   2023-05-25 12:01  |  投稿人:pos機之家

網上有很多關于pos機刷機模式,傳統模式轉GTID模式的知識,也有很多人為大家解答關于pos機刷機模式的問題,今天pos機之家(www.www690aa.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、pos機刷機模式

pos機刷機模式

關鍵字:mysql、復制、GTID

參考地址:https://www.sundayle.com/mysql-gtid-relication/

備注:本文包含mysql主從復制從傳統模式切換到GTID模式的操作步驟。

什么是Gitd

GTID (Global Transaction ID) 是對于一個已提交事務的編號,并且是一個全局唯一的編號。

Gtid的作用:

Gtid采用了新的復制協議,舊協議是,首先從服務器上在一個特定的偏移量位置連接到主服務器上一個給定的二進制日志文件,然后主服務器再從給定的連接點開始發送所有的事件。 新協議有所不同,支持以全局統一事務ID (GTID)為基礎的復制。當在主庫上提交事務或者被從庫應用時,可以定位和追蹤每一個事務。GTID復制是全部以事務為基礎,使得檢查主從一致性變得非常簡單。如果所有主庫上提交的事務也同樣提交到從庫上,一致性就得到了保證。

工作原理:

①當一個事務在主庫端執行并提交時,產生GTID,一同記錄到binlog日志中。 ②binlog傳輸到slave,并存儲到slave的relaylog后,讀取這個GTID的這個值設置gtid_next變量,即告訴Slave,下一個要執行的GTID值。 ③sql線程從relay log中獲取GTID,然后對比slave端的binlog是否有該GTID。 ④如果有記錄,說明該GTID的事務已經執行,slave會忽略。 ⑤如果沒有記錄,slave就會執行該GTID事務,并記錄該GTID到自身的binlog, 在讀取執行事務前會先檢查其他session持有該GTID,確保不被重復執行。 ⑥在解析過程中會判斷是否有主鍵,如果沒有就用二級索引,如果沒有就用全部掃描。

模式切換,操作步驟:

(1)、主庫,修改業務賬號密碼,禁止寫數據到主庫

[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)、所有服務器

mysql> set global ENFORCE_GTID_CONSISTENCY=WARN;         #使得所有事務都允許GTID違反一致性,檢查錯誤日志確保無任何警告。mysql> set global ENFORCE_GTID_CONSISTENCY=ON;             #使得所有事務都不能違反GTID一致性。mysql> set global gtid_mode=off_PERMISSIVE;                         #表明新的事務是匿名的,同時允許復制的事務是匿名的或GTID。mysql> set global gtid_mode=ON_PERMISSIVE;                         #表明新的事務是GTID,同時允許復制的事務是匿名的或GTID。

(3)、從庫

mysql> show global status like 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';

備注:在每個從庫上等待ONGOING_ANONYMOUS_TRANSACTION_COUNT值為0。狀態為0表示無事務需要處理

(4)、所有服務器

mysql> set global gtid_mode=ON;                                           #開啟GTID

(5)、所有服務器的my.cnf,增加配置

#GTIDgtid-mode = onenforce_gtid_consistency = 1master-info-repository = TABLErelay-log-info-repository = TABLErelay_log_recovery = onsync-master-info = 1

參數說明:

gtid-mode = on #啟用gitd功能enforce-gtid-consistency = 1 #開啟強制GTID一致性master-info-repository = TABLE #記錄IO線程讀取已經讀取到的master binlog位置,用于slave宕機后IO線程根據文件中的POS點重新拉取binlog日志relay-log-info-repository = TABLE #記錄SQL線程讀取Master binlog的位置,用于Slave 宕機后根據文件中記錄的pos點恢復Sql線程relay_log_recovery = on #從庫會自動放棄所有未執行的relay log,重新生成一個relay log,這樣在從庫中事務不會丟失sync-master-info = 1 #啟用確保無信息丟失;任何一個事務提交后, 將二進制日志的文件名及事件位置記錄到文件中

(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密碼,根據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模式

其他:主庫查看狀態

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; #查詢第一個(最早)的binlog日志mysql> show binlog events in 'master-bin.000088'; #指定查詢 master-bin.000088 這個文件:mysql> show master logs; #查看master有哪些bin文件

注:本文章只用于技術記錄,不喜勿噴!感謝!

轉載請標明出處!

以上就是關于pos機刷機模式,傳統模式轉GTID模式的知識,后面我們會繼續為大家整理關于pos機刷機模式的知識,希望能夠幫助到大家!

轉發請帶上網址:http://www.www690aa.com/newsone/55321.html

你可能會喜歡:

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 babsan@163.com 舉報,一經查實,本站將立刻刪除。