Mysql 主從同步 方法2:


自己的虛擬機環境;

master:192.168.202.131

slave ;192.168.202.132

一、 主服務器配置

1、編輯/etc/my.cnf文件在mysqld下添加以下字段

server-id=131         #主服務器標識,主要是唯一性,沒什麼限制

log-bin=mysql-bin   #指定二進制日誌文件的名稱

binlog-do-db=mysql   #需要同步的數據庫,

2、保存並重啓mysql服務

3、設置讀鎖

mysql> flush tables with read lock;

mysql> flush privileges;

4、查看當前二進制日誌名和偏移量值,從庫按這個點開始進行數據恢復,之前的數據需要人工同步

[root@localhost ~]# mysql -uroot -p123456

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000005 |      409 | mysql         |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

5.刷新日誌

mysql>flush logs;  #因爲刷新日誌file的位置會+1,即File變成爲:mysql-bin.000006

                   (很多問題出在這一步)

6、解除讀鎖

mysql> unlock tables;

7、在主服務器上爲從服務器創建一個用於同步的用戶

mysql>grant replication slave on *.* to u01@'192.168.202.%' identified by '123456';

此種方式做同步,這一步是必須要做的或者是已經授權過的,不然下面會   報錯

二、從服務器配置


1、編輯/etc/my.cnf文件在mysqld下添加以下字段

server-id=132         #從服務器標識

log-bin=mysql-bin   #與主服務器一致

replicate-do-db=mysql  #同步的數據庫

relay-log=relay_log    #

2、保存並重啓mysql服務

3、[root@localhost ~]# mysql -uroot -p123456

mysql>slave stop;#停止slave同步進程

#執行同步語句

mysql>  change master to master_host='192.168.202.131',

    ->     -> master_user='root',

    ->     -> master_password='123456',

->     -> master_log_file='mysql-bin.000006',

#保持與主服務信息一致(因爲在主服務器上已經刷新,所以file位置要加1)

->     -> master_log_pos=409;   #保持主服務信息一致

mysql> start slave  #開啓slave同步進程

mysql> show slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

以上這兩個參數的值爲Yes,即說明配置成功!

三、  驗證測試

1、在主庫中新增一張表,添加測試數據

2、查看從庫中是否完成同步

四:報錯信息整改;

1、

Got fatal error 1236 from master when reading data from binary log: 'Client requested

master to start replication from impossible position'

主從的log-pos沒有正確配好

2、

error reconnecting to master '[email protected]:3306' - retry-time: 60

連不通主機,確認是否有sql服務或者是否關閉防火牆

3、

啓動從時報錯:

mysql> start slave;

ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

      原因:日誌認證有問題

       執行:mysql> reset slave,然後重新把以上sql語句寫上去

五、

1、主從同步,經測試,是單向的,只有master數據庫裏面的東西能同步到slave,反之則不行

2.master重啓sql服務對同步無影響

3.這種方式的同步,數據庫內容不一致也可進行同步

4.主機和備機重啓,不影響同步


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