2019-03-21 mysql主從數(shù)據(jù)庫的配置及常見故障排除

【0】主從數(shù)據(jù)庫操作的注意事項

1.從數(shù)據(jù)庫只能做查詢操作,禁止在從數(shù)據(jù)庫上做 create、detele、update、insert等寫入操作。

【1】前提條件

1.服務(wù)器mysql已經(jīng)安裝

192.168.106.174 mysql(主)

192.168.106.178 mysql(從)

【2】修改mysql(主)上的vim /etc/my.cnf文件,在[mysqld]下添加如下參數(shù):

#每個server服務(wù)的標識,在master/slave環(huán)境中,此變量一定要不一樣。

server-id=1

#此參數(shù)表示在事務(wù)提交時,處理重做日志的方式;此變量有三個可選值0,1,2:

#0:當事務(wù)提交時,并不將事務(wù)的重做日志寫入日志文件,而是等待每秒刷新一次。

#1:當事務(wù)提交時,將重做日志緩存的內(nèi)容同步寫到磁盤日志文件,為了保證數(shù)據(jù)一致性,在replication環(huán)境中使用此值。

#2:當事務(wù)提交時,將重做日志緩存的內(nèi)容異步寫到磁盤日志文件(寫到文件系統(tǒng)緩存中)。

innodb_flush_log_at_trx_commit=0

#1.控制master的是否開啟binlog記錄功能;

#2.二進制文件最好放在單獨的目錄下,這不但方便優(yōu)化、更方便維護。

#3.重新命名二進制日志很簡單,只需要修改[mysqld]里的log_bin選項。

log_bin=master-bin

#通過此來實現(xiàn)master自動刪除binlog

expire_logs_days=14

【3】修改mysql(從)上的vim /etc/my.cnf文件,在[mysqld]下添加如下參數(shù):

#每個server服務(wù)的標識,在master/slave環(huán)境中,此變量一定要不一樣。

server-id=2

#此參數(shù)表示在事務(wù)提交時,處理重做日志的方式;此變量有三個可選值0,1,2:

#0:當事務(wù)提交時,并不將事務(wù)的重做日志寫入日志文件,而是等待每秒刷新一次。

#1:當事務(wù)提交時,將重做日志緩存的內(nèi)容同步寫到磁盤日志文件,為了保證數(shù)據(jù)一致性,在replication環(huán)境中使用此值。

#2:當事務(wù)提交時,將重做日志緩存的內(nèi)容異步寫到磁盤日志文件(寫到文件系統(tǒng)緩存中)。

innodb_flush_log_at_trx_commit=0

#1.控制master的是否開啟binlog記錄功能;

#2.二進制文件最好放在單獨的目錄下,這不但方便優(yōu)化、更方便維護。

#3.重新命名二進制日志很簡單,只需要修改[mysqld]里的log_bin選項,

log_bin=slaver-bin

#從庫做為其他從庫的主庫時 log-slave-updates參數(shù)是必須要添加的,因為從庫要作為其他從庫的主庫,必須添加該參數(shù)。從庫開啟log-bin參數(shù),

#如果直接往從庫寫數(shù)據(jù),是可以記錄log-bin日志的,但是從庫通過I0線程讀取主庫二進制日志文件,然后通過SQL線程寫入的數(shù)據(jù),是不會記錄binlog日志的。

#也就是說從庫從主庫上復(fù)制的數(shù)據(jù),是不寫入從庫的binlog日志的。所以從庫做為其他從庫的主庫時需要在配置文件中添加log-slave-updates參數(shù)。

log-slave-updates

#主從復(fù)制時忽略的庫,如果指定復(fù)制的庫則使用replicate-do-db參數(shù)。

replicate_ignore_db=mysql

#通過此來實現(xiàn)master自動刪除binlog

expire_logs_days=14

【4】

重啟174 、178mysql數(shù)據(jù)庫

【5】把174mysql(主)設(shè)置成主庫,操作如下

使用Xshell或CRT軟件連接174服務(wù)器,執(zhí)行以下命令

#使用用戶root和密碼123456登陸mysql

mysql -uroot -p123456

#主服務(wù)器(174)上創(chuàng)建授權(quán)賬戶,允許從服務(wù)器(178)主機上連接

mysql> grant replication slave on*.*to'rep'@'192.168.106.178'identified by'123456';

#查看主庫的當前binlog狀態(tài)信息

mysql> show master status;

#退出mysql

mysql> quit;

【6】把178mysql(從)設(shè)置成主庫,操作如下

使用Xshell或CRT軟件連接178服務(wù)器,執(zhí)行以下命令

#使用用戶root和密碼123456登陸mysql

mysql –uroot -p123456

--mysql -h 192.168.106.178 -uroot -p123456

#將主服務(wù)器(174)設(shè)為自己的主服務(wù)器,其中master_log_file和master_log_pos參數(shù)是根據(jù)show master status命令查出的主庫當前binlog狀態(tài)信息。

mysql> change master to master_host='192.168.106.174',master_user='rep',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=123;

#開啟slave功能

mysql> start slave;

#查看從庫的狀態(tài)信息

mysql> show slave status\G

#退出mysql

mysql> quit;

【7】主從mysql的測試

1.在mysql(主)上創(chuàng)建測試庫和測試表

#使用用戶root和密碼123456登陸mysql

mysql –uroot -p123456

#創(chuàng)建test_db1數(shù)據(jù)庫

mysql> create database test_db1;

#選擇test_db1數(shù)據(jù)庫

mysql> use test_db1;

#在test_db1庫下創(chuàng)建tab1表

mysql> create table test_table1(id int,name varchar(30));

#在tab1表中插入數(shù)據(jù)

mysql> insert into test_db1.test_table1(id,name) values(1,'zhangsan');

#提交

mysql> commit;

2.在mysql(從)上進行驗證

#使用用戶root和密碼123456登陸mysql

mysql -uroot -p123456

#查詢tab1表中的數(shù)據(jù)

mysql> select * from test_db1.test_table1

【8】常見故障排除

1.mysql(從)數(shù)據(jù)不同步,且Slave_SQL_Running: NO。

#使用用戶root和密碼123456登陸mysql

mysql -uroot -p123456

#查看從庫的狀態(tài)信息,主要關(guān)注Slave_IO_Running,Slave_SQL_Running,Last_SQL_Error等信息。

mysql> show slave status\G;

#停止slave

mysql> stop slave;

#設(shè)置跳過slave上sql的數(shù)量

mysql> set global sql_slave_skip_counter =1;

#啟動slave

mysql> start slave;

#查看從庫的狀態(tài)信息,主要關(guān)注Slave_IO_Running參數(shù)是YES,Slave_SQL_Running參數(shù)是YES,Last_SQL_Error參數(shù)沒有錯誤信息,則說明主從同步正常。

mysql> show slave status\G;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容