mysql8.0双主_鲲鹏mysql8.0.18⾼可⽤双主架构部署要点汇总云主机:鲲鹏云服务器
Linux系统版本:NeoKylin Linux Advanced Server release V7Update6 (Chromium)
MySQL源码版本:mysql-8.0.18illustrated by
keepalived版本:keepalived-1.3.5-6.el7.aarch64
数据库架构元素
IP地址
DB1主机
10.0.20.10
DB2主机
10.0.20.20
Keepalived-VIP
mysql面试题汇总
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编译环境
运行unix的计算机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 testtwentieth
使⽤鲲鹏论坛分享的mysql8.0相关源码⽂件进⾏替换(storage/innobase/)
若后期需正式使⽤在⽣产系统上,需使⽤sysbench等压测⼯具对编译后的数据库进⾏压测,以检测⾼并发下是否还存在死锁BUG⾄OOM 导致MySQL进程故障。
3、MySQL 8.0.18 加载“半同步插件”和“密码复杂度组件”的要点
accessory汽车考虑主主环境的数据实时同步的重要性,需要加载MySQL的半同步插件;同时考虑开发在创建数据库⽤户时,应控制密码复杂度,需加载MySQL的密码复杂度组件。
半同步插件:semisync_master.so,semisync_slave.so
密码复杂度组件:component_validate_password
在MySQL 8.0.18数据库初始化过程中发现Abort报错,初始化失败(和myf中使⽤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进⾏增量数据恢复。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。