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 同步庫的參數21,需對應主的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  ##不需要同步的庫

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

##使用mysql命令,replip、密碼均爲爲從slave的賬號、IP以及密碼I

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

     ##創建後,可以測試slave端是否可以鏈接到主master端,在salve使用命令:

       mysql -urepl p123456 hMasterIP

       ##若加上-P爲指定端口,默認爲3306

##回到主master端,鎖表

flush tables with read lock;

show master status;         ##需記下filePosition列的值

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 -uroot db1 </root/1.sql

  ##使用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 unlock tables;

###回到從slave

mysql -uroot –show slave status\G;

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

 

4.測試主從

在主端創建表、刪除表等等,在從端可查詢

 

5.注意

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章