目标是在一个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.bakprintf '%s\n' '#!/bin/bash' > /etc/rc.localchmod 0755 /etc/rc.localcd /etc/MysqLport=3306for 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)doneecho 'exit 0' >> /etc/rc.localmv my.cnf my.cnf.bakupdate-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 – 在单个Ubuntu服务器上运行MySQL的多个实例全部内容,希望文章能够帮你解决linux – 在单个Ubuntu服务器上运行MySQL的多个实例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)