单服务器多MySQL实例部署指南
概述
本文介绍如何在同一台Linux服务器上部署多个MySQL实例。我们将创建三个独立的MySQL服务,分别监听3306、3307、3308端口。
步骤一:准备MySQL二进制包
首先需要获取MySQL二进制安装包。可以从MySQL官方网站下载对应版本的二进制包,或者使用百度网盘分享的版本(提取码:t3oz)。
将下载的安装包上传至服务器后解压,并把解压后的目录重命名为/project/3306作为基础安装目录。
步骤二:创建多实例目录结构
将基础安装目录复制两份,分别创建三个实例的安装目录:
cp -r /project/3306 /project/mysql3307
cp -r /project/3306 /project/mysql3308
各实例的目录规划如下:
| 实例 | 安装目录 | 数据目录 | 配置文件 |
|---|---|---|---|
| 实例一 | /project/mysql3306 | /project/mysql3306/data | /project/mysql3306/my.cnf |
| 实例二 | /project/mysql3307 | /project/mysql3307/data | /project/mysql3307/my.cnf |
| 实例三 | /project/mysql3308 | /project/mysql3308/data | /project/mysql3308/my.cnf |
步骤三:配置各实例参数
为每个实例创建独立的配置文件,注意端口、socket路径、数据目录等参数的差异化配置。
第一个实例配置文件(/project/mysql3306/my.cnf):
[mysqld]
port=3306
socket = /project/mysql3306/var/mysql.sock
basedir = /project/mysql3306/
datadir = /project/mysql3306/data
pid-file = /project/mysql3306/data/mysql.pid
log_error = /project/mysql3306/data/mysql-error.log
slow_query_log_file = /project/mysql3306/data/mysql-slow.log
第二个实例配置文件(/project/mysql3307/my.cnf):
[mysqld]
port=3307
socket = /project/mysql3307/var/mysql.sock
basedir = /project/mysql3307/
datadir = /project/mysql3307/data
pid-file = /project/mysql3307/data/mysql.pid
log_error = /project/mysql3307/data/mysql-error.log
slow_query_log_file = /project/mysql3307/data/mysql-slow.log
第三个实例配置文件(/project/mysql3308/my.cnf):
[mysqld]
port=3308
socket = /project/mysql3308/var/mysql.sock
basedir = /project/mysql3308/
datadir = /project/mysql3308/data
pid-file = /project/mysql3308/data/mysql.pid
log_error = /project/mysql3308/data/mysql-error.log
slow_query_log_file = /project/mysql3308/data/mysql-slow.log
步骤四:创建所需目录并设置权限
创建配置文件中定义的各个目录:
mkdir -p /project/mysql3306/var
mkdir -p /project/mysql3307/var
mkdir -p /project/mysql3308/var
mkdir -p /project/mysql3306/data
mkdir -p /project/mysql3307/data
mkdir -p /project/mysql3308/data
将目录所有权分配给mysql用户:
chown -R mysql.mysql /project/mysql3306
chown -R mysql.mysql /project/mysql3307
chown -R mysql.mysql /project/mysql3308
步骤五:初始化数据库实例
分别初始化三个MySQL实例。注意--defaults-file参数必须放在其他参数前面。
mysqld --defaults-file=/project/mysql3306/my.cnf --initialize --user=mysql --basedir=/project/mysql3306/ --datadir=/project/mysql3306/data
mysqld --defaults-file=/project/mysql3307/my.cnf --initialize --user=mysql --basedir=/project/mysql3307/ --datadir=/project/mysql3307/data
mysqld --defaults-file=/project/mysql3308/my.cnf --initialize --user=mysql --basedir=/project/mysql3308/ --datadir=/project/mysql3308/data
初始化完成后,在对应的错误日志文件中查找临时密码。以3306实例为例:
[root@server data]# cat /project/mysql3306/data/mysql-error.log |grep password
2022-11-17T11:27:51.754075Z 1 [Note] A temporary password is generated for root@localhost: Etm/V;2KW:t(
步骤六:启动MySQL实例
重要提示:启动前需删除或重命名/etc/my.cnf文件,否则MySQL会优先读取该配置文件导致启动失败。
使用以下命令分别启动三个实例(后台运行):
nohup /project/mysql3306/bin/mysqld_safe --datadir=/project/mysql3306/data --pid-file=/project/mysql3306/data/mysql.pid &
nohup /project/mysql3307/bin/mysqld_safe --datadir=/project/mysql3307/data --pid-file=/project/mysql3307/data/mysql.pid &
nohup /project/mysql3308/bin/mysqld_safe --datadir=/project/mysql3308/data --pid-file=/project/mysql3308/data/mysql.pid &
步骤七:修改Root密码
使用初始密码登录各实例并修改Root密码。连接时需要指定端口和socket文件路径:
mysql -uroot -p -h 127.0.0.1 -P 3306 -S /project/mysql3306/var/mysql.sock
参数说明:-P指定端口号,-S指定socket文件路径。登录后执行密码修改语句:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password';
总结
通过以上步骤,即可在单台服务器上成功运行三个独立的MySQL实例。每个实例都有独立的配置、数据目录和socket文件,可以根据实际需求进行独立管理和使用。