您的位置:首页 > 数据库 > MySQL

MySQL主主复制

2015-03-15 20:47 459 查看

主动-主动模式的Master-Master(Master-Master in Active-Active Mode)

Master-Master复制也叫双主服务器复制或双向复制,包含两台服务器,既是master,又是另一台服务器的slave。这样,任何一方所做的变更,都会通过复制应用到另外一方的数据库中。
修改配置文件
db1
===========================================================
server_id  = 31
log-bin = mysql-info
auto_increment_increment=2
auto_increment_offset=1
log_slave_updates = 1
===========================================================

db2
===========================================================
server_id  = 32
log-bin = mysql-info
auto_increment_increment=2
auto_increment_offset=2
log_slave_updates = 1
===========================================================

创建复制用户,两台均执行
mysql> grant replication slave on *.* to 'repluser'@'192.168.90.%' identified by 'mypass';

查看指定同步位置,两台均执行
mysql> show master status ;

mysql> change master to master_host=host,master_user='repluser',master_password='mypass',
-> master_log_file='master_log_file',master_log_pos=master_log_file_pos;

启动查看复制正常运行
mysql> start slave;

mysql> show slave status \G
...
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...

验证主主复制
[db1]
mysql> create table mm(id int(11) primary key auto_increment,name varchar(10));
mysql> insert into mm value(null,'db1'),(null,'db1'),(null,'db1');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

[db2]
mysql>  insert into mm value(null,'db2'),(null,'db2'),(null,'db2');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from mm;
+----+------+
| id | name |
+----+------+
|  1 | db1  |
|  3 | db1  |
|  5 | db1  |
|  6 | db2  |
|  8 | db2  |
| 10 | db2  |
+----+------+
6 rows in set (0.00 sec)

[db1]
mysql> insert into mm value(null,'db1');
Query OK, 1 row affected (0.01 sec)

[db2]
mysql> insert into mm value(null,'db1');
Query OK, 1 row affected (0.01 sec)

mysql> select * from mm;
+----+------+
| id | name |
+----+------+
|  1 | db1  |
|  3 | db1  |
|  5 | db1  |
|  6 | db2  |
|  8 | db2  |
| 10 | db2  |
| 11 | db1  |
| 12 | db2  |
+----+------+
8 rows in set (0.00 sec)


主动的Master-Master复制缺点:
主动的Master-Master复制最大的问题就是更新冲突

假设一个表只有一行(一列)的数据,其值为1,如果两个服务器分别同时执行如下语句:

在第一个服务器上执行:

mysqlUPDATE tbl SET col=col + 1;

在第二个服务器上执行:

mysqlUPDATE tbl SET col=col * 2;

那么结果是多少呢?一台服务器是4,另一个服务器是3,但是,这并不会产生错误。
如果某一方写入频繁,某一方写入很少,会造成大量的键空间浪费。

主动-被动模式的Master-Master(Master-Master in Active-Passive Mode)

这是master-master结构变化而来的,它避免了M-M的缺点,实际上,这是一种具有容错和高可用性的系统。它的不同点在于其中一个服务只能进行只读操作。这种配置可以轻易的来回交换主动服务器与被动服务器的角色,这是故障转移恢复就容易了,他可以在不关闭MySQL服务器的情况执行维护、升级表、升级操作系统及其他任务。可以使用MySQL主主复制管理工具(MySQL Master-Master Replication Manager)来创建管理这种拓扑结构。

整理自网络

Svoid
2015-02-02
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MySQL复制