本身的虛擬機環境;mysql
master:192.168.202.131sql
slave ;192.168.202.132數據庫
1、 主服務器配置服務器
一、編輯/etc/my.cnf文件在mysqld下添加如下字段ide
server-id=131 #主服務器標識,主要是惟一性,沒什麼限制測試
log-bin=mysql-bin #指定二進制日誌文件的名稱spa
binlog-do-db=mysql #須要同步的數據庫,日誌
二、保存並重啓mysql服務server
三、設置讀鎖進程
mysql> flush tables with read lock;
mysql> flush privileges;
四、查看當前二進制日誌名和偏移量值,從庫按這個點開始進行數據恢復,以前的數據須要人工同步
[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
(不少問題出在這一步)
六、解除讀鎖
mysql> unlock tables;
七、在主服務器上爲從服務器建立一個用於同步的用戶
mysql>grant replication slave on *.* to u01@'192.168.202.%' identified by '123456';
此種方式作同步,這一步是必需要作的或者是已經受權過的,否則下面會 報錯
2、從服務器配置
一、編輯/etc/my.cnf文件在mysqld下添加如下字段
server-id=132 #從服務器標識
log-bin=mysql-bin #與主服務器一致
replicate-do-db=mysql #同步的數據庫
relay-log=relay_log #
二、保存並重啓mysql服務
三、[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,即說明配置成功!
3、 驗證測試
一、在主庫中新增一張表,添加測試數據
二、查看從庫中是否完成同步
四:報錯信息整改;
一、
Got fatal error 1236 from master when reading data from binary log: 'Client requested
master to start replication from impossible position'
主從的log-pos沒有正確配好
二、
error reconnecting to master 'root@192.168.202.131:3306' - retry-time: 60
連不通主機,確認是否有sql服務或者是否關閉防火牆
三、
啓動從時報錯:
mysql> start slave;
ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
緣由:日誌認證有問題
執行:mysql> reset slave,而後從新把以上sql語句寫上去
5、
一、主從同步,經測試,是單向的,只有master數據庫裏面的東西能同步到slave,反之則不行
2.master重啓sql服務對同步無影響
3.這種方式的同步,數據庫內容不一致也可進行同步
4.主機和備機重啓,不影響同步