阿里云Ubuntu如何安装两个mysql?

结论:在阿里云Ubuntu系统上安装两个MySQL实例是完全可行的,关键在于通过配置不同的端口、数据目录和配置文件实现多实例隔离运行。

要在同一台阿里云Ubuntu服务器上运行两个MySQL服务,不能简单地重复执行安装命令,因为默认安装只会创建一个MySQL实例并绑定到标准端口3306。若需部署第二个MySQL,必须采用多实例配置方式,即共享MySQL软件但独立运行两个服务进程,各自使用不同的端口、套接字、数据目录和配置文件。

以下是实现步骤和核心要点:

  • 准备工作:更新系统并安装MySQL基础环境

    • 使用 sudo apt update && sudo apt upgrade 更新系统。
    • 安装MySQL服务器:sudo apt install mysql-server。这将安装第一个MySQL实例(默认实例),监听3306端口。
  • 为第二个MySQL实例创建独立用户和目录

    • 创建专用用户和组:sudo groupadd mysql2sudo useradd -r -g mysql2 mysql2
    • 创建独立的数据目录:sudo mkdir /var/lib/mysql2
    • 设置权限:sudo chown -R mysql2:mysql2 /var/lib/mysql2
  • 复制并修改第二个实例的配置文件(my.cnf)

    • 复制默认配置:sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld2.cnf
    • 修改关键参数:
    • port = 3307(避免与3306冲突)
    • socket = /var/run/mysqld/mysqld2.sock
    • pid-file = /var/run/mysqld/mysqld2.pid
    • datadir = /var/lib/mysql2
    • server-id = 2(用于复制场景)
    • 核心要点:每个MySQL实例必须拥有独立的端口、数据目录和运行用户,否则将导致启动冲突或数据损坏。
  • 初始化第二个实例的数据目录

    • 使用 mysqld --initialize --user=mysql2 --datadir=/var/lib/mysql2 --basedir=/usr 初始化数据目录。
    • 记录生成的临时密码,用于首次登录。
  • 创建并配置第二个MySQL服务(systemd)

    • 复制原服务文件:sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/mysql2.service
    • 编辑 mysql2.service,修改:
    • ExecStart 指向配置文件:--defaults-file=/etc/mysql/mysql.conf.d/mysqld2.cnf
    • User=mysql2
    • PIDFile=/var/run/mysqld/mysqld2.pid
    • 重载服务:sudo systemctl daemon-reload
  • 启动并测试第二个MySQL实例

    • 启动服务:sudo systemctl start mysql2
    • 设置开机自启:sudo systemctl enable mysql2
    • 登录测试:mysql -u root -p -S /var/run/mysqld/mysqld2.sock
    • 可通过 netstat -tulnp | grep mysql 查看3306和3307端口是否均在监听。
  • 安全与维护建议

    • 配置防火墙(如阿里云安全组)仅开放必要的端口。
    • 为两个实例分别设置强密码并限制远程访问。
    • 定期备份各自的数据目录,避免混淆。

重点强调:

  • 在同一台Ubuntu服务器上运行多个MySQL实例,必须确保端口、数据目录、socket文件和系统用户完全隔离。
  • 配置文件和服务文件的精确修改是成功部署的关键,任何冲突都会导致服务无法启动。
  • 虽然共享MySQL二进制文件节省空间,但资源(CPU、内存、磁盘I/O)将被两个实例共同消耗,需根据服务器性能合理分配。

综上所述,在阿里云Ubuntu上安装两个MySQL实例并非安装两次软件,而是通过多实例配置实现逻辑分离。只要遵循端口隔离、目录独立、服务独立的原则,即可稳定运行两个MySQL服务,满足开发、测试或业务隔离需求。

未经允许不得转载:云知道CLOUD » 阿里云Ubuntu如何安装两个mysql?