加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 02:30:37 所属栏目:Linux 来源:网络整理
导读:是否可以在Ubuntu服务器上安装多个 MySQL Servers实例,就像我在Windows Server上可以做的那样? 目标是在一个Ubuntu Server中安装10个MySQL Server实例,每个MySQL Server都有自己的端口号和IP地址. 解决方法 这绝对是可能的. https://dev.mysql.com/doc/refm
是否可以在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 '%sn' '#!/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中设置这些覆盖.

我希望这有帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读