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