-
Notifications
You must be signed in to change notification settings - Fork 4
Shared Everything Replication
参照本文档,用户可以搭建一个基于 shared-everything
架构的 MyTopling 主从。
服务器共有三台:MyTopling 主从,以及 Dcompact 服务器。
如果不需要 Dcompact, 参见此处修改 json文件后启动即可。此时仅有两台服务器
此架构的优势在于数据只有一份,占用空间和Compact计算量都和单库时相同。相对的,由于数据库存储在NFS上, 数据访问,会产生额外的延迟。 此外,此时数据库没有业务层面的多副本机制,数据安全性依赖于NFS数据本身的存储可靠性。
运行环境基于 RHEL8 系列操作系统,使用 Almalinux8 测试通过。
配置方式参见 NFS服务端配置
NFS 服务器可以是主库本身,也可以是单独的NFS服务器。
参见 NFS客户端配置
先检查内核版本是否大于5.14:
uname -r
数据库服务器需要新版本内核来使用 io uring
, dcompact 服务器不需要特别升级内核。
如果低于5.14,可以使用如下指令升级:
sudo yum install elrepo-release -y
# 注意安装完内核后修改默认内核并重启
sudo yum -y --disablerepo="*" --enablerepo="elrepo-kernel" install kernel-ml
修改默认启动内核的指令:
# 查看已安装内核列表
grubby --info=ALL | grep -E "^kernel|^index"
# 按照上一条打印的列表修改默认内核,最新安装的内核一般为0
grubby --set-default-index=<新的内核index>
reboot
接下来安装运行依赖
# 对应 powertools, RHEL8 需要自行安装相应仓库以安装 gflags
# 在每台服务器上运行如下指令安装依赖
sudo yum install yum-utils -y
sudo yum config-manager --set-enabled powertools
sudo yum install libaio liburing gflags libcurl
CentOS7 上运行未做测试,但启动脚本相同,仅依赖包略有区别,参考 此文档 安装依赖部分略作修改即可。
配置私有dns或者向所有服务器的hosts文件写入:
sudo bash -c 'echo "<主库的ip>" mytopling-instance-1.mytopling.in >> /etc/hosts'
sudo bash -c 'echo "<从库ip>" mytopling-instance-2.mytopling.in >> /etc/hosts'
sudo bash -c 'echo "<dcompact的ip>" dcompact.mytopling.in >> /etc/hosts'
将非 NFS 服务器之外的服务器执行如下命令挂载:
NFS_IP="<修改为NFS 服务器的IP>"
NFS_EXPORT_POINT="/mnt/mynfs" # 根据 NFS服务器的配置进行修改
FSTAB_LINE="$NFS_IP:$NFS_EXPORT_POINT /mnt/mynfs auto rw,nolock,noac,noatime,nofail,_netdev 0 0"
sudo bash -c "echo $FSTAB_LINE >> /etc/fstab"
sudo mount -a
直接在挂载了NFS的某一台服务器上解压一次即可,安装包生成方式参见 编译MyTopling
sudo tar xf mytopling-rhel8-haswell.tar.gz -C /mnt/mynfs/opt
启动 Dcompact 服务器
# 在 dcompact实例上执行:
sudo bash /mnt/mynfs/opt/mytopling-deploy/Shared-Everything-Replication-Dcompact/start-dcompact.sh
启动主库,在主库服务器上执行:
sudo bash /mnt/mynfs/opt/mytopling-deploy/Shared-Everything-Replication-Dcompact/community/start-mysqld-instance-1.sh
# 企业用户使用:
# sudo bash /mnt/mynfs/opt/mytopling-deploy/Shared-Everything-Replication-Dcompact/enterprise/start-mysqld-instance-1.sh
# 创建同步用户,仅第一次启动时需要
sudo bash /mnt/mynfs/opt/mytopling-deploy/Shared-Everything-Replication-Dcompact/cerate-sync-user.sh
启动并初始化从库,在从库上执行:
sudo bash /mnt/mynfs/opt/mytopling-deploy/Shared-Everything-Replication-Dcompact/community/start-mysqld-instance-2.sh
# 企业用户使用:
# sudo bash /mnt/mynfs/opt/mytopling-deploy/Shared-Everything-Replication-Dcompact/enterprise/start-mysqld-instance-2.sh
# 同步从库,仅首次创建后需要
sudo bash /mnt/mynfs/opt/mytopling-deploy/Shared-Everything-Replication-Dcompact/init-instance-2.sh
如果不想使用分布式 Compact ,可以用以下方法关闭:
在json中删除 CFOptions.default.compaction_executor_factory
项:
json="/mnt/mynfs/opt/mytopling-deploy/Shared-Everything-Replication-Dcompact/community/side-plugin-1.sh"
# 企业用户请修改为:
# json="/mnt/mynfs/opt/mytopling-deploy/Shared-Everything-Replication-Dcompact/enterprise/side-plugin-1.sh"
sudo bash sed -i '/compaction_executor_factory/d' $json
修改后再启动 MyTopling 为单机版,不需要 Compact 服务器。