mysql+分布+框架_MySQL mgr+mysqlrouter高可用架构及配置

一、MySQL Group Replication

mysql官方基于组复制概念并充分参考MariaDBGalera Cluster和Percona XtraDB Cluster结合而来的新的高可用集群架构。只支持5.7以上版本

mgr 优点:

高一致性,基于原生复制及paxos协议的组复制技术.

高容错性,有自动检测机制,当出现宕机后,会自动剔除问题节点,其他节点可以正常使用(类似zk集群),当不同节点产生资源争用冲突时,会按照先到先得处理,并且内置了自动化脑裂防护机制.

高扩展性,可随时在线新增和移除节点,会自动同步所有节点上状态,直到新节点和其他节点保持一致,自动维护新的组信息.

高灵活性,直接插件形式安装(5.7.17后自带.so插件),有单主模式和多主模式,单主模式下,只有主库可以读写,其他从库会加上super_read_only状态,只能读取不可写入,出现故障会自动选主.

缺点:目前不太稳定,太新有BUG(如新加入集群宕机,并行复制有不一致bug)、管理不方便(需配合mysql-shell)

注意:多主模式下最好有三台以上的节点,单主模式则视实际情况而定,不过同个Group最多节点数为9.

服务器配置尽量保持一致,因为和PXC一样,也会有"木桶短板效应".

需要特别注意,mysql数据库的服务端口号和MGR的服务端口不是一回事,需要区分开来.

二、MGR搭建

1、配置三个docker容器,配置之前需要配置一个network方便容器间互相连接

dockernetworkcreate mysql_group

2、运行容器指令

master:

dockerrun --name master -v /Users/drmac/mysql/master:/var/lib/mysql -v /Users/drmac/mysql/master.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 --network mysql_group--network-alias master-d mysql

slave-1:

docker run --name slave-1 -v /Users/drmac/mysql/slave-1:/var/lib/mysql -v /Users/drmac/mysql/slave-1.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=root -p 3307:3306 --network mysql_group --network-alias slave-1-d mysql

slave-2:

dockerrun --name slave-2 -v /Users/drmac/mysql/slave-2:/var/lib/mysql -v /Users/drmac/mysql/slave-2.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=root -p 3308:3306 --network mysql_group --network-alias slave-2-d mysql

启动三个容器,数据文件和配置文件分别挂载到本地磁盘,方便配置管理

3.my.cnf配置

master:

[mysqld]

# 开启GTID,必须开启

gtid_mode=on

# 强制GTID的一致性

enforce-gtid-consistency=on

# binlog格式,MGR要求必须是ROW

binlog_format=row

# server-id必须是唯一的

server-id=1

# MGR使用乐观锁,所以官网建议隔离级别是RC,减少锁粒度

transaction_isolation=READ-COMMITTED

# 因为集群会在故障恢复时互相检查binlog的数据,

# 所以需要记录下集群内其他服务器发过来已经执行过的binlog,按GTID来区分是否执行过.

log-slave-updates=1

# binlog校验规则,5.6之后的高版本是CRC32,低版本都是NONE,但是MGR要求使用NONE

binlog_checksum=NONE

# 基于安全的考虑,MGR集群要求复制模式要改成slave记录记录到表中,不然就报错

master_info_repository=TABLE

# 同上配套

relay_log_info_repository=TABLE

# 记录事务的算法,官网建议设置该参数使用 XXHASH64 算法

transaction_write_set_extraction = XXHASH64

# 相当于此GROUP的名字,是UUID值,不能和集群内其他GTID值的UUID混用,可用uuidgen来生成一个新的,

# 主要是用来区分整个内网里边的各个不同的GROUP,而且也是这个group内的GTID值的UUID

loose-group_replication_group_name = 'cc5e2627-2285-451f-86e6-0be21581539f'

#是否随服务器启动而自动启动组复制,不建议直接启动,怕故障恢复时有扰乱数据准确性的特殊情况

loose-group_replication_start_on_boot = OFF

loose-group_replication_local_address = 'master:33066'

loose-group_replication_group_seeds = 'master:33066,salve-1:33066,slave-2:33066'

# 开启引导模式,添加组成员,用于第一次搭建MGR或重建MGR的时候使用,只需要在集群内的其中一台开启,

loose-group_replication_bootstrap_group = OFF

# 是否启动单主模式,如果启动,则本实例是主库,提供读写,其他实例仅提供读,如果为off就是多主模式了

#loose-group_replication_single_primary_mode = off

# 多主模式下,强制检查每一个实例是否允许该操作,如果不是多主,可以关闭

#loose-group

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值