一、前言
Mysql Replication作爲讀寫分離的廉價解決方案,支持一主多備的方式進行數據存儲,採用二進制日誌傳送,目前存在着廣泛應用,網上相關概念也比較多,不再重複介紹。引用一張官方提供的Replication應用場景圖片(http://dev.mysql.com/doc/refman/5.1/en/replication-solutions.html)。本文主要記錄了基於Linux環境下的Mysql Replication配置步驟。
二、環境準備
IP_PORT | OS | Mysql | |
Master | 10.129.221.14:3306 | CentOS 6.5 | 5.1.73 |
Slave | 10.129.221.16:3306 | CentOS 6.5 | 5.1.73 |
Slave | ... |
三、在Master和Slave上分別開啓root用戶遠程訪問,並設置root用戶密碼,默認爲空
mysql> use mysql; mysql> update user set host = '%' where host ='127.0.0.1' and user = 'root'; mysql> update user set password = PASSWORD('glf_123') where user = 'root'; mysql> flush privileges;
四、在Master數據庫上創建一個repl用戶並進行授權,用於slave機器訪問master數據庫
mysql> create user 'repl'@'%' identified by 'glf_123'; mysql> grant replication slave on *.* to 'repl'@'%' identified by 'glf_123'; mysql> flush privileges;
修改後的user表數據如下:
五、在Master服務器上創建一個TestDB數據庫,用於Replication
六、修改Master數據庫的數據庫配置(/etc/my.cnf),開啓數據庫二進制日誌記錄
[mysqld] server-id=1 # 唯一ID log-bin=mysql-bin # 指定日誌文件 binlog-do-db=TestDB # 需要同步的數據庫 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
七、重啓Master數據庫
[root@VM-CentOS /]# service mysqld restar
八、檢查Master庫的Master狀態
mysql> SHOW MASTER STATUS;
顯示結果如下:
九、修改Slave數據庫配置(/etc/my.cnf)
[mysqld] server-id=2 # 唯一ID read_only=1 # 設置Slave庫只讀 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
十、重啓Slave數據庫
[root@VM-CentOS /]# service mysqld restart
十一、設置slave節點replication指向master,在Slave庫執行change master command
change master to master_host='10.129.221.14', master_user='repl', master_password='glf_123', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=0, master_connect_retry=10;
master_log_file表示Master數據庫中的log文件名,通過SHOW MASTER STATUS查詢;
master_log_pos 表示需要同步的二進制偏移量 ,0表示全部重新同步;
第八步中SHOW MASTER STATUS查詢顯示的是當前Position;
十二、在Salve服務器啓用slave模式
mysql> start slave;
十三、查看replication的執行情況、以及相關處理Process
mysql> SHOW SLAVE STATUS \G; mysql> show processlist \G;