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