mysql 8.0双主_鲲鹏mysql8.0.18高可用双主架构部署要点汇总
云主机:鲲鹏云服务器Linux系统版本:NeoKylin Linux Advanced Server release V7Update6 (Chromium)MySQL源码版本:mysql-8.0.18keepalived版本:keepalived-1.3.5-6.el7.aarch64数据库架构元素IP地址DB1主机10.0.20.10DB2主机10.0.20.20Keepalived-VIP1
云主机:鲲鹏云服务器
Linux系统版本:NeoKylin Linux Advanced Server release V7Update6 (Chromium)
MySQL源码版本:mysql-8.0.18
keepalived版本:keepalived-1.3.5-6.el7.aarch64
数据库架构元素
IP地址
DB1主机
10.0.20.10
DB2主机
10.0.20.20
Keepalived-VIP
10.0.20.30
2、高可用双主数据库工作原理
双主数据库工作原理是通过MySQL Replication技术将两台MySQL Server互作为Master/Slave来进行复制同步。这样就实现了高可用构架中的数据同步功能,同时,在两台MySQL Server之间,将采用keepalived来实现Mysql的自动failover。
两台MySQL Server服务器组成一个热备组(Master-Backup),同一时间热备组内只有一台Master可读写,同时这台Master(MySQL Server)会通过keepalived生成一个虚拟IP地址(VIP),这个VIP只存在Master(MySQL Server)上并对外提供服务。
如果keepalived检测到Master(MySQL Server)宕机或服务故障,备服务器Backup(MySQL Server)会自动接管VIP成为master(MySQL Server),keepalived并将原有Master(MySQL Server)从热备组移除,当原有Master(MySQL Server)恢复后,会自动加入到热备组(若存在原Master无法修复的情况,则需要重建节点)。对于WEB Server 服务器,因为访问的是虚拟IP地址(VIP),对于后端数据库故障的主机切换几乎是无感知的,这样就实现了故障自动转移、保证了业务应用的不间断运行。
双主数据库+keepalived工作原理图如下:
双主正常运行时,前端应用访问VIP(实际映射至DB1),DB1和DB2之间通过主从方式互为同步:
DB1节点故障,keepalived监测到故障后漂移VIP至DB2,前端业务几乎无感切换:
二、MySQL 8.0.18编译和安装过程要点
1、MySQL 8.0.18编译环境
MySQL源码版本:mysql-8.0.18
云主机:鲲鹏云服务器
Linux系统版本:NeoKylin Linux Advanced Server release V7Update6 (Chromium)
gcc版本:gcc7.3
cmake版本:cmake3.5.2
2、MySQL 8.0.18关于Bug #94699编译要点
源码基于ARM存在死锁bug,编译前需要修改源码来进行修复
Bug #94699 Mysql deadlock and bugcheck on aarch64 under stress test
使用鲲鹏论坛分享的mysql8.0相关源码文件进行替换(storage/innobase/sync/sync0rw.cc)
若后期需正式使用在生产系统上,需使用sysbench等压测工具对编译后的数据库进行压测,以检测高并发下是否还存在死锁BUG至OOM导致MySQL进程故障。
3、MySQL 8.0.18 加载“半同步插件”和“密码复杂度组件”的要点
考虑主主环境的数据实时同步的重要性,需要加载MySQL的半同步插件;同时考虑开发在创建数据库用户时,应控制密码复杂度,需加载MySQL的密码复杂度组件。
半同步插件:semisync_master.so,semisync_slave.so
密码复杂度组件:component_validate_password
在MySQL 8.0.18数据库初始化过程中发现Abort报错,初始化失败(和my.cnf中使用plugin-load有关),核查官网Changes in MySQL 8.0.18
解决方式:
应当把plugin-load参数注释,并且把和插件组件相关的参数都先注释或加loose-前缀,在初始化后,手动加载插件和组件,再启用对应参数并重启mysqld即可。
三、数据库安全策略要点
1、创建用户密码强制复杂度
2、创建用户时对IP源的限制
(尽量缩小可访问的范围“特别要禁止root的远程访问权限”,若需要更细的IP源规划,可以使用鲲鹏云上的安全策略)
3、创建用户时对用户权限进行分权规划
(尽量根据用户具体功能缩小权限范围)
四、数据库逻辑备份策略要点
数据库逻辑备份策略,在双主两台主机上运行crontab脚本,使用mysqldump每日凌晨1点备份至异机WEB2:10.0.10.20(备份存放路径/home/mybak/mysqldb_bak/),保留7天最近备份。
若需要增量数据,可根据具体情况,使用双主两个节点的binlog进行增量数据恢复。
更多推荐
所有评论(0)