暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
MySQL mgr+mysqlrouter高可用架构及配置
3207
12页
25次
2020-06-28
5墨值下载
一、MySQL Group Replication
mysql 官方基于组复制概念并充分参考 MariaDB Galera 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 方便容器间互相连接
docker network create mysql_group
2、运行容器指令
master
docker run --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
docker run --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
# 本地 MGR IP 和端口,host:port, MGR 的端口,不是数据库的端口
loose-group_replication_local_address = 'master:33066'
# 需要接 MGR 例控制的服务器 IP 和端口, MGR 的端口,不是数据库的端口
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
of 12
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