Mysql主主同步配置-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

Mysql主主同步配置

简介:

一、环境

192.168.1.1  MysqlA

192.168.1.2    MysqlB


二,安装配置

1.安装mysql省略,MysqlA和MysqlB版本保持一致就可以了!

2.配置mysql


1)在两台机器上给对方授权

MysqlA

1
2
GRANT all privileges ON *.* TO root@192.168.1.2 IDENTIFIED BY '123456';
flush privileges;

MysqlB

1
2
GRANT all privileges ON *.* TO root@192.168.1.1 IDENTIFIED BY '123456';
flush privileges;


2)配置主配置文件


在MysqlA上

1
2
3
4
5
6
7
8
9
10
11
[mysqld]
server-id = 1
log-bin = mysql-bin
log-slave-updates
auto-increment-increment = 2
auto-increment-offset = 1
#要同步的库名
#replicate-do-db = test
#忽略mysql数据库的同步
replicate-ignore-db=mysql
#replicate-ignore-db=test


在MysqlB上

1
2
3
4
5
6
7
8
9
10
11
[mysqld]
server-id = 2
log-bin = mysql-bin
log-slave-updates
auto-increment-increment = 2
auto-increment-offset = 2
#要同步的库名
#replicate-do-db = test
#忽略mysql数据库的同步
replicate-ignore-db=mysql
#replicate-ignore-db=test


注:二库都只有server-id不同和auto-increment-offset不同:

   auto-increment-offset是用来设定数据库中自动增长的起点的,回为这两能服务器都设定了一次自动增长值2,所以它们的起点必须得不同,这样才能避免两台服务器数据同步时出现主键冲突

   replicate-do-db 指定同步的数据库,我们只在两台服务器间同步test数据库

另:auto-increment-increment的值应设为整个结构中服务器的总数,本案例用到两台服务器,所以值设为2


配置完成后,重启两台数据库

service mysqld restart

/etc/init.d/mysql restart


3)同步两台数据库


分别在两台数据库中,执行下命令,查看potion,以及binlog。

MysqlA上面执行


mysql> show master status;

       +------------------+----------+--------------+------------------+

       | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

       +------------------+----------+--------------+------------------+

       | mysql-bin.000001 |   107|              |                  |

       +------------------+----------+--------------+------------------+

       1 row in set (0.00 sec)


MysqlB上面执行

mysql> show master status;

       +------------------+----------+--------------+------------------+

       | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

       +------------------+----------+--------------+------------------+

       | mysql-bin.000001 |    107 |              |                  |

       +------------------+----------+--------------+------------------+

       1 row in set (0.00 sec)


##在 MysqlA 上

1
2
3
#stop slave;
CHANGE MASTER TO master_host='192.168.1.2', master_user='root', master_password='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
start slave;

##在 MysqlB 上

1
2
3
stop slave;
CHANGE MASTER TO master_host='192.168.1.1', master_user='root', master_password='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
start slave;


##分别查看两台数据库的slave状态。


1
mysql> show slave status\G;


结果:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes


都为yes就说明已经配置成功了


4)验证mysql主主

在MysqlA的mysqldb数据库中

1
2
create database test;
create table test (name varchar(15) not null,city varchar(15) not null,birth date not null);


在MysqlB的mysqldb数据库中能够查看到该表

1
mysql> show tables;

   +----------------+

   | Tables_in_test |

   +----------------+

   | test           |

   +----------------+

   1 row in set (0.00 sec)


在MysqlB中向表test插入数据

1
insert into test values ("aa","bb","2012-05-16");
1
mysql> select from test;

   +------+----------+------------+

   | name | city     | birth      |

   +------+----------+------------+

   | aa   | bb       | 2012-05-16 |

   +------+----------+------------+

   1 row in set (0.00 sec)


到此验证完毕.


本文转自birdinroom 51CTO博客,原文链接:http://blog.51cto.com/birdinroom/1403876,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: