参考:
http://blog.csdn.net/mr__fang/article/details/8692480
http://www.2cto.com/database/201201/116756.html
http://blog.csdn.net/gzq_qiang/article/details/6988975
http://blog.csdn.net/shiqidide/article/details/7254035
软件:
MySQL-server-5.6.29-1.el6.x86_64.rpm
MySQL-client-5.6.29-1.el6.x86_64.rpm
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm
操作系统:
CentOS6.5_x64
服务器:
192.168.1.20 (master1)
192.168.1.21 (master1)
安装配置:
不介绍怎么安装了,看02-02-Linux上搭建各种软件开发环境笔记
测试只同步test库,master版本一定要>=slave版本
mysql> SELECT VERSION();
配置文件及解释:
#######################配置master-master1#######################
user=mysql
log-bin=mysql-bin
#指定自己编号,一个集群中id唯一
server-id=1
#要同步的数据库,通过二进制日志同步,所以这里提示"要记录二进制日志的数据库"
binlog-do-db=test
#和binlog-do-db=test对应;如果要同步多个库,这两项参数多个几个就行了.
replicate-do-db=test
#指定哪些库不同步,mysql库肯定不能同步,毕竟每个库上面的用户信息和参数不同
binlog-ignore-db=mysql
#同上面忽略记录日志的库一一对应;是不要记录日志的数据库名,多个数据库中间用逗号(,)隔开
replicate-ignore-db=mysql
#表示如果一个MASTER挂掉的话,另外一个马上接管
log-slave-updates
#跳过同步过程中sql错误
slave-skip-errors=all
#开启同步
sync_binlog=1
#自增主键,每次+2
auto_increment_increment=2
#自增主键,从1开始,每次+2
auto_increment_offset=1
#######################EOF######################################
#######################配置master-master2#######################
user=mysql
log-bin=mysql-bin
#指定自己编号,一个集群中id唯一
server-id=2
#要同步的数据库,通过二进制日志同步,所以这里提示"要记录二进制日志的数据库"
binlog-do-db=test
#和binlog-do-db=test对应;如果要同步多个库,这两项参数多个几个就行了.
replicate-do-db=test
#指定哪些库不同步,mysql库肯定不能同步,毕竟每个库上面的用户信息和参数不同
binlog-ignore-db=mysql
#同上面忽略记录日志的库一一对应;是不要记录日志的数据库名,多个数据库中间用逗号(,)隔开
replicate-ignore-db=mysql
#表示如果一个MASTER挂掉的话,另外一个马上接管
log-slave-updates
#跳过同步过程中sql错误
slave-skip-errors=all
#开启同步
sync_binlog=1
#自增主键,每次+2
auto_increment_increment=2
#自增主键,从1开始,每次+2
auto_increment_offset=2
#表示从mysql服务器启动时不启动同步线程,这就要在启动从服务器之后,手工启动同步线程,在mysql> 提示符下面运行“start slave”就可以
skip-slave-start
#######################EOF######################################
重启2台MySQL服务器.
#master1
$ mysql -uroot -p
mysql> grant replication slave on *.* to ‘replication‘@‘%‘ identified by ‘replication‘; #在master1上创建一个用户用于同步
mysql> flush privileges;
mysql> show master status;
mysql> show processlist; #查看同步线程
#master2
$ mysql -uroot -p
#master_log_file和master_log_pos的值是上一步在master上查出来的,
mysql> change master to master_host=‘192.168.1.20‘,master_user=‘replication‘,master_password=‘replication‘,master_log_file=‘mysql-bin.000001‘,master_log_pos=406;
mysql> start slave;
mysql> show slave status;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> grant replication slave on *.* to ‘replication‘@‘%‘ identified by ‘replication‘;
mysql> flush privileges;
mysql> show master status;
mysql> show processlist;
#测试同步数据
###master1
mysql> use test;
mysql> CREATE TABLE IF NOT EXISTS users (id integer UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,NAME varchar(100) NOT NULL UNIQUE,passwd varchar(100));
mysql> show tables; #此时再master2也可以看到该表
mysql> insert into users values(1,‘1‘,‘1‘);
mysql> select * from users;
###master2
mysql> show tables;
mysql> select * from users;
mysql> insert into users values(2,‘2‘,‘2‘);
mysql> select * from users;