1.主服務器 172.16.20.228
備份 mysqldump -uroot -p123 --all-databases > /bak/all.sql
將全備拷貝到從機,而且從機恢復數據 scp root@172.16.20.228:/bak/all.mysql /bak/mysql //在從服務器中cp主服務器的all.sql文件
在從服務器172.16.20.233 // 回覆數據(mysql -uroot -p123 < /bak/all.sql)mysql
2.在配置文件 /etc/my.cnf 中 mysqld 下 加一句 log-bin
server-id=1
mysqld --user=mysql --log-error=/tmp/mysql.log --log-bin --server-id=1 //開啓二進制日誌
或
開啓binlog日誌
vim /etc/my.cnf
[mysqld]
log-bin=master
log-bin-index=master
server-id=1sql
3.受權B服務器 能夠傳輸binlog日誌
grant replication slave on *.* to slave@'172.16.20.233' identified by '123';數據庫
從服務器
B ip 172.16.20.233
1.測試slave是否能正常連接
mysql -u slave -p123 -h 172.16.20.228vim
2.拷貝A服務器的全備,而且恢復
scp 172.16.20.228:/bak/all.sql /bak/all.sql
mysql -u root -p123 < /root/all.sql服務器
3.配置A服務器鏈接地址及用戶信息
vim /etc/my.cnf
[mysqld]
server-id=2
4.
mysql> flush logs;
Query OK, 0 rows affected (0.08 sec)異步
mysql> show master status\G;
*************************** 1. row ***************************
File: localhost-bin.000004
Position: 154
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)ide
ERROR:
No query specified工具
在主服務器 show master status\G;測試
登陸從服務器 mysql -uroot -p123
stop slave;
change master to master_host='172.16.20.228',master_user='slave',master_password='123',master_port=3306, master_log_file='localhost-bin.000004',master_log_pos=154;
此處爲主服務器show master status 內的內容
start slave;
5. show slave status\G
Relay_Master_Log_File: localhost-bin.000004
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
主服務器作出數據改動 查看從服務器是否有同步的變化
===============================================
mysqlbinlog --no-defaults mysql-bin.000002 //看 log-bin 日誌
================================================日誌
主從注意事項
在master上提交事務後,而且寫入binlog,返回事務成功標記;
將binlog發送到slave,轉儲成relay log;
在slave上再將relay log讀取出來應用。
步驟1和步驟3之間是異步進行的,無需等待確認各自的狀態,因此說MySQL replication是異步的。
MySQL semi-sync replication在以前的基礎上作了增強完善
=============================================================================
有的時候主從同步有問題了之後,須要從log位置的下一個位置進行同步,至關於跳過那個錯誤,這時候也可使用CHANGE MASTER命令來處理,只要找到對應的LOG位置就能夠,好比:
CHANGE MASTER TO MASTER_HOST='10.1.1.75',MASTER_USER='replication',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=106;
START SLAVE;
==================================================================
MYSQL主從同步的管理經驗介紹
1. 不要亂使用SQL_SLAVE_SKIP_COUNTER命令。
這個命令跳過以後極可能會致使你的主從數據不一致,必定要先將指定的錯誤記錄下來,而後再去檢查數據是否一致,尤爲是核心的業務數據。2. 結合percona-toolkit工具pt-table-checksum按期查看數據是否一致。這個是DBA必需要按期作的事情,呵呵,有合適的工具何樂而不爲呢?另外percona-toolkit還提供了對數據庫不一致的解決方案,能夠採用pt-table-sync,這個工具不會更改主的數據。還可使用pt-heartbeat來查看從服務器的複製落後狀況。3. 使用replicate-wild-ignore-table選項而不要使用replicate-do-db或者replicate-ignore-db。緣由已經在上面作了說明。 4. 將主服務器的日誌模式調整成mixed5. 每一個表都加上主鍵,主鍵對數據庫的同步會有影響尤爲是居於ROW複製模式。