這一般是數(shù)據(jù)庫的安全策略,對(duì)于一些安全性要求比較高的系統(tǒng),數(shù)據(jù)庫通常是由主服務(wù)器和備份服務(wù)器組成,主備同時(shí)運(yùn)行,主服務(wù)器有數(shù)據(jù)改動(dòng)后,立刻會(huì)同步到備份服務(wù)器。所以在日常運(yùn)維工作中,為了防患于未然,經(jīng)常會(huì)進(jìn)行主備切換,就是把生產(chǎn)對(duì)接的服務(wù)器從主數(shù)據(jù)庫切換到備份庫上,使用備份庫運(yùn)行一段時(shí)間,看看備份庫運(yùn)行是否正常,數(shù)據(jù)是否正確等。

鑲黃網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司公司2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
切換的操作只需將連接池中,數(shù)據(jù)庫服務(wù)器的Ip換成備份庫Ip就可以了。
一:環(huán)境
192.168.1.100 master
192.168.1.101 slave1
192.168.1.102 slave2
slave1,slave2都是連在master上。
二:模擬主故障
關(guān)閉master實(shí)例
service mysql stop
此時(shí),slave1,slave2上show slave status\G都會(huì)發(fā)現(xiàn)錯(cuò)誤:
Last_IO_Error: error reconnecting to master'RepUser@192.168.1.100:3307' - retry-time: 60 retries: 1
IO進(jìn)程和sql進(jìn)程狀態(tài):
Slave_IO_Running: Connecting(該狀態(tài)表示會(huì)一直嘗試重連主,如果主正常了,該進(jìn)程狀態(tài)會(huì)自動(dòng)變成Yes)
Slave_SQL_Running: Yes
此時(shí),master不能提供讀寫服務(wù)。我們想將其中最新的slave提升為主。
三:切換步驟
3.1確保所有的relay log全部讀取完畢
在每個(gè)從庫上執(zhí)行:
stopslave io_thread;
showprocesslist;
直到看到Slave has read all relay log; waitingfor more updates,則表示從庫更新都執(zhí)行完畢了
或者通過show slave status查看
Slave_SQL_Running_State: Slave has read allrelay log; waiting for more updates
3.2 選擇新的主庫
對(duì)比選擇Relay_Master_Log_File,Exec_Master_Log_Pos最大的作為新的主庫,這里我們選擇slave1為新的主庫
其實(shí),如果兩個(gè)從IO進(jìn)程一直都是正常,沒有落后于主,且relay log都已經(jīng)重放完成,兩個(gè)從是一樣的,選擇哪個(gè)都可以。
這里選擇slave1作為新主。
3.3 進(jìn)行相應(yīng)配置
登陸slave1,執(zhí)行stop slave;
并進(jìn)入數(shù)據(jù)庫目錄,刪除master.info和relay-log.info文件(刪除前,可以先備份下這倆文件);
配置my.cnf文件,開啟log-bin,如果有l(wèi)og-slaves-updates=1和read-only=1則要注釋掉,然后重啟slave1.
3.4 reset master
在slave1上reset master,會(huì)重新生成二進(jìn)制日志。
mysql reset master;
Query OK, 0 rows affected (0.02 sec)
mysql show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 154 |
+------------------+-----------+
1 row in set (0.00 sec)
3.5創(chuàng)建用于同步的用戶
如果slave1完全同步master的話,這步可以省略。
3.6 slave2指向slave1
[sql] view plain copy
mysql change master to master_user='RepUser',master_password='beijing',master_host='192.168.1.101',master_port=3307,master_log_file='mysql-bin.000001',master_log_pos=154;
Query OK, 0 rows affected, 2 warnings (0.00 sec)
mysql start slave;
Query OK, 0 rows affected (0.00 sec)
3.7 將程序?qū)慖P改成slave1的IP
程序里之前記錄的是master的IP,現(xiàn)在master宕機(jī),故需改IP。
主從切換一般在如下情況下才進(jìn)行,
1、例行的主庫重啟,主庫運(yùn)行一段時(shí)間后需要將主庫進(jìn)行重啟掃盤,降低主庫死機(jī)的風(fēng)險(xiǎn)
2、主庫異常情況下切到從庫。
3、分機(jī)房網(wǎng)絡(luò)調(diào)整涉及到主庫的情況。
你的情況要看宕掉后的情況。如果有期間同步延遲,需要另外進(jìn)行處理。
在實(shí)際的生產(chǎn)中,為了解決Mysql的單點(diǎn)故障,一般都會(huì)采用「主備模式」。
MySQL幾乎所有的高可用架構(gòu),都直接依賴于 binlog。雖然這些高可用架構(gòu)已經(jīng)呈現(xiàn)出越來越復(fù)雜的趨勢(shì),但都是從最基本的一主一備演化過來的。
下圖為主備切換流程
在狀態(tài) 1 中,客戶端的讀寫都直接訪問節(jié)點(diǎn) A,而節(jié)點(diǎn) B 是 A 的備庫,只是將 A 的更新都同步過來,到本地執(zhí)行。這樣可以保持節(jié)點(diǎn) B 和 A 的數(shù)據(jù)是相同的。
當(dāng)需要切換的時(shí)候,就切成狀態(tài) 2。這時(shí)候客戶端讀寫訪問的都是節(jié)點(diǎn) B,而節(jié)點(diǎn) A 是 B 的備庫。
在狀態(tài) 1 中,雖然節(jié)點(diǎn) B 沒有被直接訪問,但是依然建議把節(jié)點(diǎn) B(也就是備庫)設(shè)置成只讀(readonly)模式。這樣做,有以下幾個(gè)考慮:
圖下圖 中畫出的就是一個(gè) update 語句在節(jié)點(diǎn) A 執(zhí)行,然后同步到節(jié)點(diǎn) B 的完整流程圖。
備庫 B 跟主庫 A 之間維持了一個(gè)長(zhǎng)連接。主庫 A 內(nèi)部有一個(gè)線程,專門用于服務(wù)備庫 B 的這個(gè)長(zhǎng)連接。一個(gè)事務(wù)日志同步的完整過程是這樣的:
在備庫 B 上通過 change master 命令,設(shè)置主庫 A 的 IP、端口、用戶名、密碼,以及要從哪個(gè)位置開始請(qǐng)求 binlog,這個(gè)位置包含文件名和日志偏移量。
在備庫 B 上執(zhí)行 start slave 命令,這時(shí)候備庫會(huì)啟動(dòng)兩個(gè)線程,就是圖中的 io_thread 和 sql_thread。其中 io_thread 負(fù)責(zé)與主庫建立連接。
主庫 A 校驗(yàn)完用戶名、密碼后,開始按照備庫 B 傳過來的位置,從本地讀取 binlog,發(fā)給 B。
備庫 B 拿到 binlog 后,寫到本地文件,稱為中轉(zhuǎn)日志(relay log)。
sql_thread 讀取中轉(zhuǎn)日志,解析出日志里的命令,并執(zhí)行。
主庫需要復(fù)制新增binlog到從庫才能完成同步,這個(gè)同步過程就是同步延遲。主從延遲最直接的表現(xiàn)是,備庫消費(fèi)中轉(zhuǎn)日志(relay log)的速度,比主庫生產(chǎn) binlog 的速度要慢。
「同步策略」:Master會(huì)等待所有的Slave都回應(yīng)后才會(huì)提交,這個(gè)主從的同步的性能會(huì)嚴(yán)重的影響。
「半同步策略」:Master至少會(huì)等待一個(gè)Slave回應(yīng)后提交。
「異步策略」:Master不用等待Slave回應(yīng)就可以提交。
「延遲策略」:Slave要落后于Master指定的時(shí)間。
對(duì)于不同的業(yè)務(wù)需求,有不同的策略方案,但是一般都會(huì)采用最終一致性,不會(huì)要求強(qiáng)一致性,畢竟強(qiáng)一致性會(huì)嚴(yán)重影響性能。
新聞標(biāo)題:mysql主備怎么切換 mysql主備切換原理
鏈接分享:http://chinadenli.net/article34/hhgppe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、App開發(fā)、外貿(mào)網(wǎng)站建設(shè)、營(yíng)銷型網(wǎng)站建設(shè)、搜索引擎優(yōu)化、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)