成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Mysql二進(jìn)制日志文件(binlog)主從復(fù)制最佳實(shí)踐

劉永祥 / 3491人閱讀

摘要:的主從備份相關(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

相關(guān)文章

發(fā)表評(píng)論

0條評(píng)論

劉永祥

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<