mysql双主互备

mysql主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave),备服务器从主服务器同步数据,完成数据的备份。

【异步同步】

前提:2台服务器,主 192.168.1.101 备 192.168.1.102

1.首先主 备 服务的mysql配置的server的id必须不同,server_id是为了标识binlog,防止同步死循环。

#服务器ID,同个集群必须不同
server_id=1
#端口
port=63751

skip-name-resolve
#binlog 过期时间,超过3天未修改的清除
expire_logs_days = 3
#binlog 的名称
log-bin=mysql-bin.log
#同步的库排除mysql
binlog-ignore-db=mysql
#同步的库排除mysql
replicate-ignore-db=mysql
slave-skip-errors=all

#id 的自增量
auto_increment_increment=2
#id 的开始
auto_increment_offset=1
#最大连接数
max_connections=1000
#编码
collation-server=utf8_unicode_ci
init-connect='SET NAMES utf8;'
character-set-server=utf8

2.重启mysql

3.创建主备同步的账户和权限

grant replication slave on *.* to 'replication'@'192.168.1.101' identified by 'test'; //再备服务器上执行
grant replication slave on *.* to 'replication'@'192.168.1.102' identified by 'test'; //再主服务器上执行
 
4.查看mysql当前机器的binlog信息,show master status\G,例如我安装完之后,主备查看的binlog均为如下图所示。

5.则配置同步信息。

change master to master_host='192.168.1.102',master_port=3306,master_user='replication',master_password='test',master_log_file='binlog.000002',master_log_pos=565; //主服务器上执行

change master to master_host='192.168.1.101',master_port=3306,master_user='replication',master_password='test',master_log_file='binlog.000002',master_log_pos=565;//备服务器上执行

6.打开同步 start slave

7.查看slave的状态show slave status \G看到如下,说明成功

【半同步机制】

1.进入mysql执行如下:

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

同时配置文件增加如下配置,重启mysql即可。

#半同步,10s超时
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=10000
rpl_semi_sync_slave_enabled=1

总结:半同步复制个人感觉是维持数据完整性,安全性的的一个策略,虽会损失一点性能,还是值得的。配置很简单,关键是理解其工作机制。

三个问题:

1.为什么server_id是必须的,而且配置主从同步的server_id不允许重复。

2.异步同步机制是什么与半同步机制有何差异。

3.双主同步如果字段key是自增长的如何保证不冲突?

有点晚了,明天继续写。。

猜你喜欢

转载自www.cnblogs.com/HA-Tinker/p/10970967.html