MySQL架構實戰1--主主複製

#MySQL實戰–主主複製

1 開啓二進制複製

  1. 關閉MySQL服務
service mysqld stop
  1. 添加配置
vi /etc/my.cnf

添加以下內容:

log-bin=mysql-bin1  # 二進制文件名
server-id=1   # 服務器id,唯一
binlog-format=mixed #二進制日誌格式,有row、statement、mixed三種格式,
#row指的是把改變的內容複製過去,而不是把命令在從服務器上執行一遍,
#statement指的是在主服務器上執行的SQL語句,在從服務器上執行同樣的語句。
#MySQL默認採用基於語句的複製,效率比較高。mixed指的是默認採用基於語句
#的複製,一旦發現基於語句的無法精確的複製時,就會採用基於行的複製。
binlog-do-db=database   #同步的數據庫名稱

另一臺

log-bin=mysql-bin2
server-id=2
binlog-format=mixed
binlog-do-db=database

######注:
######1. server-id必須是唯一的,每臺機器不同。
######2. 如果你不設置server_id(或者顯式地將其設置爲默認值0),主服務器將拒絕從從節點獲得任何連接。
######3. 在複製設置中獲得最大的持久性和一致性,對於事務請使用InnoDB,您應該使用innodb_flush_log_at_trx_commit=1和sync_binlog=1在主節點my.cnf文件中設置。
######4. 確保您的複製母版上沒有啓用skip_networking系統變量。如果網絡已被禁用,則從服務器無法與主服務器通信,並且複製失敗。

2 創建用於複製的用戶

創建一個僅用於複製進程的用戶,官方示例:

mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com';

實戰使用:

mysql> CREATE USER 'repl'@'從節點ip' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'從節點ip';

3 執行初始化腳本

  1. 建庫
  2. 建表
    ######注:使用這種方式最簡單,否則還要使用其他備份策略進行操作,提高了運維工作量。請按自己的情況使用。

4 查看主節點當前日誌位置

查看複製起點,在主節點上查看:

mysql> FLUSH TABLES WITH READ LOCK;  # 鎖住表,保證同步期間不會出現數據修改
mysql > SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin1.000001 | 619       | test         | manual,mysql   |
+------------------+----------+--------------+------------------+

######注:如果能夠保證執行執行同步時,不會有客戶端進行寫操作,可以不用鎖(不建議)。

5 設置複製(從)

得到的日誌座標,寫在下面命令的master_log_pos屬性上。

mysql> CHANGE MASTER TO
    -> master_host='主IP',
    -> master_port=3306,
    -> master_user='repl',
    -> master_password='password',
    -> master_log_file='mysql-bin1.000001',
    -> master_log_pos=619;

6 啓動和檢查(從)

mysql> start slave;
mysql> show slave status\G; # Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes 即成功

7 主節點釋放鎖

mysql> unlock tables;

8 測試

往主節點中修改數據,去從節點中查詢修改後的數據,驗證主備是否真正成功。

9 按照同樣的方法配主

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