linux – 在单个Ubuntu服务器上运行MySQL的多个实例

前端之家收集整理的这篇文章主要介绍了linux – 在单个Ubuntu服务器上运行MySQL的多个实例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以在ubuntu服务器上安装多个 MySQL Servers实例,就像我在Windows Server上可以做的那样?

目标是在一个Ubuntu Server中安装10个MysqL Server实例,每个MysqL Server都有自己的端口号和IP地址.

解决方法

这绝对是可能的. https://dev.mysql.com/doc/refman/5.7/en/multiple-unix-servers.html是一个很好的参考.

备选方案#1:
我的建议基于MysqL的参考,你制作10份你的my.cnf并将它们添加到你的/etc/rc.local.在这种情况下,您最好使用monit等工具来监控实例的状态和正常运行时间.第二种方法修改现有的启动脚本.

以下脚本未经过测试,但可以让您了解需要执行的操作.它循环遍历10个MysqL服务器,并复制一个单独的配置,创建一个单独的用户和数据目录,并将端口号从3306增加到3317.确保通过rc.local将IP地址更改为所需的IP,在运行rc.local或重新启动服务器之前.

还要确保在性能利用率方面配置合理的设置,以便立即处理所有这些服务器.可能存在与ACL的冲突,例如SELinux或AppArmor.如果您遇到此解决方案的问题但无法弄清楚,请发表评论.

mv /etc/rc.local /etc/rc.local.bak
printf '%s\n' '#!/bin/bash' > /etc/rc.local
chmod 0755 /etc/rc.local
cd /etc/MysqL
port=3306
for i in {1..10}
do
   cp my.cnf my-${port}.cnf
   sed -i 's/socket.*/socket\=\/var\/run\/MysqLd\/MysqLd-${port}.sock/' my-${port}.cnf
   echo "MysqLd_safe --defaults-file=/usr/local/MysqL/my-${port}.cnf --bind-address=127.0.0.${i} --port=$port --datadir=/var/lib/MysqL-${port} " >> /etc/rc.local
   useradd -d /nonexistent -s /bin/false -c "MysqL server listening on ${port}"
   mkdir -m 0700 /var/lib/MysqL-${port}
   MysqL_install_db --user=MysqL --basedir=/var/lib/MysqL-${port} --datadir=/var/lib/MysqL-${port}/data
   port=$(expr $port + 1)
done
echo 'exit 0' >> /etc/rc.local
mv my.cnf my.cnf.bak
update-rc.d -f MysqL remove

备选方案#2:
使用MysqLd_multi,如https://dev.mysql.com/doc/refman/5.7/en/mysqld-multi.html所述.

备选方案#3:
一个非常简单和干净的解决方案是安装docker并使用MysqL运行10个单独的容器,具有不同的端口和IP号.您可以在Dockerfile中设置这些覆盖.

我希望这有帮助!

猜你在找的Linux相关文章