天天看點

linux mysql停止主從_MySQL主從複制

主在執行sql語句後,記錄一個二進制log檔案(bin-log),從連接配接主,并擷取到bin-log,存在到本地的relay-log上,并從上一次記錄的位置執行sql,當遇到錯誤則停止同步。

PS:主從并不是實時同步,存在瞬間連接配接;當在網絡斷開後,正常後批量同步;修改從上的資料容易導緻主上的bin-log錯誤而停止同步,是以從上的資料注意修改。

一,主從伺服器安裝Mysql,具體參考Mysql配置

二、配置主從

1.在從salve端配置vim /etc/my.cnf

datadir = /data/mysql      ##此處為安裝時定義的位置

server-id=2

replicate-do-db=db1,db2   ##需要同步的庫

replicate-ignore-db=db1,db2  ##不需要同步的庫

##PS 同步庫的參數2選1,需對應主的my.cnf配置是哪個參數

屏蔽以下參數,不需要使用:

skip-bdb

skip-networking

log-bin=node1-bin

binlog-ignore-db=test,mysql

master-host=XXXXXXX

master-password=XXXXXX

master-connect-retry=XXX

mysql.server以及mysqld_safe子產品的内容屏蔽

##配置從的啟動配置檔案

vim /etc/init.d/mysqld      ##修改2行參數

basedir=/usr/local/mysql

datadir=/data/mysql

2.在主master端,修改配置檔案vim /etc/my.cnf

##開啟以下參數:

server-id         =1

log-bin=mysql-bin

binlog-do-db=db1,db2   ##需要同步的庫

binlog-ignore-db=db1,db2  ##不需要同步的庫

##同步庫的參數2選1,或可都不使用,按實際需求

##使用mysql指令,repl、ip、密碼均為為從slave的賬号、IP以及密碼I

grant replication slave on *.* to‘repl’@192.168.137.111’identified by‘123456’;

##建立後,可以測試slave端是否可以連結到主master端,在salve使用指令:

mysql -urepl–p123456–h主Master的IP

##若加上-P為指定端口,預設為3306

##回到主master端,鎖表

flush tables with read lock;

show master status;         ##需記下file、Position列的值

quit

##備份資料庫db1為資料庫名稱,并cp到從slave上

mysqldump–uroot–p123456 db1 > 1.sql

scp–P36000 1.sql [email protected]:/root/   ##拷貝到從上的root目錄下-P為指定端口

3.在從slave端上:

##建立db1的庫

mysql -uroot -e“create database db1;”

mysql -urootdb1 

##使用mysql指令,mysql操作

mysql

slave stop;

change master to master_host=’192.168.137.110’,master_port=3306,master_user=’repl’,master_password=’123456’, master_log_file=’主master端記錄的file列值’, master_log_pos=’主master端記錄的position的列值’

##PS如果這段運作報錯,把/data/mysql目錄的XXbinXX的檔案删掉即可回到slave stop繼續

slave start;

###回到主master端

mysql–uroot–e“unlock tables;”

###回到從slave端

mysql -uroot –e“show slave status\G;”

若Slave_IO_Running以及Slave_SQL_Running都為YES表示成功,否則為失敗

4.測試主從

在主端建立表、删除表等等,在從端可查詢

5.注意

主從配置起來很簡單,但是這種機制也是非常脆弱的,一旦我們不小心在從上寫了資料,那麼主從也就被破壞了。另外如果重新開機master,務必要先把slave停掉,也就是說需要在slave上去執行slave stop指令,然後再去重新開機master的mysql服務,否則很有可能就會中斷了。當然重新開機完後,還需要把slave給開啟slave start