1. 程式人生 > >mysql5.7配置主從同步、windows主和linux從

mysql5.7配置主從同步、windows主和linux從

1、下載mysql


2、master配置

windows修改E:\ProgramData\MySQL\MySQL Server 5.7目錄的my.ini檔案:
# master服務唯一標識
server-id = 1
# 二進位制同步資料檔案
log-bin = mysql-bin
basedir = E:/Program Files/MySQL/MySQL Server 5.7/
datadir = E:/ProgramData/MySQL/MySQL Server 5.7/Data/
binlog-do-db = test 
# binlog-do-db和binlog-ignore-db只需指定一個
# binlog-ignore-db=mysql

配置完,計算器管理服務中重啟mysql

使用navicat或sqlyog連線mysql,新建一個使用者專用於slave連線:

create user 'slave'@'192.168.229.129' identified by '123456';

192.168.229.129是centos的ip,表示只有該客戶端可以使用slave進行連線;

然後給slave主從同步操作授權:

grant replication slave on *.* to 'slave'@'192.168.229.129' identified by '123456';

flush privileges;

測試的話可直接用root使用者,跳過使用者建立,直接授權:

grant replication slave on *.* to 'root'@'%' identified by 'root';

flush privileges;

%表示任何客戶端都可以用root使用者連線。

檢視master狀態資訊:show master status;


記錄File和Position

3、slave配置

編輯:vi /etc/my.cnf

[mysqld]節點下新增:
# slave服務的唯一標識,2至32,保證和master不一樣
server-id=2 
# 指定要同步的資料庫,replicate-do-db和replicate-ignore-db二選一
replicate-do-db=test
# 指定不要同步的資料庫
# replicate-ignore-db=mysql 

重啟slave:service mysql restart

注意關閉防火牆或開放3306埠

登入slave配置同步master資訊:

change master to master_host="127.0.0.1",
master_user="root",
master_password="root",
master_port=3306,
master_log_file="mysql-bin.000002",
master_log_pos=154;

master_log_file和master_log_pos是在master中用show master status;檢視的資訊

開啟同步:start slave;

檢視同步狀態:show slave status;(linux終端:show slave status \G)


圖中IO和SQL都是Yes表示同步狀態正常

4、測試

在兩個伺服器中分別建立test資料庫,在mater的test上新建一個表girl,slave中自動增加一個相同的表girl,

master上往girl中插入更新刪除資料,slave中同步進行

5、其他

①、檢視同步狀態時,如果IO和SQL有一個為No,說明同步異常,可以到/usr/local/mysql/data/bogon.err中檢視錯誤日誌資訊,沒有可以my.cng中指定:/usr/local/mysql/data/bogon.err,重啟,根據錯誤日誌解決後重新設定slave同步資訊,start slave即可

③、從舊資料庫old_db中同步已有資料到slave中:

  • master的my.ini中增加:binlog-do-db=old_db
  • 重啟master服務,鎖定所有表:flush tables with read lock;
  • 檢視狀態:show master status; 記錄File和Position
  • 將master中的data目錄下old_db資料夾拷貝到slave的data目錄中
  • 編輯slave的my.cnf,新增:replicate-do-db=old_db
  • 重啟slave服務:service mysql restart
  • 重新設定slave同步資訊:
  • stop slave;
  • change master to master_host="127.0.0.1",master_user="root",master_password="root",master_port=3306,
       master_log_file="mysql-bin.000002",master_log_pos=154;
  • start slave;
  • show slave status;狀態正常
  • 解鎖master表:unlock tables;