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

MySQL主從同步中的server-id示例詳解

 更新時間:2019年09月07日 11:02:32   作者:趙帥強  
這篇文章主要給大家介紹了關(guān)于MySQL主從同步中server-id的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

當(dāng)我們搭建MySQL集群時,自然需要完成數(shù)據(jù)庫的主從同步來保證數(shù)據(jù)一致性。而主從同步的方式也分很多種,一主多從、鏈?zhǔn)街鲝?、多主多從,根?jù)你的需要來進行設(shè)置。但只要你需要主從同步,就一定要注意server-id的配置,否則會出現(xiàn)主從復(fù)制異常。

在控制數(shù)據(jù)庫數(shù)據(jù)復(fù)制和日志管理中,有兩個重要的配置:server-id和server-uuid,他們會影響二進制日志文件記錄和全局事務(wù)標(biāo)識。

server-id配置

當(dāng)你使用主從拓撲時,一定要對所有MySQL實例都分別指定一個獨特的互不相同的server-id。默認值為0,當(dāng)server-id=0時,對于主機來說依然會記錄二進制日志,但會拒絕所有的從機連接;對于從機來說則會拒絕連接其它實例。

MySQL實例的server-id是一個全局變量,可以直接查看:

mysql> show variables like '%server_id%';
+---------------+-----------+
| Variable_name | Value |
+---------------+-----------+
| server_id | 171562767 |
+---------------+-----------+
1 row in set (0.00 sec)

我們可以在線直接修改全局變量server-id,但不會立即生效,所以修改后記得重啟服務(wù)。而重啟后又會重新讀取系統(tǒng)配置文件配置,導(dǎo)致剛才的修改失效,因此建議修改配置文件后重啟服務(wù)而不是在線修改:

#my.cnf
[mysqld]
#replication
log-bin=mysql-bin
server-id=171562767
sync_binlog=1
binlog-ignore-db=mysql
binlog-ignore-db=information_schema

server-id用途

server-id用于標(biāo)識數(shù)據(jù)庫實例,防止在鏈?zhǔn)街鲝摹⒍嘀鞫鄰耐負渲袑?dǎo)致SQL語句的無限循環(huán):

  • 標(biāo)記binlog event的源實例
  • 過濾主庫binlog,當(dāng)發(fā)現(xiàn)server-id相同時,跳過該event執(zhí)行,避免無限循環(huán)執(zhí)行。
  • 如果設(shè)置了replicate-same-server-id=1,則執(zhí)行所有event,但有可能導(dǎo)致無限循環(huán)執(zhí)行SQL語句。

我們用兩個例子來說明server-id為什么不要重復(fù):

當(dāng)主庫和備庫server-id重復(fù)時

由于默認情況replicate-same-server-id=0,因此備庫會跳過所有主庫同步的數(shù)據(jù),導(dǎo)致主從數(shù)據(jù)的不一致。

當(dāng)兩個備庫server-id重復(fù)時

會導(dǎo)致從庫跟主庫的連接時斷時連,產(chǎn)生大量異常。根據(jù)MySQL的設(shè)計,主庫和從庫通過事件機制進行連接和同步,當(dāng)新的連接到來時,如果發(fā)現(xiàn)server-id相同,主庫會斷開之前的連接并重新注冊新連接。當(dāng)A庫連接上主庫時,此時B庫連接到來,會斷開A庫連接,A庫再進行重連,周而復(fù)始導(dǎo)致大量異常信息。

生成server-id的規(guī)則

既然server-id不能相同,而當(dāng)我們有10個實例時,怎么保證每個都不同呢?有幾種常用的方法:

  • 隨機數(shù)
  • 時間戳
  • IP地址+端口
  • 在管理中心集中分配,生成自增ID

上面的這些方法都可以,但是注意不要超過了最大值2^32-1,同時值最好>2。我采用的方法是IP地址后兩位+本機MySQL實例序號,但如果是通過docker來進行管理多實例時,這個怎么生成大家可以想下有沒有什么優(yōu)美的解決方案。

server-uuid配置

