婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > MySQL如何生成唯一的server-id

MySQL如何生成唯一的server-id

熱門標(biāo)簽:福建外呼系統(tǒng)定制化 悟空科技電話機(jī)器人 騰訊地圖標(biāo)注提升 電銷卡外呼系統(tǒng)供應(yīng)商 銅陵防封電銷卡 怎么在地圖標(biāo)注位置生成圖片 真人語(yǔ)音電話機(jī)器人 400電話可以免費(fèi)申請(qǐng)嗎 美國(guó)反騷擾電話機(jī)器人

前言

我們都知道MySQL用server-id來唯一的標(biāo)識(shí)某個(gè)數(shù)據(jù)庫(kù)實(shí)例,并在鏈?zhǔn)交螂p主復(fù)制結(jié)構(gòu)中用它來避免sql語(yǔ)句的無限循環(huán)。這篇文章分享下我對(duì)server-id的理解,然后比較和權(quán)衡生成唯一server-id的幾種方式。

server_id的用途

簡(jiǎn)單說來,server_id有兩個(gè)用途:

1. 用來標(biāo)記binlog event的源產(chǎn)地,就是SQL語(yǔ)句最開始源自于哪里。

2. 用于IO_thread對(duì)主庫(kù)binlog的過濾。如果沒有設(shè)置replicate-same-server-id=1,那么當(dāng)從庫(kù)的io_thread發(fā)現(xiàn)event的源與自己的server-id相同時(shí),就會(huì)跳過該event,不把該event寫入到relay log中。從庫(kù)的sql_thread自然就不會(huì)執(zhí)行該event。這在鏈?zhǔn)交螂p主結(jié)構(gòu)中可以避免sql語(yǔ)句的無限循環(huán)。

注意:相同server-id的event在io_thread這一層就過濾了;而對(duì)于replicate-(do|ignore)-等規(guī)則,則是在sql_thread這一層過濾的。io_thread和sql_thread都有過濾的功能。

server_id為何不能重復(fù)

在同一個(gè)集群中,server-id一旦重復(fù),可能引發(fā)一些詭異問題。

看看下面兩種情況:

圖1:主庫(kù)與從庫(kù)的server-id不同,但是兩個(gè)或多個(gè)從庫(kù)的server-id相同

這種情況下復(fù)制會(huì)左右搖擺。當(dāng)兩個(gè)從庫(kù)的server-id相同時(shí),如果從庫(kù)1已經(jīng)連接上主庫(kù),此時(shí)從庫(kù)2也需要連接到主庫(kù),發(fā)現(xiàn)之前有server-id相同的連接,就會(huì)先注銷該連接,然后重新注冊(cè)。

參考下面的代碼片段:

int register_slave(THD* thd, uchar* packet, uint packet_length)
{
 int res;
 SLAVE_INFO *si;
...
 if (!(si->master_id= uint4korr(p)))
 si->master_id= server_id;
 si->thd= thd;
 pthread_mutex_lock(LOCK_slave_list);
/* 先注銷相同server-id的連接*/
 unregister_slave(thd,0,0); 
/* 重新注冊(cè)*/
 res= my_hash_insert(slave_list, (uchar*) si);
 pthread_mutex_unlock(LOCK_slave_list);
 return res;
...
}

兩臺(tái)從庫(kù)不停的注冊(cè),不停的注銷,會(huì)產(chǎn)生很多relay log文件,查看從庫(kù)狀態(tài)會(huì)看到relay log文件名不停改變,從庫(kù)的復(fù)制狀態(tài)一會(huì)是yes一會(huì)是正在連接中。

圖2:鏈?zhǔn)交螂p主結(jié)構(gòu)中,主庫(kù)與從庫(kù)的server-id相同

從庫(kù)1同時(shí)又是relay數(shù)據(jù)庫(kù),它能正確同步,然后把relay-log內(nèi)容重寫到自己的binlog中。當(dāng)server-id為100的從庫(kù)2 io線程獲取binlog時(shí),發(fā)現(xiàn)所有內(nèi)容都是源自于自己,就會(huì)丟棄這些event。因此從庫(kù)2無法正確同步主庫(kù)的數(shù)據(jù)。只有直接寫relay server的event能正確同步到從庫(kù)2。

