mysql主從饰剥、主主配置

引言

實(shí)際生產(chǎn)中要求數(shù)據(jù)庫的高可用性殊霞,就要考慮mysql的主從、主主汰蓉。若針對的是上云的機(jī)器绷蹲,比如使用阿里云,那可以購買相應(yīng)廠商的服務(wù)顾孽,只需要修改相應(yīng)的配置就可以做到熱備祝钢,冷備的效果。但是若針對的是使用自己的服務(wù)器的企業(yè)若厚,那只能自己擼起袖子來干了拦英。

參考網(wǎng)址

1.mysql主從
Mysql主從復(fù)制原理及搭建
http://www.reibang.com/p/b0cf461451fb
2.mysql設(shè)置步長
mysql修改數(shù)據(jù)表自增步
3.更進(jìn)一步,mysql雙主
http://www.reibang.com/p/469279c1ad39

主主搭建

本文將以174,175兩臺服務(wù)器為例子测秸,介紹給讀者雙主數(shù)據(jù)庫的搭建方法疤估。

1. Mysql安裝

安裝方法在網(wǎng)上有很多灾常,此處本文就不在重復(fù)了,但是要強(qiáng)調(diào)一點(diǎn)铃拇,兩臺機(jī)器上的mysql至少安裝5.7以上的版本钞瀑,且兩臺機(jī)器上的mysql版本,安裝路徑慷荔,配置雕什,最好是一模一樣的。

2. Mysql配置

修改my.cnf配置信息显晶,默認(rèn)安裝存放在 /etc/my.cnf中

2.1 開啟relay log配置

這里以174上的mysql作為例子贷岸,同理可修改175上的配置,建議配置均以后綴IP不同作為區(qū)分磷雇。

[mysqlId]
# 同一局域名內(nèi)注意要唯一
server-id=174
# 開啟二進(jìn)制日志功能凰盔,可以隨便取(關(guān)鍵)
log-bin=mysql-bin-174
# relay_log配置中繼日志
relay_log=mysql-relay-bin-174

2.2 設(shè)置步長

在主主同步是先寫入一臺機(jī)器倦春,然后在同步到另外一臺機(jī)器上面户敬,本質(zhì)上并不是數(shù)據(jù)的同步,而是sql語言的同步睁本∧蚵基于這個(gè)原理,在雙主模式下如果只是單純使用mysql的自增長策略呢堰,那將會(huì)導(dǎo)致沖突(比如A機(jī)器插入一條id為3的數(shù)據(jù)抄瑟,B機(jī)器也插入了一條id為3的數(shù)據(jù),這樣子AB機(jī)器之間就無法同步了)枉疼。
這個(gè)問題其實(shí)可以擴(kuò)大成分布式環(huán)境下數(shù)據(jù)庫id一致性問題皮假。解決辦法有很多,比如本博主之前寫到的另外一篇文章骂维,采用雪花算法保證全局id的唯一性惹资。

關(guān)于雪花算法的一些思考與工具類實(shí)現(xiàn)

這里因?yàn)槭莾膳_機(jī)器,所以我們可以做一種簡單處理航闺,針對mysql的自增長一臺為單數(shù)褪测,一臺為復(fù)數(shù)進(jìn)行區(qū)分。因此修改mysql配置如下

[mysqlId]
#設(shè)置步長潦刃,兩臺機(jī)器均為2
auto_increment_increment=2
#設(shè)置初始值侮措,一臺為1,另一臺為2
auto_increment_offset=1

修改完成mysql的配置后記得要重啟

sevice mysql restart

3. mysql主主實(shí)現(xiàn)

在兩臺機(jī)器174,175上均用root用戶訪問mysql

3.1 創(chuàng)建slave用戶

174

create user 'slave'@'xx.xx.xx.175' identified by 'pwd';
grant replication slave,replication client on *.* to 'slave'@'xx.xx.xx.175';
flush privileges;

175

create user 'slave'@'xx.xx.xx.174' identified by 'pwd';
grant replication slave,replication client on *.* to 'slave'@'xx.xx.xx.174';
flush privileges;

3.2 配置主主

在174上配置自己為slave乖杠,主指向175分扎;
在175上配置自己為slave,主指向174胧洒。

174

show master status \G; #記錄下 file和position
master_host='xx.xx.xx.175',master_user='slave',master_password='pwd',master_port=3306,master_log_file='175上記錄下的file',master_log_pos=175上記錄下的position;

