MySQL主從同步及讀寫分離

主服務器ip:192.168.8.102,從服務器ip:192.168.8.103html

1、主庫(master)配置mysql

1.修改mysql.ini配置文件,在mysqld下添加以下配置,並重啓mysql服務sql

[mysqld]
server-id=1  //主庫和從庫要不一致
log-bin=mysql-bin
binlog-do-db=mstest_db   //同步數據庫,要與從庫裏配置的數據庫名保持一致   能夠添加多個

2.驗證配置是否成功數據庫

a.經過「SHOW VARIABLES LIKE 'server_id';」命令查看服務器

 

 b.查看主庫的狀態,其中file和position在從庫配置中會用到,注意每次修改主庫的mysql.ini文件,file和position參數都會變分佈式

 

 3.受權給從服務器(slave)同步數據的帳號密碼測試

GRANT REPLICATION SLAVE ON *.*TO 'root'@'192.168.8.103' IDENTIFIED BY '123456';

參數說明:spa

  • root:從庫鏈接主庫使用的帳號
  • IDENTIFIED BY '123456':從庫鏈接主庫使用的密碼
  • 192.168.8.103:從庫服務器ip

主庫(master)配置完成3d

 

2、從庫(slave配置)code

1.修改mysql.ini配置文件,在mysqld下添加以下配置,並重啓mysql服務

[mysqld]
server-id=2  //與主庫不能相同
log-bin=mysql-bin
slave-net-timeout=60  //重連時間
replicate-do-db=mstest_db  //同步數據庫  要與主庫裏配置的數據庫名保持一致

說明:將主庫中須要同步的數據庫導入到從庫,也能夠新建,但必須保證數據庫名、表名、字段名、數據類型所有保持一致,主從數據庫保持一致

2.在從服務器上設置同步命令

-- 中止從庫
stop slave; 
-- 設置同步 
b.master_host='192.168.8.102',master_port=3306,master_user='root',master_password='123456',master_log_file='mysql-bin.000009',master_log_pos=1119;
--  開啓從庫
start slave  

 若是在執行第二步命令時出錯「Could not initialize master info structure, more error messages can be found in the MySQL error log」,能夠先執行「reset slave;」重置從庫命令便可。

3.檢測主從是否打通

執行「show slave status」命令,查看「 Slave_IO_Running 」和「 Slave_SQL_Running 」是否都爲yes。都爲yes即標識主從同步

  

從庫(slave)配置完成

 

 3、測試主從是否同步

主數據庫user字段格式以下,從數據庫也須與主數據庫格式一致

 

 在主數據庫中插入一條數據,並查詢

INSERT INTO user (id,name,age) VALUES (null,'aabb',111);

select * from user;

 

 在主庫添加以後,再到從數據庫中查看,數據是否同步到從庫

select * from user;

 

 能夠看到在主庫添加的數據,在從庫裏也能查詢到,說明主從同步成功。

須要注意幾點:

  1. 配置主從數據庫mysql.ini文件時,同步的數據庫要保持一致,兩個數據庫的表名、字段、類型都要保持一致,最好從主庫導出,再導入到從庫
  2. 主從庫的server-id不能相同
  3. 在從庫中設置同步時,若是報錯,能夠先reset slave重置從庫

關於如何在ThinkPHP5運用,能夠參看ThinkPHP5分佈式數據庫讀寫分離

相關文章
相關標籤/搜索