上面兩種情況可以看到,在同一個(gè)replication set中,保持server-id的唯一性非常重要。

server_id的動(dòng)態(tài)修改

無意中發(fā)現(xiàn)server-id竟然是可以動(dòng)態(tài)修改的,可別高興的太早。好處是,上面圖1的情況下,直接修改其中一個(gè)從庫(kù)的server-id就可以解決server-id沖突的問題。壞處很隱蔽,如下圖的結(jié)構(gòu):

現(xiàn)在假設(shè)active-master因?yàn)槟撤N原因與passive-master的同步斷開后,passive-master上進(jìn)行了一些ddl變更。然后某dba突發(fā)奇想把passive-master的server-id修改為400。當(dāng)雙master的復(fù)制啟動(dòng)后,那些之前在passive-master上執(zhí)行的server-id為200的ddl變更,會(huì)從此陷入死循環(huán)。如果是alter table t engine=innodb,它會(huì)一直不停,可能你會(huì)發(fā)現(xiàn)。但是像update a=a+1;這樣的sql,你很難發(fā)現(xiàn)。當(dāng)然這種場(chǎng)景只是我的杜撰,這兒有個(gè)更真實(shí)的例子主備備的兩個(gè)備機(jī)轉(zhuǎn)為雙master時(shí)出現(xiàn)的詭異slave lag問題:http://hatemysql.com/2010/10/15/主備備的兩個(gè)備機(jī)轉(zhuǎn)為雙master時(shí)出現(xiàn)的詭異slave-lag問題/。

舉這兩個(gè)例子只是想說明修改server-id有點(diǎn)危險(xiǎn),最好不要去修改,那么能一步到位生成它嗎?

生成唯一的server_id

常用的方法有如下幾種:

1. 采用隨機(jī)數(shù)

mysql的server-id是4字節(jié)整數(shù),范圍從0-4294967295,因此采用該范圍內(nèi)的隨機(jī)數(shù)來作為server-id產(chǎn)生沖突的可能性是非常小的。

2. 采用時(shí)間戳

直接用date +%s來生成server-id。一天86400秒來計(jì)算,往后計(jì)算50年,最大的server-id也才使用到86400*365*50,完全在server-id范圍內(nèi)。

3. 采用ip地址+端口

這是我們經(jīng)常采用的方法。例如ip為192.168.122.23,端口為3309,那么server-id可以寫為122233309。產(chǎn)生沖突的可能性比較小:遇到*.*.122.23 或者*.*.12.223,而且搭建了同一個(gè)replication set的3309才會(huì)出現(xiàn)。

4. 采用集中的發(fā)號(hào)器

在管理服務(wù)器上采用自增的id來統(tǒng)一分配server-id。這可以保證不沖突,但是需要維護(hù)中心節(jié)點(diǎn)。

5. 分開管理每個(gè)replication set

在每個(gè)replication set中為mysql庫(kù)增加一個(gè)管理表,保證每個(gè)從庫(kù)的server-id不沖突。

上面的幾種方法都不賴,但是:

  • 方法4加了維護(hù)負(fù)擔(dān),而且開發(fā)環(huán)境、測(cè)試環(huán)境、線上環(huán)境都維護(hù)一套發(fā)號(hào)器的話,有點(diǎn)麻煩,混在一起又可能遇到網(wǎng)段隔離的風(fēng)險(xiǎn),還有發(fā)號(hào)器數(shù)據(jù)庫(kù)權(quán)限的問題難于控制。所以不推薦。
  • 方法5實(shí)現(xiàn)了自治,但是管理成本有點(diǎn)高。從庫(kù)要能夠?qū)懼鲙?kù)的server-id表,復(fù)雜。
  • 5種方法都存在的問題是,使用冷備的數(shù)據(jù)來擴(kuò)容,server-id需要手動(dòng)去修改,否則就與冷備源的server-id沖突。而且,當(dāng)mysql啟動(dòng)的時(shí)候,你無法判斷該mysql是剛通過備份擴(kuò)容的,還是之前一直正常運(yùn)行的。所以你不知道這個(gè)server-id到底要不要改。而我希望server-id對(duì)dba完全透明,又絕不產(chǎn)生沖突,即可徹底屏蔽這個(gè)討厭的東西。

