是否可以在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中设置这些覆盖.
我希望这有帮助!