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è)庫,參考以下文章
查看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;
那么如何實(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)值。