-
Notifications
You must be signed in to change notification settings - Fork 4
Build MyTopling RHEL8
本文档演示了如何在 RHEL8 系列的操作系统上自行编译MyTopling,用户需要自行解决 github 连接不稳定的网络问题。
本文档的演示环境使用 RedHat 系的 AlmaLinux 8.6 实机操作,兼容 Alibaba Cloud Linux 3 以及 Rocky Linux 8 。 由于 CentOS8 已停止支持,CentOS7 的依赖库过于陈旧。 建议使用 AlmaLinux 8 或 Rocky Linux 8。未在 RHEL9 系列的机器上测试。
首先,三台主机均挂载 NFS 到 /mnt/mynfs 上作为共享目录,将程序也安装到 NFS 中可以极大地简化部署与安装流程,建议目录结构:
目录 | 说明 |
---|---|
/mnt/mynfs/opt | 程序与动态库安装目录,即通常所说的 PREFIX |
/mnt/mynfs/datadir | MyTopling 数据目录 |
/mnt/mynfs/log-bin | MyTopling binlog 目录 |
/mnt/mynfs/wal | MyTopling Write-Ahead-Log 目录 |
/mnt/mynfs/infolog | MyTopling infolog 目录 |
注意: 本文档假定您按照以上的建议目录结构进行安装部署。如果需要修改这些目录,务必将所有引用这些目录的地方一起修改,包括本文档中的所有脚本片段以及 mytopling-deploy
目录中的所有文件中引用这些目录的地方。
为了节省用户的时间,我们准备了一键编译脚本,辅助用户编译 MyTopling,可以使用以下命令编译并打包 MyTopling:
git clone https://github.com/topling/mytopling-deploy.git --depth 1
sudo UPDATE_KERNEL_HEADERS=1 bash mytopling-deploy/build/one-key-build-on-rhel8.sh
编译完成后,可以使用如下指令打包:
tar czf mytopling-rhel8-haswell.tar.gz -C /mnt/mynfs/opt .
编译主机建议使用 32 核心及以上的配置,此配置下,编译安装时间约 20 分钟。
请您自行解决 github 不可访问的问题(例如通过可靠的代理服务器或使用云厂商海外区域的云服务器)。
检测新版本内核头文件是否安装 (version≥5.14):
rpm -qa kernel-* | grep headers | grep -E "headers-(5\.([4-9]|[1-9][0-9]+)|[6-9]\.)"
如果有输出表示已经安装,否则可以安装高版本内核头文件保证输出的二进制支持 io uring:
sudo yum install elrepo-release -y;
sudo yum -y --disablerepo="*" --enablerepo="elrepo-kernel" install kernel-ml-headers --allowerasing
安装编译依赖:
sudo yum install yum-utils -y
# 对应 powertools, RHEL8 需要自行安装相应仓库以安装 gflags
sudo yum config-manager --set-enabled powertools
sudo yum install -y liburing-devel git gcc-c++ gflags-devel libcurl-devel \
snappy-devel zlib-devel bzip2-devel lz4-devel \
libaio-devel cmake nfs-utils openssl-devel ncurses-devel libtirpc-devel \
rpcgen bison libudev-devel
现在开始编译与安装,请在相同的目录下(例如您的 HOME 目录)编译安装 ToplingDB 与 MyTopling:
ToplingDB 进行了良好的模块化,各个插件模块分别位于 github 的不同仓库中,在 ToplingDB 的编译过程中,Makefile 会自动从 github 上 clone 各个插件模块,其中的插件模块 topling-rocks 是 github 私有仓库(ToplingDB 企业版插件模块),社区用户没有访问权限,会输出报错信息,忽略该报错信息即可。
git clone https://github.com/topling/toplingdb.git --depth 1
cd toplingdb
git submodule update --init --recursive
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts # silent git
make -j`nproc` DEBUG_LEVEL=0 shared_lib
sudo make install-shared PREFIX=/mnt/mynfs/opt
注意,请在 ToplingDB 的上级目录执行以下命令
git clone
后,toplingdb 目录和 mytopling 目录应为同级目录。
sudo yum install perl-File-Copy*
git clone https://github.com/topling/mytopling.git --depth 1
cd mytopling
git submodule update --init --recursive
# build.sh 会调用 cmake 生成编译文件到 build-rls 目录(Release 版)
bash build.sh -DTOPLING_LIB_DIR=/mnt/mynfs/opt/lib \
-DCMAKE_INSTALL_PREFIX=/mnt/mynfs/opt
# 编译代码
cd build-rls
make -j`nproc`
sudo make install
# 复制配置文件(现在您位于 build-rls 目录)
sudo git clone https://github.com/topling/mytopling-deploy.git /mnt/mynfs/opt/mytopling --depth 1
编译完成后,可以使用如下指令打包:
tar czf mytopling-rhel8-haswell.tar.gz -C /mnt/mynfs/opt .
MyTopling 支持 Shared Storage 架构的集群方案,此时所有 DB 结点共享同一份数据,避免了 MySQL 经典主从同步中的 binlog 复制,参考配置基于Gluster的主从。本示例中 start-mysqld.sh 中的启动参数 --binlog-ddl-only=ON
就是用于这个目的,表示该结点作为主库时,产生的 binlog 只包含 ddl 操作,基于共享存储的从库只需要保持跟主库相同的数据字典即可,底层的 ToplingDB 存储引擎会与主库保持数据一致性。这样的从库可以秒级拉起新结点,并立刻开始服务只读查询。
- 修改启动脚本中的 GTID mode 相关选项以及 server-id 后, MyTopling 可以直接作为从库,和经典 MySQL 主从同步表现相同
- 如果让 MyTopling 作为主库, 标准 MySQL 作为从库,需要删除启动选项中的
--binlog-ddl-only=ON
。注意:修改此选项会导致 binlog 体积增加,增加后的 binlog 大小将和经典 MySQL 的 binlog 大小相同。
dcompact 集群支持计算节点的弹性伸缩和 NAS 的动态挂载,但是需要配置 nginx 转发服务器并修改相关选项,相应文档编写中
- Prometheus + Grafana 相关指标监控
- MyTopling 提供了 ToplingDB 引擎级的 Prometheus 监控接口,用户可以 自行配置监控
- MySQL 层面的其它监控,把 MyTopling 按照 MySQL 来配置即可
- 引擎 web 监控
- 按照本文档进行配置,用户可以访问
http://mysql-instance-1-host:8000
来查看引擎监控 相关文档 - Web 界面的操作指引
- 按照本文档进行配置,用户可以访问
- 首次连接后的操作
- MySQL 初始化之后默认只能在本机使用 root 账户连接,用户需要自行创建用户供其他用户连接。相关事项请自行查看 MySQL 官方文档。