MySQL多实例安装在云服务器Ubuntu上的步骤是什么?

在Ubuntu云服务器上安装MySQL多实例的步骤如下:

一、准备工作

1. 系统要求

# 更新系统
sudo apt update
sudo apt upgrade -y

# 安装必要工具
sudo apt install wget curl vim -y

2. 下载MySQL安装包

# 下载MySQL 8.0(或选择其他版本)
wget https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.24-1_all.deb
sudo apt update

二、安装MySQL多实例

1. 安装MySQL Server

sudo apt install mysql-server -y

2. 创建多实例目录结构

# 创建实例目录
sudo mkdir -p /mysql/{3306,3307,3308}/{data,logs,tmp}

# 设置权限
sudo chown -R mysql:mysql /mysql
sudo chmod -R 750 /mysql

3. 初始化每个实例

# 初始化实例1(端口3306)
sudo mysqld --initialize-insecure 
  --user=mysql 
  --datadir=/mysql/3306/data 
  --basedir=/usr

# 初始化实例2(端口3307)
sudo mysqld --initialize-insecure 
  --user=mysql 
  --datadir=/mysql/3307/data 
  --basedir=/usr

# 初始化实例3(端口3308)
sudo mysqld --initialize-insecure 
  --user=mysql 
  --datadir=/mysql/3308/data 
  --basedir=/usr

三、配置多实例

1. 创建配置文件

# 实例1配置
sudo tee /mysql/3306/my.cnf << EOF
[mysqld]
port=3306
socket=/mysql/3306/mysql.sock
datadir=/mysql/3306/data
log-error=/mysql/3306/logs/error.log
pid-file=/mysql/3306/mysql.pid
tmpdir=/mysql/3306/tmp

# 性能优化
innodb_buffer_pool_size=256M
max_connections=200
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

[client]
port=3306
socket=/mysql/3306/mysql.sock
EOF

# 实例2配置(类似创建,修改端口和路径)
sudo tee /mysql/3307/my.cnf << EOF
[mysqld]
port=3307
socket=/mysql/3307/mysql.sock
datadir=/mysql/3307/data
log-error=/mysql/3307/logs/error.log
pid-file=/mysql/3307/mysql.pid
tmpdir=/mysql/3307/tmp

innodb_buffer_pool_size=256M
max_connections=200
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

[client]
port=3307
socket=/mysql/3307/mysql.sock
EOF

2. 创建启动脚本

# 创建systemd服务文件
sudo tee /etc/systemd/system/mysql@.service << EOF
[Unit]
Description=MySQL Multi-Instance %i
After=network.target

[Service]
Type=forking
User=mysql
Group=mysql
RuntimeDirectory=mysqld-%i
PIDFile=/mysql/%i/mysql.pid
ExecStart=/usr/sbin/mysqld --defaults-file=/mysql/%i/my.cnf --daemonize
ExecStop=/usr/bin/mysqladmin -S /mysql/%i/mysql.sock shutdown
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

四、启动和管理实例

1. 启动实例

# 重新加载systemd
sudo systemctl daemon-reload

# 启动实例
sudo systemctl start mysql@3306
sudo systemctl start mysql@3307

# 设置开机自启
sudo systemctl enable mysql@3306
sudo systemctl enable mysql@3307

2. 设置root密码

# 为每个实例设置密码
sudo mysql -S /mysql/3306/mysql.sock -e 
  "ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourPassword1';"

sudo mysql -S /mysql/3307/mysql.sock -e 
  "ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourPassword2';"

3. 验证运行状态

# 检查服务状态
sudo systemctl status mysql@3306
sudo systemctl status mysql@3307

# 检查端口监听
sudo netstat -tlnp | grep mysql

# 连接测试
mysql -P 3306 -h 127.0.0.1 -u root -p
mysql -P 3307 -h 127.0.0.1 -u root -p

五、安全配置

1. 防火墙设置

# 开放端口(如果使用防火墙)
sudo ufw allow 3306/tcp
sudo ufw allow 3307/tcp
sudo ufw reload

2. 安全建议

# 1. 修改默认端口(可选)
# 2. 使用强密码
# 3. 限制远程访问
# 4. 定期备份
# 5. 启用SSL连接

六、常用管理命令

# 查看所有实例状态
sudo systemctl list-units | grep mysql@

# 停止实例
sudo systemctl stop mysql@3306

# 重启实例
sudo systemctl restart mysql@3306

# 查看日志
sudo tail -f /mysql/3306/logs/error.log

注意事项

  1. 资源分配:确保服务器有足够的内存和CPU资源
  2. 数据目录:不同实例的数据目录必须完全独立
  3. 端口冲突:确保每个实例使用不同的端口
  4. 备份策略:为每个实例单独制定备份计划
  5. 监控:建议使用监控工具(如Prometheus)监控多实例

快速验证脚本

#!/bin/bash
# 验证多实例安装
echo "检查MySQL实例运行状态:"
for port in 3306 3307; do
  if sudo systemctl is-active mysql@$port >/dev/null; then
    echo "✓ 实例 $port 正在运行"
  else
    echo "✗ 实例 $port 未运行"
  fi
done

echo -e "n检查端口监听:"
sudo netstat -tlnp | grep mysql

这样你就完成了MySQL多实例在Ubuntu云服务器上的安装。

云服务器