一检眯、首先裝好兩臺MySQL,然后在/etc/my.cnf中增加配置棉安。
在MySQL服務(wù)器1中攻晒,添加如下配置:
server-id=1 #服務(wù)器的標(biāo)識
log-bin=mysql-bin
binlog-ignore-db=mysql,information_schema
auto-increment-increment=2
auto-increment-offset=1 #奇數(shù)id
slave-skip-errors=all
log_bin_trust_function_creators=1
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
在MySQL服務(wù)器2中,添加如下設(shè)置:
server-id=2 #服務(wù)器的標(biāo)識
log-bin=mysql-bin
binlog-ignore-db=mysql,information_schema
auto-increment-increment=2
auto-increment-offset=2 #偶數(shù)id
slave-skip-errors=all
log_bin_trust_function_creators=1
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
在這里兩臺MySQL的配置文件奏瞬,需要對auto_increment_offset字段枫绅,設(shè)定不同值。因?yàn)槿绻鹠ysql中有自增長字段硼端,不設(shè)定這個(gè)參數(shù)會(huì)起沖突并淋,會(huì)報(bào)duplicate....的報(bào)錯(cuò)。
auto_increment_offset表示自增長字段從那個(gè)數(shù)開始珍昨,他的取值范圍是1 .. 65535
auto_increment_increment表示自增長字段每次遞增的量县耽,其默認(rèn)值是1,取值范圍是1 .. 65535
做主主同步配置時(shí)镣典,需要將兩臺服務(wù)器的auto_increment_increment增長量都配置為2兔毙,而要把a(bǔ)uto_increment_offset分別配置為1和2,這樣可以避免兩臺服務(wù)器同時(shí)做更新時(shí),自增長字段的值之間發(fā)生沖突兄春。
配置好兩臺mysql的my.cnf配置文件后澎剥,service mysqld restart 重啟mysql服務(wù)。
二神郊、最后我們在MySQL命令行中設(shè)定賬號和同步的日志節(jié)點(diǎn)。
在Mysql服務(wù)器1中趾唱,
mysql -u root -p
#設(shè)置用于數(shù)據(jù)同步的賬號涌乳,默認(rèn)不適用root賬號。
grant replication slave on *.* to '數(shù)據(jù)同步賬號'@'%' identified by '密碼';
#輸入如下命令甜癞,記錄下file和position的值
show master status
在MySQL服務(wù)器2中夕晓,做如上同樣的操作,然后將服務(wù)器1的file和position值設(shè)定到服務(wù)器2中悠咱,服務(wù)器2的file和position值輸入到服務(wù)器1中蒸辆。
在MySQL服務(wù)器1中,輸如下命令:
stop slave;
change master to master_host='服務(wù)器2的IP',master_port=服務(wù)器2的的端口號,master_user='服務(wù)器2的數(shù)據(jù)同步賬號',master_password='服務(wù)器2的密碼',master_log_file='服務(wù)器2的file值',master_log_pos=服務(wù)器2的position值 ;
start slave;
在MySQL服務(wù)器2中析既,輸如下命令:
stop slave;
change master to master_host='服務(wù)器1的IP',master_port=服務(wù)器1的的端口號,master_user='服務(wù)器1的數(shù)據(jù)同步賬號',master_password='服務(wù)器1的密碼',master_log_file='服務(wù)器1的file值',master_log_pos=服務(wù)器1的position值 ;
start slave;
范例如下圖:
配置完后躬贡,分別在兩臺服務(wù)器上輸show slave status ;
如果出現(xiàn)如下兩個(gè)字段都是on的狀態(tài),則主主備份搭建完成眼坏。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
在實(shí)際測試配置中拂玻,由于MySQL服務(wù)器2是克隆的MySQL服務(wù)器1的,所以start slave 后,show slave status 出現(xiàn)了Slave_IO_Running: No ,然后有如下報(bào)錯(cuò)信息檐蚜。告知是因?yàn)閮蓚€(gè)MySQL服務(wù)器的UUID相重復(fù)了魄懂。
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
只需要,將basedir,即/use/local/mysql/data中的auto.cnf文件刪掉后闯第,重啟mysql市栗,就會(huì)出現(xiàn)新的auto.cnf文件,里面有新的UUID