mysql 从服务器同步设置_mysql主从同步配置
1.為什么要主從同步?
在Web應(yīng)用系統(tǒng)中,數(shù)據(jù)庫(kù)性能是導(dǎo)致系統(tǒng)性能瓶頸最主要的原因之一。尤其是在大規(guī)模系統(tǒng)中,數(shù)據(jù)庫(kù)集群已經(jīng)成為必備的配置之一。集群的好處主要有:查詢負(fù)載、數(shù)據(jù)庫(kù)復(fù)制備份等。其中Master負(fù)責(zé)寫(xiě)操作的負(fù)載,也就是說(shuō)一切寫(xiě)的操作都在Master上進(jìn)行,而讀的操作則分?jǐn)偟絊lave上進(jìn)行。這樣一來(lái)的可以大大提高讀取的效率。寫(xiě)操作涉及到鎖的問(wèn)題,不管是行鎖還是表鎖還是塊鎖,都是比較降低系統(tǒng)執(zhí)行效率的事情。我們這樣的分離是把寫(xiě)操作集中在一個(gè)節(jié)點(diǎn)上,而讀操作其其他的N個(gè)節(jié)點(diǎn)上進(jìn)行,從另一個(gè)方面有效的提高了讀的效率,保證了系統(tǒng)的高可用性。
2.mysql主從同步
我的要同步的兩臺(tái)mysql數(shù)據(jù)庫(kù)版本都是mysql5.7,兩臺(tái)電腦都在同一個(gè)網(wǎng)段之中。
①修改主數(shù)據(jù)庫(kù)my.ini/my.cnf配置:
Server-id = 1? //這是數(shù)據(jù)庫(kù)ID,此ID是唯一的,ID值不能重復(fù),否則會(huì)同步出錯(cuò);
log-bin = mysql-bin //開(kāi)啟binglog日志,二進(jìn)制日志文件,此項(xiàng)為必填項(xiàng),否則不能同步數(shù)據(jù)
binlog_format=mixed //二進(jìn)制日志的格式,有三種:statement/row/mixed
binlog-do-db = testcreate? //需要同步的數(shù)據(jù)庫(kù),如果還需要同步另外的數(shù)據(jù)庫(kù),那么繼續(xù)逐條添加,如果 不寫(xiě),那么默認(rèn)同步所有的數(shù)據(jù)庫(kù);
binlog-ignore-db = mysql //不需要同步的數(shù)據(jù)庫(kù);
修改完成之后重啟mysql服務(wù)。
MySQL 服務(wù)重啟
service mysqld restart
② 添加主數(shù)據(jù)庫(kù)用于同步的賬號(hào):
給主數(shù)據(jù)庫(kù)授權(quán)一個(gè)可以進(jìn)行復(fù)制的用戶,執(zhí)行如下命令:
grant replication slave on *.* to?'slave'@'%'?identified by '123456';
③顯示主數(shù)據(jù)庫(kù)的同步信息:
可以看出已經(jīng)產(chǎn)生了二進(jìn)制的日志文件信息,mysql的同步就是通過(guò)這個(gè)二進(jìn)制日志文件進(jìn)行同步,主數(shù)據(jù)庫(kù)把對(duì)數(shù)據(jù)庫(kù)的操作的指令都記錄到該日志文件下,從數(shù)據(jù)庫(kù)通過(guò)讀取該文件,來(lái)對(duì)從數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行修改,從而達(dá)到主從同步的效果。
④配置從數(shù)據(jù)庫(kù)的my.ini
從數(shù)據(jù)庫(kù)的話只需要配置server-id,binlog-do-db,binlog-ignore-db即可。
⑤設(shè)置從數(shù)據(jù)庫(kù)鏈接到主數(shù)據(jù)庫(kù)
在mysql下執(zhí)行stop slave;命令,停止slave服務(wù);
mysql> change master to
-> master_host='192.168.1.189',
-> master_user='slave',
-> master_password='123456',
-> master_log_file='mysql-bin000014.000001',
-> master_port=3306,
-> master_log_pos=107;
注意:這里的master_log_file,master_log_pos的值要和master的值一致。否則會(huì)無(wú)法同步。
執(zhí)行start slave;命令,啟動(dòng)服務(wù)。
注意:在這里可能會(huì)無(wú)法鏈接到主數(shù)據(jù)庫(kù),需要看主數(shù)據(jù)庫(kù)中my.ini中bind 127.0.0.1是否沒(méi)有被注釋,如果沒(méi)有,那么只能在本機(jī)登錄,而不能使用遠(yuǎn)程登錄方式。
⑥驗(yàn)證是否同步:
show slave status\G;
得到如下結(jié)果則說(shuō)明同步成功。
Slave_IO_Running :從主服務(wù)器成功的bin-log日志同步并拿到數(shù)據(jù)
Slave_SQL_Running: 從服務(wù)器成功地執(zhí)行SQL語(yǔ)句
上面兩項(xiàng)均為yes,說(shuō)明配置成功。
從服務(wù)器相關(guān)命令
start slave; //啟動(dòng)從服務(wù)器
stop slave; //停止從服務(wù)器
show slave status; //查看從服務(wù)器狀態(tài)
show master logs; //查看主服務(wù)器 bin-log 日志
change master to …… //動(dòng)態(tài)改變到主服務(wù)配置
show processlist; //查看從服務(wù)器運(yùn)行進(jìn)程
主從數(shù)據(jù)不一致
第一種方法
stop slave;set global sql_slave_skip_counter=1; //跳過(guò)一步錯(cuò)誤
start slave;
第二種方法:
stop slave;
show master status;//查看主服務(wù)器bin-log日志
change master to…… //手動(dòng)同步 ,指定日志文件和文件位置 master-log-file="mysql-bin.00001" master-log-pos=20
重啟從服務(wù)器,查看?show slave status\G,Slave_IO_Running、Slave_SQL_Running 都為 YES,同步成功。
注意:第一次同步時(shí)需要主從庫(kù)數(shù)據(jù)一樣
總結(jié)
以上是生活随笔為你收集整理的mysql 从服务器同步设置_mysql主从同步配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: Linux学习笔记之CentOS7的 w
- 下一篇: Codeforces 924D Cont
