-
Notifications
You must be signed in to change notification settings - Fork 4
Home
本文档旨在帮助用户在完成一个 MyTopling 的私有化部署。用户需要自行解决 github 连接不稳定的网络问题以及共享存储(通常是 NFS)的部署和挂载(NFS 快速入门)。
本文档的演示环境使用 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-scripts
目录中的所有文件中引用这些目录的地方。
编译主机建议使用 32 核心及以上的配置,此配置下,编译安装时间约 20 分钟。
请您自行解决 github 不可访问的问题(例如通过可靠的代理服务器或使用云厂商海外区域的云服务器)。
sudo yum config-manager --set-enabled powertools # 有些 linux 发行版不需要此行
sudo yum install -y liburing-devel git gcc-c++ gflags-devel libcurl-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
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
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 cp -r ../mytopling-scripts /mnt/mynfs/opt
在前面的操作流程中,MyTopling 与 ToplingDB 均部署安装在共享存储 /mnt/mynfs
上,因此不需要在集群上的每台机器上分别安装
dcompact 指 分布式 Compact,本节简述最基本的用法,详情可参考 dcompact 文档
注意,本节描述的指令在 dcompact 服务器 上执行
# 在计算服务器上运行如下指令
#安装依赖
sudo yum config-manager --set-enabled powertools
sudo yum install libaio liburing gflags libcurl
# 启动计算进程
sudo bash /mnt/mynfs/opt/mytopling-scripts/start-dcompact.sh
之后 记录 dcompact 服务器 的 ip 地址 , 下一小节要用
注意,本小节在数据库服务器上执行,因为 dcompact 服务器 由多个数据库服务器共享,所以使用 instance name 来区分不同的数据库服务器(本例中是 mytopling-instance-1)
目前假设集群中的每台主机都挂载了共享目录 /mnt/mynfs
并且拥有正确的读写权限
sudo yum config-manager --set-enabled powertools
sudo yum install libaio liburing gflags libcurl
如果您有 topling-rocks github 私有仓库的权限,您编译出来的 ToplingDB 动态库会包含企业版插件模块,从而以下操作步骤中以及 start-mysqld.sh 脚本中的 mytopling-community.json,您可以将其替换为 mytopling-enterprise.json,以启用企业版插件模块。
# 创建日志目录
sudo mkdir -p /mnt/mynfs/infolog/mytopling-instance-1/stdlog
sudo cp /mnt/mynfs/opt/mytopling-scripts/{index.html,style.css} /mnt/mynfs/infolog/mytopling-instance-1
# 创建 MySQL 用户
sudo groupadd -g 27 mysql
sudo useradd mysql -u 27 -g 27 --no-create-home -s /sbin/nologin
chown mysql:mysql -R /mnt/mynfs/infolog
export LD_LIBRARY_PATH=/mnt/mynfs/opt/lib
export ROCKSDB_KICK_OUT_OPTIONS_FILE=1
export TOPLING_SIDEPLUGIN_CONF=/mnt/mynfs/opt/mytopling-scripts/mytopling-community.json
mkdir -p /mnt/mynfs/{datadir,log-bin,wal}/mytopling-instance-1
/mnt/mynfs/opt/bin/mysqld --initialize-insecure --skip-grant-tables \
--datadir=/mnt/mynfs/datadir/mytopling-instance-1
chown mysql:mysql -R /mnt/mynfs/{datadir,log-bin,wal}/mytopling-instance-1
注意 先修改 /mnt/mynfs/opt/mytopling-scripts/mytopling-community.json
中的 http_workers
为你的 分布式 Compact 服务器 的地址,否则不会激活 分布式 Compact
将 http_workers 修改为你的 分布式 Compact服务器 的地址:
"http_workers": [
"// 这里修改为 dcompact-worker 服务器的地址",
"http://10.0.0.1:8000"
],
上面修改完之后, 启动 MyTopling 数据库服务进程:
# 使用 root 用户 启动脚本并自动切换到 mysql 启动 MyTopling 进程
sudo bash /mnt/mynfs/opt/mytopling-scripts/start-mysqld.sh
或者不想使用 root 执行脚本, 需要显式指定 mysql 用户
sudo ulimit -n 100000
chmod +x /mnt/mynfs/opt/mytopling-scripts/start-mysqld.sh
su mysql -s /mnt/mynfs/opt/mytopling-scripts/start-mysqld.sh
# 连接 MyTopling,在 MyTopling 数据库服务器上,本地连接
mysql -S /tmp/mysql.sock
- 修改启动脚本中的 GTID mode 相关选项以及 server-id 后, MyTopling 可以直接作为从库,和经典 MySQL 主从同步表现相同
- 如果让 MyTopling 作为主库, 标准 MySQL 作为从库,需要删除启动选项中的
--binlog-ddl-only=ON
。注意:修改此选项会导致 binlog 体积增加,增加后的 binlog 大小将和经典 MySQL 的 binlog 大小相同。 - MyTopling 支持 shared-storage 架构的集群方案,此时所有 DB 结点共享同一份数据,避免了 MySQL 经典主从同步中的 binlog 复制,相关文档正在编写中。
dcompact 集群支持计算节点的弹性伸缩和 NAS 的动态挂载,但是需要配置 nginx 转发服务器并修改相关选项,相应文档编写中
- Prometheus + Grafana 相关指标监控
- MyTopling 提供了 ToplingDB 引擎级的 Prometheus 监控接口,用户可以 自行配置监控
- MySQL 层面的其它监控,把 MyTopling 按照 MySQL 来配置即可
- 引擎 web 监控
- 按照本文档进行配置,用户可以访问
http://mysql-instance-1-host:8000
来查看引擎监控 相关文档 - Web 界面的操作指引
- 按照本文档进行配置,用户可以访问
- 首次连接后的操作
- MySQL 初始化之后默认只能在本机使用 root 账户连接,用户需要自行创建用户供其他用户连接。相关事项请自行查看 MySQL 官方文档。