mysql主從復(fù)制和讀寫分離的配置詳細(xì)筆記

1.先修改my.cnf

sudo vim /etc/my.cnf

找到server_id 修改為10以內(nèi)的數(shù)字,

同樣的做法在從服務(wù)器上面,但是數(shù)字不能重復(fù),保存后重啟;

2.進(jìn)入主服務(wù)器的mysql,

//授權(quán)給從數(shù)據(jù)庫服務(wù)器192.168.1.152

GRANT REPLICATION SLAVE ON *.* to 'guofu'@'192.168.1.152' identified by 'guofu';

//查看主庫的狀態(tài)

show master status;

退出;

查詢結(jié)果如下圖:

3.在從服務(wù)器進(jìn)入mysql

如果之前配過從服務(wù)器,則先執(zhí)行以下語句結(jié)束同步;

stop slave;

然后配置同步信息

change master to?

master_host='192.168.1.133',

?master_user='guofu',

?master_password='guofu',?

master_log_file='mysql-bin.000008',//對(duì)應(yīng)主表的file

?master_log_pos=1159;//對(duì)應(yīng)主表的position

開啟同步

start slave;

查看同步狀態(tài)?

show slave status \G;

兩個(gè)同時(shí)為yes的時(shí)候表示成功,

這個(gè)時(shí)候我們?cè)谥鞣?wù)器執(zhí)行:

create database guofu?

在從服務(wù)器可以看到;

表示已經(jīng)成功

注意:如果不成功,顯示connecting? 考慮是否是防火墻的問題,關(guān)閉防火墻


如果單獨(dú)向同步某個(gè)庫,參考以下文章

mysql主從只同步部分庫或表 - CSDN博客


查看bin-log日志

A.查詢第一個(gè)(最早)的binlog日志:

? ? ? ? mysql> show binlog events\G;


? ? ? B.指定查詢mysql-bin.000021 這個(gè)文件:

? ? ? ? mysql> show binlog events in 'mysql-bin.000021'\G;

? ? ? C.指定查詢mysql-bin.000021 這個(gè)文件,從pos點(diǎn):8224開始查起:

? ? ? ? mysql> show binlog events in 'mysql-bin.000021' from 8224\G;

? ? ? D.指定查詢mysql-bin.000021 這個(gè)文件,從pos點(diǎn):8224開始查起,查詢10條

? ? ? ? mysql> show binlog events in 'mysql-bin.000021' from 8224 limit 10\G;

? ? ? E.指定查詢mysql-bin.000021 這個(gè)文件,從pos點(diǎn):8224開始查起,偏移2行,查詢10條

? ? ? ? mysql> show binlog events in 'mysql-bin.000021' from 8224 limit 2,10\G;

MySQL的binlog日志 - 馬丁傳奇 - 博客園


那么如何實(shí)現(xiàn)讀寫分類呢?

①面向過程 ?使用兩個(gè)mysql的鏈接,讀操作連接從mysql ?寫操作連接主mysql

②面向?qū)ο??class類封裝mysql ?query方法執(zhí)行sql ?判斷sql語句的字符串里包含的關(guān)鍵字,如果包含select 查詢操作,就連接從mysql 其他操作就連接主mysql

3.mysql_proxy 可以根據(jù)用戶的操作,判斷是讀寫操作,來進(jìn)行對(duì)應(yīng)服務(wù)器的操作。

相當(dāng)于mysql的負(fù)載均衡。直接連接mysql_proxy。

Amoeba+Mysql實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離 - 青衫lys - 博客園------------------注意:該文章坑點(diǎn)在于:默認(rèn)的數(shù)據(jù)池是不能關(guān)閉的,否則不能執(zhí)行任何操作

下載Amoeba

wget http://jaist.dl.sourceforge.net/project/amoeba/Amoeba%20for%20mysql/3.x/amoeba-mysql-3.0.5-RC-distribution.zip


另附二進(jìn)制目錄:在mysql下執(zhí)行?? show variables like '%datadir%';即可看到數(shù)據(jù)文件目錄

如何查看二進(jìn)制文件:使用以下命令 注意目錄改成自己的

/usr/local/mysql/bin/mysqlbinlog mysql-bin.000008

以下是個(gè)人筆記

可以在my.cnf中設(shè)置

relay_log_recovery ? ? ? ?= on


msyql 同步復(fù)制還半同步復(fù)制文章鏈接

mysql異步復(fù)制與半同步復(fù)制的架構(gòu)原理 - CSDN博客

2.9 sync_relay_log_info:這個(gè)參數(shù)和sync_relay_log參數(shù)一樣,當(dāng)設(shè)置為1時(shí),slave的I/O線程每次接收到master發(fā)送過來的binlog日志都要寫入系統(tǒng)緩沖區(qū),然后刷入relay-log.info里,這樣是最安全的,因?yàn)樵诒罎⒌臅r(shí)候,你最多會(huì)丟失一個(gè)事務(wù),但會(huì)造成磁盤的大量I/O。當(dāng)設(shè)置為0時(shí),并不是馬上就刷入relay-log.info里,而是由操作系統(tǒng)決定何時(shí)來寫入,雖然安全性降低了,但減少了大量的磁盤I/O操作。這個(gè)值默認(rèn)是0,可動(dòng)態(tài)修改,建議采用默認(rèn)值。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容