配置mysql主从服务器
參考:https://www.linuxidc.com/Linux/2016-09/135633.htm
一、Master主服務(wù)器配置(192.168.1.3)
1.編輯my.cnf(命令查找文件位置:find / -name my.cnf)
vi /etc/mysql/my.cnf 在[mysqld]中添加: server-id = 1 log_bin = master-bin log_bin_index = master-bin.index binlog_do_db = my_data binlog_ignore_db = mysql 備注:server-id 服務(wù)器唯一標(biāo)識(shí),log_bin 啟動(dòng)MySQL二進(jìn)制日志,binlog_do_db 指定記錄二進(jìn)制日志的數(shù)據(jù)庫,binlog_ignore_db 指定不記錄二進(jìn)制日志的數(shù)據(jù)庫。2.登錄主服務(wù)器創(chuàng)建從服務(wù)器用到的賬戶和權(quán)限:
grant replication slave on *.* to 'masterbackup' @'192.168.1.%' identified by 'masterbackup'; (192.168.1.%通配符,表示0-255的IP都可訪問主服務(wù)器,正式環(huán)境請(qǐng)配置指定從服務(wù)器IP)3.重啟MySQL,命令:sudo service mysql restart
4.查看主服務(wù)器狀態(tài): show master status;二、Slave從服務(wù)器配置(192.168.1.5)
1.編輯my.cnf編(命令查找文件位置:find / -name my.cnf) vi /etc/mysql/my.cnf 在[mysqld]中添加: server-id = 2 relay-log = slave-relay-bin relay-log-index = slave-relay-bin.index 2.重啟Slave從服務(wù)器MySQL,命令:/etc/init.d/mysql restart 3.登錄Slave從服務(wù)器,連接Master主服務(wù)器: change master to master_host='192.168.1.103',master_port=3306,master_user='masterbackup',master_password='masterbackup',master_log_file='master-bin.000001',master_log_pos=2403; 備注:master_log_file對(duì)應(yīng)show master status顯示的File列:master-bin.000001;master_log_pos對(duì)應(yīng)Position列:2403,否則有可能出現(xiàn)同步失敗。 4.啟動(dòng)Slave數(shù)據(jù)同步。 start slave; 5.查看Slave信息: show slave status\G; 備注:Slave_IO_Running和Slave_SQL_Running都為yes才表示同步成功。?
Slave_IO_Running:No解決辦法
解決辦法一、
Slave_SQL_Running: No
1.程序可能在slave上進(jìn)行了寫操作
2.也可能是slave機(jī)器重起后,事務(wù)回滾造成的.(我的就是這個(gè)錯(cuò)誤)
一般是事務(wù)回滾造成的:
解決辦法:
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;
第一次操作完畢之后,輸入命令showslave status\G?,發(fā)現(xiàn)還是沒變,又操作了一次,就好了;
slave啟動(dòng)失敗問題總結(jié):
從服務(wù)器配置的結(jié)果一定是:Slave_IO_Running 與 Slave_SQL_Running 狀態(tài)都要為Yes
1:Change master to
如果從庫的Slave未啟動(dòng),Slave_IO_Running為NO。
可能是主庫的master的信息有變化,
查看主庫show master status;
記錄下File,Position字段,假設(shè)為‘mysql-bin.000004’,98;
在從庫執(zhí)行
mysql>stop slave; mysql>change master to master_log_file='mysql-bin.000004',master_log_pos=98; mysql>start slave;
?
2:SET global sql_slave_skip_counter=n;
如果從庫的slave_sql_running為NO。
Err文件中記錄:
Slave:Error "Duplicate entry '1' for key 1" on query.....
可能是master未向slave同步成功,但slave中已經(jīng)有了記錄。造成的沖突可以在從庫上執(zhí)行
set global sql_slave_skip_counter=n;
跳過幾步。再restart slave就可以了。
3:發(fā)現(xiàn)mysql slave服務(wù)器經(jīng)常因?yàn)橐恍┨厥庾址蛘叻?hào)產(chǎn)生的更新語句報(bào)錯(cuò),整個(gè)同步也會(huì)因此而卡在那,最初的辦法只是手動(dòng)去出錯(cuò)的機(jī)器執(zhí)行下面三條SQL語句,跳過錯(cuò)誤即可。
mysql>stop slave; mysql>set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; mysql>start slave;
?
轉(zhuǎn)載于:https://www.cnblogs.com/wang666/p/9223952.html
總結(jié)
以上是生活随笔為你收集整理的配置mysql主从服务器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拉提琴的少女油画是谁画的啊?
- 下一篇: 进则同生共死子下一句是什么呢?