欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql主從GTID與binlog如何使用

 更新時(shí)間:2024年10月03日 13:43:25   作者:既然選擇了遠(yuǎn)方,我便風(fēng)雨兼程  
MySQL的GTID和binlog是實(shí)現(xiàn)高效數(shù)據(jù)復(fù)制和恢復(fù)的重要機(jī)制,GTID保證事務(wù)的唯一標(biāo)識(shí),避免復(fù)制沖突;binlog記錄數(shù)據(jù)變更,用于主從復(fù)制和數(shù)據(jù)恢復(fù),兩者配合,提高M(jìn)ySQL復(fù)制的準(zhǔn)確性和管理便捷性

Mysql主從GTID與binlog

GTID與binlog

MySQL GTID(Global Transaction Identifier)和binlog(二進(jìn)制日志)是用于搭建主從復(fù)制的兩種不同的機(jī)制。

GTID是MySQL 5.6版本引入的一種全局事務(wù)標(biāo)識(shí)符,用于跟蹤和標(biāo)識(shí)復(fù)制過程中的事務(wù)。每個(gè)事務(wù)都會(huì)被分配一個(gè)全局唯一的GTID,無論該事務(wù)在哪個(gè)數(shù)據(jù)庫實(shí)例上執(zhí)行。GTID能夠確保在主從復(fù)制中不會(huì)出現(xiàn)數(shù)據(jù)沖突或數(shù)據(jù)丟失的情況。使用GTID進(jìn)行主從復(fù)制配置時(shí),主庫將事務(wù)的GTID信息寫入binlog,并將binlog傳輸給從庫,從庫使用GTID來確定是否已經(jīng)復(fù)制了某個(gè)事務(wù),從而保持主從數(shù)據(jù)的一致性。

binlog是MySQL的二進(jìn)制日志,用于記錄數(shù)據(jù)庫的所有更改操作。它是一種基于文件的日志,可以用于恢復(fù)數(shù)據(jù)庫到特定時(shí)間點(diǎn)或?qū)⒏膽?yīng)用到其他數(shù)據(jù)庫實(shí)例。在主從復(fù)制中,主庫將更改操作寫入binlog,并將binlog傳輸給從庫,從庫根據(jù)binlog中的內(nèi)容來重放主庫上的更改操作,從而實(shí)現(xiàn)數(shù)據(jù)復(fù)制。

區(qū)別如下

1. GTID是基于事務(wù)的標(biāo)識(shí)符,而binlog是基于更改操作的日志。GTID可以確保事務(wù)在主從之間的有序復(fù)制,而binlog只記錄更改操作的內(nèi)容。

2. GTID可以避免主從復(fù)制中的數(shù)據(jù)沖突或數(shù)據(jù)丟失,因?yàn)槊總€(gè)事務(wù)都有唯一的標(biāo)識(shí)符。而binlog需要在從庫上正確地應(yīng)用更改操作,以確保數(shù)據(jù)一致性。

3. GTID相對于binlog來說更容易配置和管理,因?yàn)樗恍枰謩?dòng)設(shè)置和維護(hù)binlog文件名和位置信息。

4. GTID還可以支持多主復(fù)制,即一個(gè)從庫可以連接到多個(gè)主庫進(jìn)行復(fù)制,而binlog一般用于單個(gè)主庫和單個(gè)從庫之間的復(fù)制。

GTID工作原理

1、master更新數(shù)據(jù)時(shí),會(huì)在事務(wù)前產(chǎn)生GTID,一同記錄到binlog日志中。

2、slave端的i/o 線程將變更的binlog,寫入到本地的relay log中。

3、sql線程從relay log中獲取GTID,然后對比slave端的binlog是否有記錄。

4、如果有記錄,說明該GTID的事務(wù)已經(jīng)執(zhí)行,slave會(huì)忽略。

5、如果沒有記錄,slave就會(huì)從relay log中執(zhí)行該GTID的事務(wù),并記錄到binlog

1.準(zhǔn)備環(huán)境兩臺(tái)機(jī)器,關(guān)閉防火墻和selinux。---兩臺(tái)機(jī)器環(huán)境必須一致。時(shí)間也得一致

2.解析/etc/hosts
192.168.246.129  mysql-master
192.168.246.128  mysql-slave

master操作:
[root@mysql-master ~]# vim /etc/my.cnf   #在[mysqld]下添加如下內(nèi)容
server-id=1   #定義server id master必寫 
log-bin = mylog #開啟binlog日志,master比寫
gtid_mode = ON    #開啟gtid
enforce_gtid_consistency=1   #強(qiáng)制gtid
[root@mysql-master ~]# systemctl restart mysqld   #重啟
主服務(wù)器創(chuàng)建用戶:
mysql> grant replication  slave,reload,super on *.*  to 'slave'@'%' identified by 'Qf@12345!';
#注:生產(chǎn)環(huán)境中密碼采用高級(jí)別的密碼,實(shí)際生產(chǎn)環(huán)境中將'%'換成slave的ip
mysql> flush privileges;
注意:如果不成功刪除以前的binlog日志
replication slave:擁有此權(quán)限可以查看從服務(wù)器,從主服務(wù)器讀取二進(jìn)制日志。
super權(quán)限:允許用戶使用修改全局變量的SET語句以及CHANGE  MASTER語句
reload權(quán)限:必須擁有reload權(quán)限,才可以執(zhí)行flush  [tables | logs | privileges]
slave操作:
[root@mysql-slave ~]# vim /etc/my.cnf  #添加如下配置
server-id=2
gtid_mode = ON
enforce_gtid_consistency=1
master-info-repository=TABLE
relay-log-info-repository=TABLE
[root@mysql-slave ~]# systemctl restart mysqld
[root@mysql-slave ~]# mysql -uroot -p'qf123'   #登陸mysql
mysql> \e
change master to
master_host='master1',      #主ip 地址  最好用域名
master_user='授權(quán)用戶',     #主服務(wù)上面創(chuàng)建的用戶
master_password='授權(quán)密碼', 
master_auto_position=1;
-> ;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
mysql> start slave;   #啟動(dòng)slave角色
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G  #查看狀態(tài),驗(yàn)證sql和IO是不是yes。

