mysql命令-mysqld_multi
mysqld_multi 是 MySQL 官方提供的多实例管理工具,允许在单台服务器上运行多个独立的 MySQL 实例,每个实例监听不同的端口和套接字文件。以下是核心要点和操作指南:
一、核心原理与配置
- 配置文件结构
在my.cnf中定义[mysqld_multi]全局管理段和多个[mysqldN]实例段(N为实例编号):
-
全局段:指定
mysqld_safe、mysqladmin路径及管理账号。 -
实例段:为每个实例设置独立参数(
datadir,port,socket,server-id)。 -
[mysqld_multi] mysqld = /usr/bin/mysqld_safe mysqladmin = /usr/bin/mysqladmin user = multi_admin # 管理账号 [mysqld1] datadir = /data/mysql1 port = 3306 socket = /tmp/mysql1.sock server-id = 1 [mysqld2] datadir = /data/mysql2 port = 3307 socket = /tmp/mysql2.sock server-id = 2
-
关键配置项
-
datadir:实例数据目录,必须唯一。 -
port和socket:避免端口或文件冲突。 -
server-id:主从复制时需全局唯一 。
二、操作流程
-
初始化数据目录
-
为每个实例执行初始化,确保目录权限属主为
mysql: -
mysql_install_db --user=mysql --datadir=/data/mysql1 mysql_install_db --user=mysql --datadir=/data/mysql2 chown -R mysql:mysql /data/mysql1 /data/mysql2 -
启动/停止实例
-
启动实例1:
mysqld_multi start 1 -
停止实例1-3:
mysqld_multi stop 1-3 -
查看状态:
mysqld_multi report -
连接指定实例
-
通过端口或套接字连接:
-
mysql -uroot -p -P3307 -S /tmp/mysql2.sock
三、高级应用
-
主从复制配置
-
主库:启用
log-bin并创建复制账号。 -
从库实例:在
[mysqldN]中添加: -
master-host = 主库IP master-port = 主库端口 # 同机多实例需区分端口 master-user = 复制账号 master-password = 密码 -
执行
CHANGE MASTER TO指定主库信息 -
管理账号授权
-
为安全关闭实例,需授予
multi_admin账号SHUTDOWN权限: -
GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY '密码'
四、常见问题
-
启动失败排查
-
检查
my_print_defaults路径是否存在,缺失时需软链接: -
ln -s /usr/local/mysql/bin/my_print_defaults /usr/bin/ -
查看实例错误日志(如
/data/mysql1/error.log) -
注意事项
-
各实例的
server-id和datadir必须唯一。 -
同机主从复制时,从库的
master-host建议用127.0.0.1而非localhost。
五、管理优化
-
系统服务集成
-
复制
mysqld_multi.server到/etc/init.d/,通过service命令管理: -
cp /usr/share/mysql/mysqld_multi.server /etc/init.d/mysqld_multi chkconfig --add mysqld_multi service mysqld_multi start 1 -
局限性
-
原生不支持实例状态监控(仅
report显示运行与否),需结合mysqladmin或自定义脚本 。

发表评论
所有评论