亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Mysql主從GTID與binlog如何使用

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

Mysql主從GTID與binlog

GTID與binlog

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

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

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

區(qū)別如下

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

2. GTID可以避免主從復制中的數(shù)據(jù)沖突或數(shù)據(jù)丟失,因為每個事務都有唯一的標識符。而binlog需要在從庫上正確地應用更改操作,以確保數(shù)據(jù)一致性。

3. GTID相對于binlog來說更容易配置和管理,因為它不需要手動設(shè)置和維護binlog文件名和位置信息。

4. GTID還可以支持多主復制,即一個從庫可以連接到多個主庫進行復制,而binlog一般用于單個主庫和單個從庫之間的復制。

GTID工作原理

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

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

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

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

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

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

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   #強制gtid
[root@mysql-master ~]# systemctl restart mysqld   #重啟
主服務器創(chuàng)建用戶:
mysql> grant replication  slave,reload,super on *.*  to 'slave'@'%' identified by 'Qf@12345!';
#注:生產(chǎn)環(huán)境中密碼采用高級別的密碼,實際生產(chǎn)環(huán)境中將'%'換成slave的ip
mysql> flush privileges;
注意:如果不成功刪除以前的binlog日志
replication slave:擁有此權(quá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)用戶',     #主服務上面創(chuàng)建的用戶
master_password='授權(quán)密碼', 
master_auto_position=1;
-> ;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
mysql> start slave;   #啟動slave角色
Query OK, 0 rows affected (0.00 sec)

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

主從復制binlog日志方式

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

編輯主服務器的配置文件 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

重啟服務

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

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

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

在主服務器上面操作

mysql> show master status\G

在從服務上面操作:

my.cnf配置文件

[mysqld]
server-id=2
重啟服務
[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', #主服務器ip
MASTER_USER='replication', #主服務器用戶
MASTER_PASSWORD='password', #用戶密碼
MASTER_PORT=3306, #端口
MASTER_LOG_FILE='master2-bin.001', #binlog日志文件名稱
MASTER_LOG_POS=4, #日志位置

總結(jié)

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

相關(guān)文章

  • MySQL系列之二 多實例配置

    MySQL系列之二 多實例配置

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

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

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

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

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

    從mysql讀寫分離著手提升服務器性能

    這篇文章主要為大家介紹了從mysql讀寫分離著手提升服務器性能實現(xià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''

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

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

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

    KubeSphere部署mysql的詳細步驟

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

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

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

    MySQL初始密碼的查看方式

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

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

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

最新評論