Mysql 双主
? extmail ? ? mysql ? ? 双主 ?    268    0    0

环境 : extmail自动系统,mysql:

原理:两个主从设置,通过分别设置对方为主从,来实现。日志通过log-bin(中继日志)来实现传递,需要确保对方可以相互登陆。

1、关闭skip-networking 设置,开启网络监听;

2、开启数据库远程读写:

grant replication slave, file, select on *.* to '$user'@'192.168.%' identified by '$password';

flush privileges; 

3、my.cnf 内添加如下内容:

ServerA:

log-bin = mysql-bin
server-id = 1

expire-logs-days = 100
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
auto-increment-increment = 2
auto-increment-offset = 1

ServerB:

log-bin = mysql-bin
server-id = 2
expire-logs-days = 100
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
auto-increment-increment = 2
auto-increment-offset = 2

4、重启mysql后进入mysql,进行一下配置:

 ServerA:

    >slave stop;

    >show master status;

 

 

ServerB:

    >slave stop;

    >show master status;

 

ServerA:(执行如下命令)

    >change master to master_host='ServerB', master_user='$user', master_password='$password', master_log_file='mysql-bin.000010', master_log_pos=11658;

    >slave start                    (开始运行)

    >flush privileges; 

    >show slave status\G    (查看主备工作情况) 

    如果状态不正常,重启一下数据库。 

ServerB:(执行如下命令)

    >change master to master_host='ServerA', master_user='$user', master_password='$password', master_log_file='mysql-bin.000009', master_log_pos=12402;

    >slave start                    (开始运行)

    >show slave status\G    (查看主备工作情况) 

    >flush privileges; 

主要查看一下两个选项即可:

Slave_IO_Running=Yes

Slave_SQL_Running=Yes

        由于MySQL 5.0及之前的版本仅支持基于语句的复制(也叫做逻辑复制,logical replication),这在数据库并不常见。master记录下改变数据的查询,然后,slave从中继日志中读取事件,并执行它,这些SQL语句与master执行的语句一样。
        这种方式的优点就是实现简单。此外,基于语句的复制的二进制日志可以很好的进行压缩,而且日志的数据量也较小,占用带宽少——例如,一个更新GB的数据的查询仅需要几十个字节的二进制日志。而mysqlbinlog对于基于语句的日志处理十分方便。

        但是,基于语句的复制并不是像它看起来那么简单,因为一些查询语句依赖于master的特定条件,例如,master与slave可能有不同的时间。所以,MySQL的二进制日志的格式不仅仅是查询语句,还包括一些元数据信息,例如,当前的时间戳。即使如此,还是有一些语句,比如,current user函数,不能正确的进行复制。此外,存储过程和触发器也是一个问题。
     另外一个问题就是基于语句的复制必须是串行化的。这要求大量特殊的代码,配置,例如InnoDB的next-key锁等。并不是所有的存储引擎都支持基于语句的复制。

相关详细介绍参考:http://www.cnblogs.com/kristain/articles/4142970.html

觉得不错,点个赞?
Sign in to leave a comment.
No Leanote account ? Sign up now.
0 条评论
文章目录