-
Notifications
You must be signed in to change notification settings - Fork 4
Classic MySQL Master Slave RHEL8
本文档演示如何基于预编译的 MyTopling 部署经典 MySQL 主从服务器。
企业版用户可以联系客服获取预编译包,社区版用户可以参照 编译文档 自行编译。
本文档的演示环境使用 RedHat 系的 AlmaLinux 8.6 实机操作,兼容 Alibaba Cloud Linux 3 以及 Rocky Linux 8 。
uname -a
如果低于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
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'
grep discard /etc/fstab
如果 mount 未开启 discard,SSD/NVMe 盘的写操作会大幅降速
1.4. 为三台主机关闭防火墙和 selinux
sudo setenforce 0
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sudo systemctl disable --now firewalld
本章(2.x)在两台 MyTopling 主机上(主库和从库所在主机)分别运行一遍
# 对应 powertools, RHEL8 需要自行安装相应仓库以安装 gflags
sudo yum install yum-utils -y
sudo yum config-manager --set-enabled powertools
sudo yum install libaio gflags libcurl nfs-utils liburing -y
sudo yum install -y snappy zlib bzip2 lz4
假设 /disk1
为格式化并挂载后的磁盘
在 mytopling-instance-1
上执行
mkdir -p /mnt/mynfs/datadir/mytopling-instance-1
在 mytopling-instance-2
上执行
mkdir -p /mnt/mynfs/datadir/mytopling-instance-2
两台主机分别执行:
echo "/mnt/mynfs *(rw,async,no_root_squash,fsid=1)" >> /etc/exports
# 增加服务器线程数
sudo sed -i 's|#\[nfsd\]|\[nfsd\]|g' /etc/nfs.conf
sudo sed -i 's/# threads=8/threads=64/g' /etc/nfs.conf
sudo systemctl enable --now nfs-server
映射共享磁盘到对应位置,和程序安装位置相同,或者自行挂载磁盘到 /mnt/mynfs
sudo mkdir /mnt/mynfs
# 如果你的磁盘不是 /disk1,将 disk1 换成你的nvme磁盘实际挂载位置
# 或者直接将磁盘挂载到 /mnt/mynfs 也可以, 这时不需要追加内容到 fstab
sudo bash -c "echo '/disk1 /mnt/mynfs none defaults,bind 0 0'" >> /etc/fstab
mount -a
安装 mytopling
# 运行完之后 /mnt/mynfs/opt/ 下应该是 MyTopling 的程序文件
tar xf mytopling-rhel8-haswell.tar.gz -C /mnt/mynfs/opt
dcompact 服务器上不需要解压安装文件,直接使用 instance-1
服务器共享的可执行文件。
在 dcompact 服务器上依次执行以下指令
# 在计算服务器上运行如下指令
#安装依赖
sudo yum install yum-utils -y
sudo yum config-manager --set-enabled powertools
sudo yum install libaio gflags libcurl nfs-utils liburing -y
sudo yum install -y snappy zlib bzip2 lz4
优化 NFS 客户端参数并挂载:
sudo echo "options sunrpc tcp_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf
sudo echo "options sunrpc tcp_max_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf
sudo sysctl -w sunrpc.tcp_slot_table_entries=128
部署程序并挂载 NFS
sudo mkdir /mnt/mynfs/opt -p
sudo mkdir /mnt/mynfs/datadir/{mytopling-instance-1,mytopling-instance-2} -p
sudo bash -c 'echo "mytopling-instance-1.mytopling.in:/mnt/mynfs/datadir/mytopling-instance-1 /mnt/mynfs/datadir/mytopling-instance-1/ auto rw,nolock,noac,noatime,nofail,_netdev 0 0" >> /etc/fstab'
sudo bash -c 'echo "mytopling-instance-2.mytopling.in:/mnt/mynfs/datadir/mytopling-instance-2 /mnt/mynfs/datadir/mytopling-instance-2/ auto rw,nolock,noac,noatime,nofail,_netdev 0 0" >> /etc/fstab'
# 可执行程序文件
sudo bash -c 'echo "mytopling-instance-1.mytopling.in:/mnt/mynfs/opt /mnt/mynfs/opt/ auto ro,nolock,noac,noatime,nofail,_netdev 0 0" >> /etc/fstab'
sudo mount -a
# 启动计算进程
sudo bash /mnt/mynfs/opt/mytopling-deploy/Classic-MySQL-Master-Slave-Replication-Dcompact/start-dcompact.sh
所需参数已经在启动脚本中设置完毕,binlog 启动了 GITD 模式。
在 mytopling-instance-1.mytopling.in 主机上执行
sudo bash /mnt/mynfs/opt/mytopling-deploy/Classic-MySQL-Master-Slave-Replication-Dcompact/enterprise/start-mysqld-instance-1.sh
在 mytopling-instance-2.mytopling.in 主机上执行
sudo bash /mnt/mynfs/opt/mytopling-deploy/Classic-MySQL-Master-Slave-Replication-Dcompact/enterprise/start-mysqld-instance-2.sh
直接执行 /mnt/mynfs/opt/bin/mysql -uroot -S /var/lib/mysql/mysql.sock
即可连接
此时两个数据库为初始状态,需要手动配置主从,和标准 MySQL 设置模式相同。 如果从库不再设置下游,可以在脚本中修改参数关闭 binlog。