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
或自定义脚本 。