175

show master status \G; #記錄下 file和position
master_host='xx.xx.xx.174',master_user='slave',master_password='pwd',master_port=3306,master_log_file='174上記錄下的file',master_log_pos=174上記錄下的position;

命令說明
master_host :Master的地址
master_port:Master的端口號
master_user:用于數(shù)據(jù)同步的用戶
master_password:用于同步的用戶的密碼
master_log_file:指定 Slave 從哪個(gè)日志文件開始復(fù)制數(shù)據(jù)畏吓,即上文中提到的 File 字段的值
master_log_pos:從哪個(gè) Position 開始讀环揽,即上文中提到的 Position 字段的值
master_connect_retry:如果連接失敗,重試的時(shí)間間隔庵佣,單位是秒歉胶,默認(rèn)是60秒

分別在174和175中中查看主從同步狀態(tài):

show slave status \G;

此時(shí)的SlaveIORunning 和 SlaveSQLRunning 都是No,因?yàn)槲覀冞€沒有開啟主從復(fù)制過程巴粪。
開啟主從復(fù)制:

start slave;

再次查看同步狀態(tài):

show slave status \G;

SlaveIORunning 和 SlaveSQLRunning 都是Yes說明主從復(fù)制已經(jīng)開啟通今。

4. 更多

4.1 問題

若SlaveIORunning一直是Connecting,有下面4種原因:
1肛根、網(wǎng)絡(luò)不通辫塌,檢查ip端口
2、密碼不對派哲,檢查用于同步的用戶名和密碼
3臼氨、pos不對,檢查Master的Position
4芭届、mysql8特有的密碼規(guī)則問題引起:
ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '@#$Rfg345634523rft4fa';
將密碼規(guī)則修改為:mysql_native_password

4.2 指定數(shù)據(jù)庫主從

如果需要指定想要主從同步哪個(gè)數(shù)據(jù)庫储矩,可以在master的my.cnf添加配置:

binlog-do-db:指定mysql的binlog日志記錄哪個(gè)db

或者在slave的my.cnf添加配置:

replicate-do-db=需要復(fù)制的數(shù)據(jù)庫名,如果復(fù)制多個(gè)數(shù)據(jù)庫褂乍,重復(fù)設(shè)置這個(gè)選項(xiàng)即可 
replicate-ignore-db=需要忽略的數(shù)據(jù)庫名持隧,如果忽略多個(gè)數(shù)據(jù)庫,重復(fù)設(shè)置這個(gè)選項(xiàng)即可

4.3 slave的啟動(dòng)

若遇到奇怪的問題逃片,可以先關(guān)閉slave屡拨,調(diào)整好file和position,在重新開啟褥实。不過此時(shí)應(yīng)該注意兩邊數(shù)據(jù)的完整性

stop slave;
start slave;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呀狼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子损离,更是在濱河造成了極大的恐慌哥艇,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件草冈,死亡現(xiàn)場離奇詭異她奥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)怎棱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绷跑,“玉大人拳恋,你說我怎么就攤上這事≡夷螅” “怎么了谬运?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵隙赁,是天一觀的道長。 經(jīng)常有香客問我梆暖,道長伞访,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任轰驳,我火速辦了婚禮厚掷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘级解。我一直安慰自己冒黑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布勤哗。 她就那樣靜靜地躺著抡爹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芒划。 梳的紋絲不亂的頭發(fā)上冬竟,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機(jī)與錄音民逼,去河邊找鬼诱咏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛缴挖,可吹牛的內(nèi)容都是我干的袋狞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼映屋,長吁一口氣:“原來是場噩夢啊……” “哼苟鸯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起棚点,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤早处,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后瘫析,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砌梆,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年贬循,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了咸包。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡杖虾,死狀恐怖烂瘫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情奇适,我是刑警寧澤坟比,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布芦鳍,位于F島的核電站,受9級特大地震影響葛账,放射性物質(zhì)發(fā)生泄漏柠衅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一籍琳、第九天 我趴在偏房一處隱蔽的房頂上張望菲宴。 院中可真熱鬧,春花似錦巩割、人聲如沸裙顽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽愈犹。三九已至,卻和暖如春闻丑,著一層夾襖步出監(jiān)牢的瞬間漩怎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工嗦嗡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留勋锤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓侥祭,卻偏偏與公主長得像叁执,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子矮冬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355