需配置不同端口、数据目录及my.cnf文件,并以不同服务名启动(如mysqld_safe或systemctl),确保两实例独立
安装前准备
- 操作系统环境:确保服务器已安装Linux(如CentOS/Ubuntu)或Windows Server。
- 下载MySQL:从官网下载对应系统的MySQL安装包(建议使用相同版本)。
- 备份数据:如果已有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实例?
解答:
- 停止目标实例的服务(如
systemctl stop mysqld2
)。 - 删除数据目录(如
rm -rf /usr/local/mysql2/data
)。 - 卸载程序文件(如
rm -rf /usr/local/mysql2
)。 - 删除系统服务文件(如
rm /etc/systemd/system/mysqld2.service
)。 - 执行
systemctl daemon-reload
并重启服务器。
问题2:如何迁移第二个实例的数据到默认实例?
解答:
- 停机两个实例,避免数据写入。
- 将第二个实例的数据目录(
/usr/local/mysql2/data
)备份为SQL文件:/usr/local/mysql2/bin/mysqldump -u root -p --all-databases > backup.sql
- 将备份文件导入默认实例:
/usr/local/mysql/bin/mysql -u root -p < backup.sql
- 验证数据一致性后
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/67358.html