本文實(shí)例講述了CentOS服務(wù)器搭建mysql主從復(fù)制與讀寫分離的方法。,具體如下:
mysql 主從復(fù)制的優(yōu)點(diǎn):
① 如果主服務(wù)器出現(xiàn)問題, 可以快速切換到從服務(wù)器提供的服務(wù),保證高可用性
② 可以在從服務(wù)器上執(zhí)行查詢操作, 降低主服務(wù)器的訪問壓力
③ 可以在從服務(wù)器上執(zhí)行備份, 以避免備份期間影響主服務(wù)器的服務(wù)
注意事項(xiàng):
① server-id必須唯一,一般使用ip的后三位
② 從庫Slave_IO_Running:NO 可能原因:帳號無權(quán)限操作
③ Can't execute the query because you have a conflicting read lock,解鎖下即可 unlock tables;
④ 一般只有更新不頻繁的數(shù)據(jù)或者對實(shí)時(shí)性要求不高的數(shù)據(jù)可以通過從服務(wù)器查詢, 實(shí)時(shí)性要求高的數(shù)據(jù)仍然需要從主數(shù)據(jù)庫獲得
⑤ 修改完主從服務(wù)器的配置需要重啟mysql:service mysqld restart
主機(jī)A: 192.168.10.111
從機(jī)B: 192.168.10.124
請先分別安裝mysql,版本需一致,裝了即可跳過
1、先登錄主機(jī) A,在主服務(wù)器上,設(shè)置一個(gè)從數(shù)據(jù)庫的賬戶,使用REPLICATION SLAVE(從復(fù)制)賦予權(quán)限,如:
賦予從機(jī)權(quán)限,有多臺從機(jī),就執(zhí)行多次。
| mysql>flush privileges; | 
2、 打開主機(jī)A的my.cnf,輸入如下:(修改主數(shù)據(jù)庫的配置文件my.cnf,開啟BINLOG,并設(shè)置server-id的值,修改之后必須重啟mysql服務(wù))
| server-id = 1 #主機(jī)標(biāo)示,整數(shù) log_bin = /var/log/mysql/mysql-bin.log #確保此文件可寫,開啟bin-log read-only =0 #主機(jī),讀寫都可以 binlog-do-db =test #需要備份數(shù)據(jù),多個(gè)寫多行 binlog-ignore-db =mysql #不需要備份的數(shù)據(jù)庫,多個(gè)寫多行 | 
可以通過mysql>show variables like 'log_%'; 驗(yàn)證二進(jìn)制日志是否已經(jīng)啟動。 
3、現(xiàn)在可以停止主數(shù)據(jù)的的更新操作,并生成主數(shù)據(jù)庫的備份,我們可以通過mysqldump到處數(shù)據(jù)到從數(shù)據(jù)庫,當(dāng)然了,你也可以直接用cp命令將數(shù)據(jù)文件復(fù)制到從數(shù)據(jù)庫去,注意在導(dǎo)出數(shù)據(jù)之前先對主數(shù)據(jù)庫進(jìn)行READ LOCK,以保證數(shù)據(jù)的一致性
| mysql> flush tables with read lock;Query OK, 0 rows affected (0.19 sec) | 
然后mysqldump導(dǎo)出數(shù)據(jù):
4、得到主服務(wù)器當(dāng)前二進(jìn)制日志名和偏移量,這個(gè)操作的目的是為了在從數(shù)據(jù)庫啟動后,從這個(gè)點(diǎn)開始進(jìn)行數(shù)據(jù)的恢復(fù)。
新聞熱點(diǎn)
疑難解答
圖片精選