StoneDB 主从切换实践方案
StoneDB 的主从切换既可以手动切换,也可以自动切换,自动切换通常需要使用第三方中间件。本文以 Replication Manager 为例,介绍如何使用第三方中间件实现自动主从切换,保证当 master 宕机时,StoneDB 的业务可自动切换至 slave。
- 主从环境说明
IP | 内存 | CPU | OS 版本 | ROLE | Version |
---|---|---|---|---|---|
192.168.30.40 | 8GB | 8C | CentOS Linux release 7.9 | master | MySQL 5.7 |
192.168.30.41 | 8GB | 8C | CentOS Linux release 7.9 | N/A | Replication Manager 2.2 |
192.168.30.42 | 8GB | 8C | CentOS Linux release 7.9 | slave | MySQL 5.7 |
192.168.30.46 | 16GB | 16C | CentOS Linux release 7.9 | slave | StoneDB 5.7 |
信息
主从环境中的各个服务器的配置、数据库版本建议保持一致,但由于 StoneDB 不管重放 binlog,还是处理 OLAP 场景的查询,都是较消耗系统资源的,建议 StoneDB 配置略高于 MySQL。
推荐采用一主两从的架构,其中 Tianmu 引擎所在的节点不参与主从切换:
- master(192.168.30.40)使用 InnoDB 引擎,可读写,提供 OLTP 场景的读写业务;
- slave1(192.168.30.42)使用 InnoDB 引擎,只读,同时作为 standby,当 master 发生宕机时,可切换至 slave1,保证业务正常运行;
- slave2(192.168.30.46)使用 Tianmu 引擎,只读,提供 OLAP 场景的读业务。
1、操作系统环境检查
操作系统环境检查的步骤在四个节点均需要执行。
1.1 关闭防火墙
# systemctl stop firewalld
# systemctl disable firewalld
1.2 关闭SELINUX
# vim /etc/selinux/config
SELINUX = disabled
1.3 设置Swap分区
修改vm.swappiness的值为1,表示不使用Swap。
# vi /etc/sysctl.conf
vm.swappiness = 1
1.4 修改操作系统的限制
# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 1031433
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65535
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
# 修改操作系统的软硬限制
# vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
mysql soft nproc 1028056
mysql hard nproc 1028056
1.5 创建用户
# groupadd mysql
# useradd -g mysql mysql
# passwd mysql
Replication Manager 所在的节点无需创建用户 mysql,以上步骤执行完之后,重启操作系统。
2、部署MySQL
在 master 节点和 slave1 节点安装 MySQL。
2.1 下载安装包
https://downloads.mysql.com/archives/community/
从官网下载 MySQL 5.7 的安装包。