全部博文(930)
分类: Mysql/postgreSQL
2011-02-20 13:44:32
1.两台安装好mysql的服务器:
A:192.168.1.6 (mysql的用户名:root;密码:gaso123)
B:192.168.1.8 (mysql的用户名:root;密码:gaso123)
A和B互为主服务器互相备份
2.A上以B为主服务器:
mysql>change master to master_host='192.168.1.8',master_port=3306,master_user='root',master_password='gaso123';
A上授权B可以操作A这个从属服务器:
mysql>grant replication slave on *.* to identified by 'gaso123';
刷新授权:
mysql>flush privileges;
B上以A为主服务器:
mysql>change master to master_host='192.168.1.6',master_port=3306,master_user='root',master_password='gaso123';
B上授权给A,让A有权操作B这个从属服务器
mysql>grant replication slave on *.* to identified by 'gaso123';
刷新授权:
mysql>flush privileges;
3.以上就配好了mysql的master-master模式服务器,重启两mysql后再进入,修改/etc/my.cnf添加以下几个选项
server-id=2 log-bin=log binlog-do-db=repl 注意server-id的唯一性
检查主服务器状态:
mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 854 | | |
+------------------+----------+--------------+------------------+
出现类似这个表格就说明主服务器已经连上。
检查从服务器状态:
mysql>show slave status;
| Slave_IO_Running | Slave_SQL_Running |
| Yes | Yes |
出现的表中这两项均为yes就说明和从服务器通讯没问题。
mysql>show master status\G;
mysql>show slave status\G;
以上这两种方法查看的状态更直观一些。
4.以上的第3项几条保证后就可以随意在A上或者B上建立数据库或者建立表格,然后就会在另一台服务器上自动生成相同的库或者表。
5.该方法最适合于需要新建的mysql主从服务器,一般需要仔细配置一次性成功,否则可能比较难以查找问题所在。
主主拓扑结构是有局限性的!
允许同时写入是危险的,两个服务器上按照不同的顺序进行的更新也能导致数据不同步,例如:
假设有个表只有一行和一列,并且值为1
A:
update tes1 set col=col+1;
B:
update test2 set col=col*2;
结果一个机器上是3, 一个上是4,就导致了不同步~~~~
这个时候就要用到mysql-master-master了