摘要:的主從備份相關(guān)配置服務(wù)器號(hào),不要和其他服務(wù)器重復(fù)開(kāi)啟二進(jìn)制日志索引二進(jìn)制日志的文件名設(shè)為就是把每次發(fā)生的修改和事件的日志即時(shí)同步到硬盤上復(fù)制模式防止從服務(wù)器在崩潰后自動(dòng)開(kāi)啟,以給你足夠的時(shí)間修復(fù)。
實(shí)踐背景
最近加入了同學(xué)的技術(shù)分享小組,4個(gè)人分兩組,半月進(jìn)行一次技術(shù)分享,現(xiàn)在一起搞Mysql我被分到講解Mysql日志方面,上周已經(jīng)講完了,不過(guò)他們總是覺(jué)得對(duì)于日志這塊了解不透徹,覺(jué)得不過(guò)關(guān)...于是大家自覺(jué)強(qiáng)制在加一輪分享作為對(duì)mysql這段時(shí)間的學(xué)習(xí)總結(jié),結(jié)合實(shí)踐來(lái)進(jìn)行分享,之前分享的日志的分類和原理非常理論,我自己也不滿意,于是花了一天把二進(jìn)制日志的數(shù)據(jù)恢復(fù)和主從復(fù)制搞了一下,于是這篇文章產(chǎn)生了,紙上得來(lái)總覺(jué)淺,絕知此事要躬行,這句話突然從我腦海中冒出來(lái)了。
預(yù)先配置我是將Mac OS本機(jī)的Mysql作為master,虛擬機(jī)的Mysql作為slave,首先修改master和slave的my.cnf數(shù)據(jù)庫(kù)配置文件。內(nèi)容如下:我這里配置的是同步master的test數(shù)據(jù)庫(kù)。
master的my.cnf
[mysqld] # 主從備份相關(guān)配置 server-id = 1 # 服務(wù)器 id 號(hào),不要和其他服務(wù)器重復(fù) log-bin=mysql-bin # 開(kāi)啟二進(jìn)制日志 log_bin_index = mysql-bin.index # 索引二進(jìn)制日志的文件名 sync_binlog = 1 # 設(shè)為1就是把MySql每次發(fā)生的修改和事件的日志即時(shí)同步到硬盤上 binlog_format = Row # 復(fù)制模式 Statement, Row, mixed skip_slave_start = 1 # 防止從服務(wù)器在崩潰后自動(dòng)開(kāi)啟,以給你足夠的時(shí)間修復(fù)。 max_binlog_size = 200M # 指定二進(jìn)制日志的大小 # 需要同步的二進(jìn)制數(shù)據(jù)庫(kù)名 binlog-do-db = test # 不同步的二進(jìn)制數(shù)據(jù)庫(kù)名,如果不設(shè)置可以將其注釋掉 binlog-ignore-db = information_schema binlog-ignore-db = mysql
slave的my.cnf
# 主從備份相關(guān)配置 - 從服務(wù)器 server-id = 2 # 服務(wù)器 id 號(hào),不要和其他服務(wù)器重復(fù) read_only = 1 # 讓從服務(wù)器只讀,可以防止有人誤從服務(wù)器插入數(shù)據(jù),導(dǎo)致主從數(shù)據(jù)不一致。 log-bin=mysql-bin # 開(kāi)啟二進(jìn)制日志 log_bin_index = mysql-bin.index # 索引二進(jìn)制日志的文件名 log_slave_updates = 1 relay_log = mysql-relay-bin # 中繼日志 relay_log_index = mysql-relay-bin.index skip_slave_start = 1 # 防止從服務(wù)器在崩潰后自動(dòng)開(kāi)啟,以給你足夠的時(shí)間修復(fù)。 max_binlog_size = 200M # 指定二進(jìn)制日志的大小 # 以下配置是為了方便以后,從庫(kù)切換為主庫(kù) # 需要同步的二進(jìn)制數(shù)據(jù)庫(kù)名 binlog-do-db = test # 不同步的二進(jìn)制數(shù)據(jù)庫(kù)名,如果不設(shè)置可以將其注釋掉 binlog-ignore-db = information_schema binlog-ignore-db = mysql實(shí)踐過(guò)程
配置文件修改完,需要將mysql服務(wù)重啟,使得配置生效;然后在master上使用root用戶創(chuàng)建同步賬戶并授權(quán)slave;然后查看master狀態(tài),此時(shí)不要再進(jìn)行master的操作,配置slave的跟蹤master日志的位置;最后檢查主從備份是否成功。具體實(shí)現(xiàn)過(guò)程如下:
我這里創(chuàng)建的用戶允許任何主機(jī)使用正確密碼登陸,也可以指定ip地址登陸,相當(dāng)于在master使用repl賬號(hào)密碼也可以登陸進(jìn)行操作。
// 創(chuàng)建同步賬戶repl并授權(quán) create user "repl"@"%" identified by "password"; grant all privileges on *.* to "repl"@"%";
查看mster狀態(tài),我進(jìn)行了兩次mysql服務(wù)重啟,所以二進(jìn)制日志已經(jīng)到mysql-bin.000003,我們之后在master上操作會(huì)開(kāi)始從mysql-bin.000003開(kāi)始記錄。
show master statusG
配置slave跟蹤master日志的位置,本地ip地址是192.168.1.90,slave的ip地址是192.168.92.141,配置過(guò)程不需要用到slave的ip,repl是我們創(chuàng)建的同步賬戶,接下來(lái)是密碼,二進(jìn)制日志文件,和二進(jìn)制日志中查看到的positon 5616。截圖顯示Position已經(jīng)達(dá)到了6467,我應(yīng)該是截圖的時(shí)候搞得太慢了,數(shù)據(jù)庫(kù)內(nèi)部發(fā)生了一點(diǎn)變化,說(shuō)明即使我們不操作數(shù)據(jù)庫(kù),二進(jìn)制日志也會(huì)記錄數(shù)據(jù)庫(kù)的變化,當(dāng)然這不影響我們的主從復(fù)制,因?yàn)镻osition提前了,就更不影響了。
CHANGE MASTER TO MASTER_HOST="192.168.1.90", MASTER_USER="repl", MASTER_PASSWORD="password", MASTER_LOG_FILE="mysq-bin.000003", MASTER_LOG_POS=5616;
接下來(lái)開(kāi)啟slave,檢查slave主從備份的狀態(tài),這里Slave_IO_State狀態(tài)是Wait for master to send event說(shuō)明主從備份配置成功了,正在等待master數(shù)據(jù)庫(kù)發(fā)生變化,如果主從復(fù)制失敗,查看狀態(tài)會(huì)顯示出錯(cuò)誤信息,可以根據(jù)情況進(jìn)行調(diào)試。
// 開(kāi)啟slave start slave; // 查看狀態(tài) SHOW SLAVE STATUSG
我們接下來(lái)在test數(shù)據(jù)庫(kù)的user表添加一行數(shù)據(jù)user4:
看下從庫(kù)發(fā)生了同步,查看數(shù)據(jù)如下:
看到從庫(kù)同步增加了一行數(shù)據(jù),說(shuō)明我們利用二進(jìn)制日志binlog實(shí)現(xiàn)了主從備份成功了,最后提醒一下,我的數(shù)據(jù)庫(kù)版本都是mysql8,0+的版本,如果版本不一致配置會(huì)遇到很多麻煩,最好是統(tǒng)一,不統(tǒng)一也不符合我們的開(kāi)發(fā)規(guī)范,創(chuàng)建同步賬戶時(shí),mysql8.0+版本的sql語(yǔ)句也不一樣,如果你的版本在mysql8.0以下,可以直接參考其他人的教程,但是大致步驟都是相同的,這篇文章著重于實(shí)現(xiàn)二進(jìn)制日志的主從復(fù)制,目的為了更好的了解mysql日志,本人技術(shù)有限,如有錯(cuò)誤,歡迎批評(píng)指正,謝謝。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75531.html
閱讀 1346·2021-11-15 11:37
閱讀 2225·2021-09-23 11:21
閱讀 1309·2019-08-30 15:55
閱讀 2116·2019-08-30 15:55
閱讀 2825·2019-08-30 15:52
閱讀 2830·2019-08-30 11:12
閱讀 1583·2019-08-29 18:45
閱讀 1897·2019-08-29 14:04