MySQL服務(wù)會自動創(chuàng)建并生成server-uuid配置:

  • 讀取${data_dir}/auto.cnf文件中的UUID
  • 如果不存在,自動創(chuàng)建文件和生成新的UUID并讀取
shell> cat ~/mysql/data/auto.cnf
[auto]
server-uuid=fd5d03bc-cfde-11e9-ae59-48d539355108

這個auto.cnf配置風(fēng)格類似于my.cnf,但這個文件只包含一個auto配置塊和一行server-uuid配置。它是自動創(chuàng)建的,因此不要修改它的內(nèi)容。

在主從拓撲中,主從可以知道互相的UUID,在主機上使用show slave hosts,在從機上使用show slave status查看Master_UUID字段。

server-uuid參數(shù)并不能取代server-id,他們有不同的作用。當(dāng)主從同步時如果主從實例的server-uuid相同會報錯退出,不過我們可以通過設(shè)置replicate-same-server-id=1來避免報錯(不推薦)。

參考資料

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • MySQL-Python安裝問題小記

    MySQL-Python安裝問題小記

    這篇文章主要介紹了MySQL-Python安裝問題小記,需要的朋友可以參考下
    2014-12-12
  • MySQL查詢?nèi)哂嗨饕臀词褂眠^的索引操作

    MySQL查詢?nèi)哂嗨饕臀词褂眠^的索引操作

    這篇文章主要介紹了MySQL查詢?nèi)哂嗨饕臀词褂眠^的索引操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • my.cnf(my.ini)重要參數(shù)優(yōu)化配置說明

    my.cnf(my.ini)重要參數(shù)優(yōu)化配置說明

    本文針對mysql不同存儲引擎,MyISAM與Innodb進行了講解如何進行my.cnf(my.ini)的參數(shù)優(yōu)化
    2018-03-03
  • MySQL悲觀鎖與樂觀鎖的實現(xiàn)方案

    MySQL悲觀鎖與樂觀鎖的實現(xiàn)方案

    我們知道Mysql并發(fā)事務(wù)會引起更新丟失問題,解決辦法是鎖,所以本文將對鎖(樂觀鎖、悲觀鎖)進行分析,這篇文章主要給大家介紹了關(guān)于MySQL悲觀鎖與樂觀鎖方案的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • windows 10下解壓版MySql安裝配置方法教程

    windows 10下解壓版MySql安裝配置方法教程

    這篇文章主要為大家詳細介紹了windows 10下解壓版MySql安裝配置方法教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • MySQL中int(n)后面的n到底代表的是什么意思

    MySQL中int(n)后面的n到底代表的是什么意思

    這篇文章主要介紹了MySQL中int(n)后面的n到底代表的是什么意思 ,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • MySQL中實現(xiàn)分頁操作的實戰(zhàn)指南

    MySQL中實現(xiàn)分頁操作的實戰(zhàn)指南

    MySQL的分頁似乎一直是個問題,下面這篇文章主要給大家介紹了關(guān)于MySQL中實現(xiàn)分頁操作的相關(guān)資料,文中通過圖文以及實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • MySQL進行g(shù)roup by字段返回大量異常結(jié)果的問題解決

    MySQL進行g(shù)roup by字段返回大量異常結(jié)果的問題解決

    本文主要介紹了MySQL進行g(shù)roup by字段返回大量異常結(jié)果的問題解決,文中通過代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • Linux環(huán)境下安裝MySQL數(shù)據(jù)庫

    Linux環(huán)境下安裝MySQL數(shù)據(jù)庫

    這篇文章介紹了Linux環(huán)境下安裝MySQL數(shù)據(jù)庫的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • MySQL將CSV文件快速導(dǎo)入MySQL中的實現(xiàn)

    MySQL將CSV文件快速導(dǎo)入MySQL中的實現(xiàn)

    本文主要介紹了MySQL將CSV文件快速導(dǎo)入MySQL中的實現(xiàn),主要包括navicat、workbench等軟件中的導(dǎo)入向?qū)謩訉?dǎo)入或使用load data infile命令導(dǎo)入,感興趣的可以了解一下
    2023-11-11

最新評論