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,
- start slave;
- show slave status;狀態正常
- 解鎖master表:unlock tables;