主從復(fù)制binlog日志方式

1、在主服務(wù)器上,必須啟用二進(jìn)制日志記錄并配置唯一的服務(wù)器ID。需要重啟Mysql服務(wù)。

編輯主服務(wù)器的配置文件 my.cnf,添加如下內(nèi)容

添加配置
[mysqld]
log-bin=/var/log/mysql/mysql-bin
server-id=1

創(chuàng)建日志目錄并賦予權(quán)限

[root@mysql-master ~]# mkdir /var/log/mysql
[root@mysql-master ~]# chown -R mysql.mysql /var/log/mysql

重啟服務(wù)

[root@mysql-master ~]# systemctl restart mysqld

創(chuàng)建主從同步的用戶:

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' identified by 'Qf@12345!';
mysql> flush privileges;

在主服務(wù)器上面操作

mysql> show master status\G

在從服務(wù)上面操作:

my.cnf配置文件

[mysqld]
server-id=2
重啟服務(wù)
[root@mysql-slave ~]# systemctl restart mysqld
設(shè)置密碼
[root@mysql-slave ~]# grep pass /var/log/mysqld.log
[root@mysql-slave ~]# mysqladmin -uroot -p'ofeUcgA)4/Yg' password 'Qf@12345!'
登錄mysql
[root@mysql-slave ~]# mysql -uroot -p'Qf@12345!'
mysql> \e
CHANGE MASTER TO
MASTER_HOST='mysql-master',
MASTER_USER='repl',
MASTER_PASSWORD='Qf@12345!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=849;
    -> ;
mysql> start slave;
mysql> show slave status\G

參數(shù)解釋:

CHANGE MASTER TO
MASTER_HOST='master2.example.com', #主服務(wù)器ip
MASTER_USER='replication', #主服務(wù)器用戶
MASTER_PASSWORD='password', #用戶密碼
MASTER_PORT=3306, #端口
MASTER_LOG_FILE='master2-bin.001', #binlog日志文件名稱
MASTER_LOG_POS=4, #日志位置

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL系列之二 多實(shí)例配置

    MySQL系列之二 多實(shí)例配置

    MySQL多實(shí)例就是在一臺(tái)服務(wù)器上同時(shí)開啟多個(gè)不同的服務(wù)端口,本文就介紹一下MySQL多實(shí)例配置,感興趣的可以了解一下
    2021-07-07
  • 草稿整理后mysql兩個(gè)數(shù)據(jù)庫結(jié)構(gòu)對比

    草稿整理后mysql兩個(gè)數(shù)據(jù)庫結(jié)構(gòu)對比

    這篇文章主要為大家詳細(xì)介紹了mysql兩個(gè)數(shù)據(jù)庫結(jié)構(gòu)對比結(jié)果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 基于Mysql的Sequence實(shí)現(xiàn)方法

    基于Mysql的Sequence實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄贛ysql的Sequence實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • 從mysql讀寫分離著手提升服務(wù)器性能

    從mysql讀寫分離著手提升服務(wù)器性能

    這篇文章主要為大家介紹了從mysql讀寫分離著手提升服務(wù)器性能實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 解決MYSQL出現(xiàn)Can''t create/write to file ''/tmp/#sql_5c0_0.MYD''的問題

    解決MYSQL出現(xiàn)Can''t create/write to file ''/tmp/#sql_5c0_0.MYD''

    今天在配置服務(wù)器的時(shí)候提示這個(gè)問題Can't create/write to file,原來是php.ini中設(shè)置的tmp目錄不存在
    2013-07-07
  • mysql大批量插入數(shù)據(jù)的正確解決方法

    mysql大批量插入數(shù)據(jù)的正確解決方法

    這篇文章主要介紹了mysql大批量插入數(shù)據(jù)的正確做法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • KubeSphere部署mysql的詳細(xì)步驟

    KubeSphere部署mysql的詳細(xì)步驟

    本文介紹了在KubeSphere中部署Mysql的詳細(xì)步驟,包括創(chuàng)建mysql配置、pvc掛載、工作負(fù)載、服務(wù),并測試數(shù)據(jù)庫連接,步驟詳盡,包括yaml配置和環(huán)境變量設(shè)置,特別強(qiáng)調(diào)了路徑一致性和外部訪問設(shè)置,還提到了使用NodePort模式解決自定義域名連接問題
    2024-10-10
  • MYSQL讀寫性能測試的簡單記錄

    MYSQL讀寫性能測試的簡單記錄

    本文主要介紹了MYSQL讀寫性能測試的簡單記錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • MySQL初始密碼的查看方式

    MySQL初始密碼的查看方式

    這篇文章主要介紹了MySQL初始密碼的查看方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • mysql?亂碼字符?latin1?characters?轉(zhuǎn)換為?UTF8詳情

    mysql?亂碼字符?latin1?characters?轉(zhuǎn)換為?UTF8詳情

    這篇文章主要介紹了mysql?亂碼字符?latin1?characters?轉(zhuǎn)換為?UTF8詳情,文章基于MySQL的相關(guān)資料展開詳細(xì)內(nèi)容。需要的小伙伴可以參考一下
    2022-04-04

最新評(píng)論