怎么在一个阿里云服务器创建2个版本的数据库?

在一台阿里云服务器上创建两个版本的数据库(比如 MySQL 5.7 和 MySQL 8.0),可以通过以下几种方式实现。以下是详细步骤和建议:


✅ 方法一:使用 Docker 容器部署(推荐)

这是最简单、最安全的方式,可以轻松运行多个不同版本的数据库,互不干扰。

步骤:

  1. 安装 Docker

    # 更新系统
    sudo yum update -y
    
    # 安装 Docker
    sudo yum install docker -y
    
    # 启动并设置开机自启
    sudo systemctl start docker
    sudo systemctl enable docker
  2. 拉取并运行不同版本的 MySQL 容器

    比如运行 MySQL 5.7 和 MySQL 8.0:

    # 运行 MySQL 5.7,映射到宿主机端口 3307
    sudo docker run -d 
     --name mysql-57 
     -p 3307:3306 
     -e MYSQL_ROOT_PASSWORD=your_password_57 
     -v /data/mysql57:/var/lib/mysql 
     mysql:5.7
    
    # 运行 MySQL 8.0,映射到宿主机端口 3308
    sudo docker run -d 
     --name mysql-80 
     -p 3308:3306 
     -e MYSQL_ROOT_PASSWORD=your_password_80 
     -v /data/mysql80:/var/lib/mysql 
     mysql:8.0
  3. 连接数据库

    • MySQL 5.7:mysql -h 127.0.0.1 -P 3307 -u root -p
    • MySQL 8.0:mysql -h 127.0.0.1 -P 3308 -u root -p

✅ 优点:隔离性好、配置灵活、易于管理
⚠️ 注意:不要将两个容器映射到同一个端口(如都用 3306),否则冲突。


✅ 方法二:在同一台服务器手动安装多个 MySQL 实例(多实例部署)

适用于不想用 Docker 的场景,但操作复杂一些。

原理:

通过修改配置文件、数据目录、端口号等方式,让多个 MySQL 实例以不同端口运行。

步骤概要:

  1. 安装 MySQL(例如先装 5.7)

    参考阿里云官方文档或使用 Yum 安装:

    sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
    sudo yum-config-manager --disable mysql80-community
    sudo yum-config-manager --enable mysql57-community
    sudo yum install mysql-server -y
    sudo systemctl start mysqld
  2. 手动编译或下载另一个版本(如 MySQL 8.0)作为独立实例运行

    更推荐使用 二进制包 方式安装第二个版本:

    # 下载 MySQL 8.0 二进制包
    wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.34-linux-glibc2.12-x86_64.tar.xz
    tar -xJf mysql-8.0.34-linux-glibc2.12-x86_64.tar.xz -C /usr/local/
    ln -s /usr/local/mysql-8.0.34-linux-glibc2.12-x86_64 /usr/local/mysql8
    
    # 创建用户和目录
    sudo useradd -r -s /bin/false mysql8
    sudo chown -R mysql8:mysql8 /usr/local/mysql8
    sudo mkdir /data/mysql8
    sudo chown mysql8:mysql8 /data/mysql8
  3. 初始化第二个实例

    /usr/local/mysql8/bin/mysqld --initialize 
     --user=mysql8 
     --basedir=/usr/local/mysql8 
     --datadir=/data/mysql8 
     --port=3308 
     --socket=/tmp/mysql8.sock

    记录生成的临时密码

  4. 创建配置文件 my8.cnf

    [mysqld]
    port=3308
    socket=/tmp/mysql8.sock
    basedir=/usr/local/mysql8
    datadir=/data/mysql8
    pid-file=/data/mysql8/mysql8.pid
    server-id=2
    log-error=/data/mysql8/error.log
  5. 启动服务

    /usr/local/mysql8/bin/mysqld_safe --defaults-file=/path/to/my8.cnf &
  6. 登录并修改密码

    /usr/local/mysql8/bin/mysql -S /tmp/mysql8.sock -p

⚠️ 缺点:配置复杂,容易出错,需注意权限、端口、路径冲突。


✅ 方法三:使用不同数据库类型(可选)

如果你不需要两个 MySQL 版本,也可以考虑:

  • 安装 MySQL + PostgreSQL
  • 或者 MySQL + MariaDB(注意兼容性和端口)

但这不是“同一数据库的两个版本”。


🔒 安全建议

  • 修改默认端口或限制访问 IP(使用阿里云安全组)
  • 设置强密码
  • 定期备份数据(尤其是 /data/mysql* 目录)
  • 使用不同用户运行不同实例,避免权限混乱

📌 总结

方法 是否推荐 难度 说明
Docker 多容器 ✅ 强烈推荐 简单 快速、隔离、易维护
多实例手动部署 ⚠️ 可行但复杂 中等 适合高级用户
虚拟机/额外 ECS 💡 成本高但最隔离 简单 适合生产环境

推荐做法:

👉 使用 Docker 在一台阿里云 ECS 上运行 MySQL 5.7 和 MySQL 8.0 两个容器,是最高效、最安全的方式。


需要我帮你写一个一键部署脚本吗?或者配置主从复制?欢迎继续提问!