建議的方法

其實(shí)很簡(jiǎn)單。ipv4是4字節(jié)的整數(shù),與server-id的范圍完全一樣。我們認(rèn)為只有ip地址+端口才能唯一的確定一個(gè)mysql實(shí)例,所以總是希望把ip信息和端口信息都集成到server-id中。但是別忘了,一個(gè)ip上不能同時(shí)啟動(dòng)兩個(gè)一樣的端口。所以,server-id只需采用ip地址的整數(shù)形式:select INET_ATON('192.168.12.45'),3232238637!所有新上線的實(shí)例,mysql啟動(dòng)腳本強(qiáng)制對(duì)server-id進(jìn)行檢查,發(fā)現(xiàn)server-id不對(duì)就進(jìn)行糾正,然后啟動(dòng)。這種方法有個(gè)前提條件:同一機(jī)器上的多個(gè)instance不要有主從關(guān)系,否則server-id一樣就會(huì)導(dǎo)致問題。這種情況一般只會(huì)在測(cè)試環(huán)境出現(xiàn),在線上基本是沒有的。滿足了這個(gè)前提,所有問題迎刃而解。

總結(jié)

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

您可能感興趣的文章:
  • MySQL主從同步中的server-id示例詳解

標(biāo)簽:臨汾 湖南 白銀 烏海 湖北 云浮 聊城 武威

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL如何生成唯一的server-id》,本文關(guān)鍵詞  MySQL,如何,生成,唯一,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL如何生成唯一的server-id》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于MySQL如何生成唯一的server-id的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美电影在哪看比较好| 欧美区视频在线观看| 国产亚洲精品超碰| 亚洲午夜视频在线| 亚洲欧美激情在线| 亚洲素人一区二区| 91免费版在线| 亚洲午夜av在线| 亚洲在线观看免费视频| 亚洲不卡一区二区三区| 国内精品嫩模私拍在线| 99久久精品99国产精品| 91精品国产欧美一区二区| 久久久亚洲欧洲日产国码αv| 亚洲欧美日韩中文播放| 欧美aa在线视频| 91麻豆精品一区二区三区| 欧美一区二区高清| 亚洲乱码日产精品bd| 精品一区二区三区在线观看国产| 不卡高清视频专区| 国产午夜精品一区二区| 91免费视频大全| 婷婷六月综合亚洲| 国产丝袜在线精品| 欧美精品久久天天躁| 国精产品一区一区三区mba视频| 久久精品人人做人人综合| 成人的网站免费观看| 日本免费在线视频不卡一不卡二 | 日本国产一区二区| 美女免费视频一区二区| 亚洲免费高清视频在线| 91成人在线免费观看| 国产一区在线观看视频| 亚洲成人777| 亚洲成人三级小说| 亚洲人成电影网站色mp4| 国产亚洲综合色| 日韩欧美一区在线| 日韩视频免费观看高清完整版| 色哟哟一区二区| 色呦呦日韩精品| 欧美一区二区三区视频| 日韩欧美一区二区视频| 91成人在线免费观看| 国模冰冰炮一区二区| 福利电影一区二区| 成人一区在线观看| 国产精品99久久久久久宅男| 精品一区二区三区免费观看| 国产成人日日夜夜| 91香蕉视频mp4| 欧美精三区欧美精三区| 日韩欧美色综合| 亚洲精品国产精品乱码不99| 美女视频黄久久| 国产精品中文字幕日韩精品| 国产麻豆精品在线| 欧美三级在线看| 欧美变态口味重另类| 日韩欧美国产一区二区在线播放 | 麻豆一区二区在线| 国产精品一区二区无线| 全国精品久久少妇| 色综合夜色一区| 久久久一区二区三区| 午夜成人在线视频| 成人永久免费视频| 国产欧美一区二区在线| 日韩不卡在线观看日韩不卡视频| 成人激情综合网站| 日韩精品一区二区三区在线| 亚洲自拍欧美精品| 成人一区在线看| 久久久精品欧美丰满| 日韩精品福利网| 欧美日韩在线三区| 亚洲午夜三级在线| 欧美亚洲日本一区| 一区二区三区欧美久久| 91偷拍与自偷拍精品| 亚洲免费av网站| 色香蕉成人二区免费| 亚洲最色的网站| 91精品国产91久久久久久最新毛片| 又紧又大又爽精品一区二区| 91在线视频免费观看| 亚洲乱码国产乱码精品精98午夜 | 精品奇米国产一区二区三区| 偷拍与自拍一区| 精品精品国产高清一毛片一天堂| 午夜精品久久久久久久| 在线电影国产精品| 国产乱码精品一区二区三区忘忧草 | 欧美一区二区性放荡片| 亚洲午夜电影在线| 久久综合视频网| av中文一区二区三区| 国产成人av在线影院| 日韩免费高清视频| 国产成都精品91一区二区三| 一区二区三区蜜桃| 国产欧美日本一区二区三区| 五月天亚洲精品| 欧美不卡一区二区三区| 精品裸体舞一区二区三区| 日韩欧美另类在线| 久久精品欧美日韩精品| 亚洲卡通欧美制服中文| 婷婷夜色潮精品综合在线| 韩国女主播成人在线| 美女视频黄 久久| 奇米一区二区三区av| 视频一区欧美精品| 亚洲欧美激情在线| 亚洲自拍欧美精品| 亚洲国产精品久久人人爱蜜臀| 色婷婷亚洲婷婷| 成人美女在线视频| 日韩avvvv在线播放| 国产欧美一区二区精品婷婷| 久久一留热品黄| 中文字幕视频一区| 国产无人区一区二区三区| 欧美肥妇bbw| 一区二区三区波多野结衣在线观看 | 一区二区免费在线| 97久久人人超碰| 一区二区在线观看免费视频播放 | 午夜精品久久久久久| 日韩免费观看高清完整版| 韩国女主播成人在线观看| 国产日韩影视精品| 99久久国产综合精品女不卡| 亚洲欧美日韩人成在线播放| 555www色欧美视频| 色狠狠av一区二区三区| 久久国产视频网| 国产精品女人毛片| 精品国产一区二区三区av性色| 成人av在线资源网站| 精品一区二区三区免费| 亚洲一二三四久久| 国产精品美女一区二区| 国产精品国产三级国产普通话99 | 麻豆精品一区二区| 一区在线观看免费| 精品国内片67194| 欧洲人成人精品| 99久久国产免费看| 99久久久免费精品国产一区二区| 九色综合狠狠综合久久| 香蕉成人啪国产精品视频综合网| 一区二区三区电影在线播| 亚洲裸体xxx| 一区二区三区欧美在线观看| 亚洲一区二区在线免费看| 一区二区三区免费看视频| 亚洲国产成人精品视频| 午夜精品aaa| 精东粉嫩av免费一区二区三区| 日韩成人免费电影| 奇米888四色在线精品| 蜜臀av在线播放一区二区三区| 图片区小说区区亚洲影院| 老鸭窝一区二区久久精品| 麻豆精品新av中文字幕| 麻豆精品精品国产自在97香蕉| 看电视剧不卡顿的网站| 99综合影院在线| 日韩欧美国产一区二区在线播放| 亚洲精品国产无天堂网2021| 精品亚洲成a人| 日韩精品一区在线观看| 亚洲另类在线制服丝袜| 成人h动漫精品| 国产精品国产馆在线真实露脸| 男男gaygay亚洲| 欧美成人福利视频| 色婷婷亚洲婷婷| 日韩女优av电影在线观看| ...xxx性欧美| 色综合天天综合在线视频| 91丨porny丨首页| 久久午夜电影网| 免费欧美在线视频| 2023国产精品自拍| 国产精品网站在线播放| 亚洲国产精品一区二区久久| 成人午夜看片网址| 亚洲精品在线一区二区| 蜜桃久久久久久久| 欧美写真视频网站| 亚洲午夜激情网页| 欧美日韩另类一区| 石原莉奈在线亚洲二区| 欧美日韩一区二区三区在线 | 亚洲色图清纯唯美| 成人黄色电影在线|