首页 >> 工具知识

mysql命令-mysqld_multi

     mysqld_multi 是 MySQL 官方提供的多实例管理工具,允许在单台服务器上运行多个独立的 MySQL 实例,每个实例监听不同的端口和套接字文件。以下是核心要点和操作指南:

一、核心原理与配置

  1. 配置文件结构
    在 my.cnf 中定义 [mysqld_multi] 全局管理段和多个 [mysqldN] 实例段(N 为实例编号):

    • 全局段:指定 mysqld_safemysqladmin 路径及管理账号。

    • 实例段:为每个实例设置独立参数(datadirportsocketserver-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
  2. 关键配置项

    1. datadir:实例数据目录,必须唯一

    2. port 和 socket:避免端口或文件冲突。

    3. server-id:主从复制时需全局唯一 。

二、操作流程

  1. 初始化数据目录

    1. 为每个实例执行初始化,确保目录权限属主为 mysql

    2. mysql_install_db --user=mysql --datadir=/data/mysql1
      mysql_install_db --user=mysql --datadir=/data/mysql2
      chown -R mysql:mysql /data/mysql1 /data/mysql2
  2. 启动/停止实例

    1. 启动实例1:mysqld_multi start 1

    2. 停止实例1-3:mysqld_multi stop 1-3

    3. 查看状态:mysqld_multi report

  3. 连接指定实例

    1. 通过端口或套接字连接:

    2. mysql -uroot -p -P3307 -S /tmp/mysql2.sock

三、高级应用

  1. 主从复制配置

    1. 主库:启用 log-bin 并创建复制账号。

    2. 从库实例:在 [mysqldN] 中添加:

      1. master-host = 主库IP
        master-port = 主库端口  
        # 同机多实例需区分端口
        master-user = 复制账号
        master-password = 密码
      2. 执行 CHANGE MASTER TO 指定主库信息

  2. 管理账号授权

    1. 为安全关闭实例,需授予 multi_admin 账号 SHUTDOWN 权限:

    2. GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY '密码'

四、常见问题

  1. 启动失败排查

    1. 检查 my_print_defaults 路径是否存在,缺失时需软链接:

      1. ln -s /usr/local/mysql/bin/my_print_defaults /usr/bin/
    2. 查看实例错误日志(如 /data/mysql1/error.log

  2. 注意事项

    1. 各实例的 server-id 和 datadir 必须唯一。

    2. 同机主从复制时,从库的 master-host 建议用 127.0.0.1 而非 localhost 。

五、管理优化

  1. 系统服务集成

    1. 复制 mysqld_multi.server 到 /etc/init.d/,通过 service 命令管理:

    2. cp /usr/share/mysql/mysqld_multi.server /etc/init.d/mysqld_multi
      chkconfig --add mysqld_multi
      service mysqld_multi start 1
  2. 局限性

    1. 原生不支持实例状态监控(仅 report 显示运行与否),需结合 mysqladmin 或自定义脚本 


最新文章
mysql分页问题2025-08-04
千万数据先insert和先建索引哪个快2025-08-04
MySQL 中大小表关联查询如何优化2025-08-04
sql技巧-每个班年龄排前两名的人2025-08-03
MySQL 导致 cpu 飙升的话,要怎么处理呢?2025-07-29
MySQL 中为千万级大表添加字段2025-07-29
mysql中百万级别以上的数据如何删除2025-07-29
分库分表带来的问题2025-07-29
mysql中常用的分库分表中间件有哪些2025-07-29
mysql不停机扩容2025-07-29
备案号:蜀ICP备2023042032号-1