单机部署mysql多实例,需要用到 mysql 自带的 mysqld_multi 命令,在目录 support_files 下有 mysqld_multi.server 命令封装。

mysql 版本:5.7.27

单机多实例配置

手动创建 my.cnf 文件

mac 使用 dmg 文件直接安装,不会自动生成 my.cnf 文件,需要手动创建。

1
2
3
4
5
6
7
8
9
10
11
12
13
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = root
password = root

[mysqld1]
socket = /tmp/mysql.sock1
port = 3311
pid-file = /usr/local/var/mysql/data/data1/hostname.pid1
datadir = /usr/local/var/mysql/data/data1
language = /usr/local/mysql/share/english
user = root

执行 mysqld_multi.server start

这时会在控制台显示出生成的密码,记住待会儿会进行修改。

修改密码

1
mysqladmin -u root -P 3312 -p  -S /tmp/mysql.sock2 password

连接 mysql

1
mysql -u root -p -P 3312 -S /tmp/mysql.sock2

关闭mysql

1
2
3
./mysqld_multi.server stop        #关闭所有
./mysqld_multi.server stop 1 #关闭单个
./mysqld_multi.server stop 1-2 #关闭某个范围的实例

单机多实例主从配置

必读:MySQL的主从复制介绍及配置

具体执行顺序按照链接中的顺序操作即可。这里只谈在操作中采的坑以及核心要点。

  1. 不要在命令行直接输入密码,例如:mysql -u root -p 'root' -P 3312 -S /tmp/mysql.sock2

    解决方法:去掉-p后的 ‘root’。mysql -u root -p -P 3312 -S /tmp/mysql.sock2

  2. 从库Slave_IO_Running: Connecting 问题

    1
    2
    Slave_IO_Running: Connecting
    Slave_SQL_Running: Yes

    解决方法:这个问题多半是未连接到主库专门用来复制的用户,检查用户名,用户权限等。

  3. 主库备份问题

    关键在于了解参数的意义,可以指定某个数据库进行备份,也可以-A全部备份。

    1
    mysqldump -u root -p -S /tmp/mysql/mysql.sock1 -A  > mysql_bak.2019-10-06.sql

 Comments