mysql 双主老叶_Mysql 双主

环境 : extmail自动系统,mysql:

272f3e87a077072a5c71364047deb7d2.png

原理:两个主从设置,通过分别设置对方为主从,来实现。日志通过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;

8d92d7eb23ab4bf7f143e743390c9932.png

ServerB:

>slave stop;

>show master status;

79bbf002361b49e9763a2e0c42cead30.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值