当前位置:首页 > 云服务器 > 正文

一台服务器安装2个mysql

一台服务器安装2个mysql 第1张

需配置不同端口、数据目录及my.cnf文件,并以不同服务名启动(如mysqld_safe或systemctl),确保两实例独立

安装前准备

  1. 操作系统环境:确保服务器已安装Linux(如CentOS/Ubuntu)或Windows Server。
  2. 下载MySQL:从官网下载对应系统的MySQL安装包(建议使用相同版本)。
  3. 备份数据:如果已有MySQL实例,需提前备份数据。


Linux系统下安装步骤

安装第一个MySQL实例(默认安装)

# 解压安装包并执行安装脚本 tar -xvf mysql-8.0.x-linux-glibc2.17-x86_64.tar.xz cd mysql-8.0.x-linux-glibc2.17-x86_64 sudo ./bin/mysqld --initialize --user=mysql # 启动默认实例并设置开机自启 sudo ./bin/mysqld_safe --daemonize

部署第二个MySQL实例

# 复制整个MySQL目录到新路径(如 /usr/local/mysql2) sudo cp -r mysql-8.0.x-linux-glibc2.17-x86_64 /usr/local/mysql2 # 初始化第二个实例的数据目录 sudo /usr/local/mysql2/bin/mysqld --initialize --basedir=/usr/local/mysql2 --datadir=/usr/local/mysql2/data --user=mysql # 修改第二个实例的配置文件(/etc/my.cnf 或自定义路径) sudo nano /etc/my2.cnf

配置第二个实例的 my.cnf

参数 说明
port 3307 避免与默认端口3306冲突
socket /usr/local/mysql2/mysql.sock 独立套接字文件
datadir /usr/local/mysql2/data 独立数据存储目录
log_error /usr/local/mysql2/data/error.log 独立错误日志


启动与管理实例

启动第二个实例

# 后台启动第二个实例 sudo /usr/local/mysql2/bin/mysqld_safe --defaults-file=/etc/my2.cnf --daemonize

验证两个实例状态

# 查看默认实例状态 sudo /usr/local/mysql/bin/mysqladmin -u root -p status # 查看第二个实例状态 sudo /usr/local/mysql2/bin/mysqladmin -u root -p -P 3307 status

设置开机自启(系统d服务)

# 默认实例服务配置 sudo cp /usr/lib/systemd/system/mysqld.service /etc/systemd/system/mysqld.service # 第二个实例服务配置(修改端口、套接字等) sudo cp /etc/systemd/system/mysqld.service /etc/systemd/system/mysqld2.service sudo sed -i 's/3306/3307/g;s/mysql.sock/mysql2.sock/g' /etc/systemd/system/mysqld2.service # 启用并启动服务 sudo systemctl enable mysqld2 sudo systemctl start mysqld2


连接与操作实例

操作场景 命令示例
连接默认实例 mysql -u root -p -S /usr/local/mysql/mysql.sock
连接第二个实例 mysql -u root -p -P 3307 -h 127.0.0.1
指定客户端工具路径 /usr/local/mysql2/bin/mysql -u root -p


常见问题与解决

问题 解决方案
端口冲突导致无法启动 检查netstat -tulpn,修改my.cnf中的端口号
数据目录权限不足 chown -R mysql:mysql /usr/local/mysql2/data
忘记第二个实例密码 删除/usr/local/mysql2/data/auto.cnf后重启实例


相关问题与解答

问题1:如何彻底卸载其中一个MySQL实例?

解答

一台服务器安装2个mysql 第2张

  1. 停止目标实例的服务(如systemctl stop mysqld2)。
  2. 删除数据目录(如rm -rf /usr/local/mysql2/data)。
  3. 卸载程序文件(如rm -rf /usr/local/mysql2)。
  4. 删除系统服务文件(如rm /etc/systemd/system/mysqld2.service)。
  5. 执行systemctl daemon-reload并重启服务器。

问题2:如何迁移第二个实例的数据到默认实例?

解答

  1. 停机两个实例,避免数据写入。
  2. 将第二个实例的数据目录(/usr/local/mysql2/data)备份为SQL文件: /usr/local/mysql2/bin/mysqldump -u root -p --all-databases > backup.sql
  3. 将备份文件导入默认实例: /usr/local/mysql/bin/mysql -u root -p < backup.sql
  4. 验证数据一致性后

一台服务器安装2个mysql 第3张

0