一、两台服务器都作相应配置:
#mkdir -p /data/db/mysql
#cp /usr/local/share/mysql/my-small.cnf /etc/my.cnf
#chown -R mysql:mysql /data/db/mysql/
#vi /usr/local/etc/rc.d/mysql-server
修改mysql_dbdir="/data/db/mysql"
#vi /etc/rc.conf
加入mysql_enable="YES"
二、互备配置:
dbA:
#/usr/local/bin/mysql -uroot -p
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'%' IDENTIFIED BY 'backup';
CREATE DATABASE `sync_db`;
#vi /etc/my.cnf
加上:
server-id = 1
log-bin=db1-mysql-bin
relay-log=db1-relay-bin
binlog-do-db=sync_db
replicate-do-db=sync_db
dbB:
#/usr/local/bin/mysql -uroot -p
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'%' IDENTIFIED BY 'backup';
CREATE DATABASE `sync_db`;
#vi /etc/my.cnf
加上:
server-id = 2
log-bin=db2-mysql-bin
relay-log=db2-relay-bin
binlog-do-db=sync_db
replicate-do-db=sync_db
两台服务都重启Mysql
/usr/local/etc/rc.d/mysql-server stop
/usr/local/etc/rc.d/mysql-server start
dbA:
#/usr/local/bin/mysql -uroot -p
CHANGE MASTER TO
MASTER_HOST='192.168.100.52',
MASTER_USER='backup',
MASTER_PASSWORD='backup',
MASTER_LOG_FILE='db2-mysql-bin.000001',
MASTER_LOG_POS=107;
dbB:
#/usr/local/bin/mysql -uroot -p
CHANGE MASTER TO
MASTER_HOST='192.168.100.51',
MASTER_USER='backup',
MASTER_PASSWORD='backup',
MASTER_LOG_FILE='db1-mysql-bin.000001',
MASTER_LOG_POS=107;
### MASTER_LOG_FILE, MASTER_LOG_POS 是通过另外一台服务器的 show master status; 来获取的。
三、其它相关命令:
RESET MASTER;
SHOW MASTER STATUS;
SHOW MASTER LOGS;
RESET SLAVE;
SHOW SLAVE HOSTS;
SHOW SLAVE STATUS;
START SLAVE;
STOP SLAVE;
四、解决自增长ID重复问题
我们只要保证两台服务器上插入的自增长数据不同就可以了
如:dbA查奇数ID,dbB插偶数ID,当然如果服务器多的话,你可以定义算法,只要不同就可以了
在这里我们在dbA,dbB上加入参数,以实现奇偶插入
dbA:my.ini上加入参数
auto_increment_offset = 1
auto_increment_increment = 2
这样dbA的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID了
dbB:my.ini上加入参数
auto_increment_offset = 2
auto_increment_increment = 2
这样dbB的auto_increment字段产生的数值是:2, 4, 6, 8, …等偶数ID了
可以看出,你的auto_increment字段在不同的服务器之间绝对不会重复,所以Master-Master结构就没有任何问题了。