MySQL多实例管理

在 MySQL 中配置和管理多实例(如 3 个实例)时,每个实例需要独立的配置文件、数据目录、端口和 socket 文件。以下是基于你提供的 3307 实例配置,扩展的 3 实例完整配置方案:

1. 多实例目录规划

首先创建 3 个实例的目录结构(以 3307、3308、3309 端口为例):

bash 复制代码
# 创建基础目录
mkdir -p /data/{3307,3308,3309}/{data,logs}
chown -R mysql:mysql /data

2. 各实例配置文件(my.cnf)

3307 实例配置
bash 复制代码
cat > /data/3307/my.cnf << EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
port=3307
server_id=7  # 每个实例的 server_id 必须唯一
log_error=/data/3307/logs/mysql-error.log
log_bin=/data/3307/logs/mysql-bin  # 二进制日志(如需要主从复制)
binlog_format=row  # 推荐行级复制
expire_logs_days=7  # 日志保留7天
max_connections=100  # 最大连接数
EOF
3308 实例配置
bash 复制代码
cat > /data/3308/my.cnf << EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/3308/data
socket=/data/3308/mysql.sock
port=3308
server_id=8  # 唯一ID
log_error=/data/3308/logs/mysql-error.log
log_bin=/data/3308/logs/mysql-bin
binlog_format=row
expire_logs_days=7
max_connections=100
EOF
3309 实例配置
bash 复制代码
cat > /data/3309/my.cnf << EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/3309/data
socket=/data/3309/mysql.sock
port=3309
server_id=9  # 唯一ID
log_error=/data/3309/logs/mysql-error.log
log_bin=/data/3309/logs/mysql-bin
binlog_format=row
expire_logs_days=7
max_connections=100
EOF

3. 初始化各实例

bash 复制代码
# 初始化 3307 实例(生成初始数据文件)
/application/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/3307/data

# 初始化 3308 实例
/application/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/3308/data

# 初始化 3309 实例
/application/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/3309/data

--initialize-insecure 表示初始密码为空,方便首次登录

4. 启动/停止多实例(推荐直接用第6步)

启动实例
bash 复制代码
# 启动 3307
/application/mysql/bin/mysqld_safe --defaults-file=/data/3307/my.cnf &

# 启动 3308
/application/mysql/bin/mysqld_safe --defaults-file=/data/3308/my.cnf &

# 启动 3309
/application/mysql/bin/mysqld_safe --defaults-file=/data/3309/my.cnf &
停止实例
bash 复制代码
# 停止 3307(通过 socket 文件)
/application/mysql/bin/mysqladmin -S /data/3307/mysql.sock shutdown -u root -p

# 停止 3308
/application/mysql/bin/mysqladmin -S /data/3308/mysql.sock shutdown -u root -p

# 停止 3309
/application/mysql/bin/mysqladmin -S /data/3309/mysql.sock shutdown -u root -p

5. 登录多实例

bash 复制代码
# 登录 3307 实例(首次登录无密码,直接回车)
/application/mysql/bin/mysql -S /data/3307/mysql.sock -u root -p

# 登录 3308 实例
/application/mysql/bin/mysql -S /data/3308/mysql.sock -u root -p

# 登录 3309 实例(也可通过端口登录)
/application/mysql/bin/mysql -h 127.0.0.1 -P 3309 -u root -p

6. 配置系统服务(便捷管理)

为每个实例创建 systemd 服务文件,方便通过 systemctl 管理:

3307 服务文件
bash 复制代码
cat > /usr/lib/systemd/system/mysqld3307.service << EOF
[Unit]
Description=MySQL 3307 Instance
After=network.target

[Service]
User=mysql
Group=mysql
ExecStart=/application/mysql/bin/mysqld_safe --defaults-file=/data/3307/my.cnf
ExecStop=/application/mysql/bin/mysqladmin -S /data/3307/mysql.sock shutdown -u root -p
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF
3308 和 3309 服务文件

同理创建 mysqld3308.servicemysqld3309.service,只需修改文件中 3307 为对应端口即可。

服务管理
bash 复制代码
# 启动 3307 并设置开机自启
systemctl start mysqld3307
systemctl enable mysqld3307

# 查看状态
systemctl status mysqld3307

关键注意事项

  1. 唯一性 :每个实例的 portserver_idsocketdatadir 必须唯一,避免冲突。

  2. 权限 :所有目录需属 mysql:mysql 权限,否则启动失败。

  3. 安全加固 :首次登录后立即修改 root 密码:

    sql 复制代码
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';
  4. 资源隔离 :如需限制实例资源(如内存、CPU),可在配置文件中添加 innodb_buffer_pool_sizemax_connections 等参数。

通过以上配置,即可实现 MySQL 多实例的独立管理和运行。

相关推荐
lucky-billy16 分钟前
Ubuntu 下一键部署 ROS2
linux·ubuntu·ros2
Thera77721 分钟前
【Linux C++】彻底解决僵尸进程:waitpid(WNOHANG) 与 SA_NOCLDWAIT
linux·服务器·c++
阿梦Anmory26 分钟前
Ubuntu配置代理最详细教程
linux·运维·ubuntu
呉師傅40 分钟前
【使用技巧】Adobe Photoshop 2024调整缩放与布局125%后出现点菜单项漂移问题的简单处理
运维·服务器·windows·adobe·电脑·photoshop
云姜.41 分钟前
线程和进程的关系
java·linux·jvm
heartbeat..43 分钟前
JVM 性能调优流程实战:从开发规范到生产应急排查
java·运维·jvm·性能优化·设计规范
玄同7651 小时前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
吾日三省吾码1 小时前
别只会“加索引”了!这 3 个 PostgreSQL 反常识优化,能把性能和成本一起打下来
数据库·postgresql
chian-ocean1 小时前
百万级图文检索实战:`ops-transformer` + 向量数据库构建语义搜索引擎
数据库·搜索引擎·transformer
那个村的李富贵1 小时前
解锁CANN仓库核心能力:50行代码搭建国产化AIGC图片风格迁移神器
mysql·信息可视化·aigc·cann