假設兩臺機器 ip 分別為 機器一: 192.168.14.37 機器二: 192.168.14.38 ,服務器 為 linux Rhel 5.9
在兩臺服務器中執(zhí)行創(chuàng)建用戶語句:
mysql:>create user 'repl'@'%' identified by '135246'; -- 創(chuàng)建用戶 repl 密碼 135246
服務器一執(zhí)行:
mysql:>grant replication client,replication slave on *.* to 'repl'@'192.168.14.38' identified by '135246'; -- 授權服務器一可以遠程訪問服務器二
服務器二執(zhí)行:
mysql:>grant replication client,replication slave on *.* to 'repl'@'192.168.14.37' identified by '135246'; -- 授權服務器二可以遠程訪問服務器一
驗證(根據(jù)提示輸入密碼):
在服務器一上連接服務器二
mysql -h 192.168.14.38 -u repl -p
在服務器二上連接服務器一
mysql -h 192.168.14.37 -u repl -p
查看 mysql :
首先:vi /etc/my.cnf
在服務器1, 添加如下內(nèi)容:
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] server_id = 1 log-bin character-set-server=utf8 #表名不區(qū)分大小寫 lower_case_table_names=1 #server_id = 1 # uniquely identify 從為2 show master status
可以得到服務器一和服務器二的 MASTER_LOG_FILE 和 MASTER_LOG_POS 信息,
假設服務器一為 " localhost-bin.000004" 和 "120" 服務器二為 " localhost-bin.000005" 和 "667"
在服務器一上執(zhí)行:
stop slave; CHANGE MASTER TO MASTER_HOST = '192.168.14.38', MASTER_USER = 'repl', MASTER_PASSWORD = '135246', MASTER_LOG_FILE = 'localhost-bin.000004', MASTER_LOG_POS = 120; start slave;
在服務器二上執(zhí)行:
stop slave; CHANGE MASTER TO MASTER_HOST = '192.168.14.37', MASTER_USER = 'repl', MASTER_PASSWORD = '135246', MASTER_LOG_FILE = 'localhost-bin.000005', MASTER_LOG_POS = 667; start slave;
最后驗證主主同步是否成功:
在服務器一 mysql 添加 表 example
mysql:> create database example1 ; use example1; create table example1 (length int);
最后在服務器二查看是否有此數(shù)據(jù)庫,此表,和此條數(shù)據(jù).
查看同步狀態(tài) :show slave status G
如果出錯,可以看到出錯日志。
錯誤導致同步失敗參考mysql slave-skip-errors=all 深層理解
注意: 設置 double master 之前的數(shù)據(jù),兩個服務器不會同步;
推薦學習:《mysql視頻教程》