基于上一篇 “多实例–多配置文件方式” 的 环境继续操作
基本信息:
[root@localhost ~]# cat /etc/issue
CentOS release 6.5 (Final)
mysql> \s
Server version: 5.7.21 Source distribution ---源码编译安装
Protocol version: 10
[root@localhost ~]# netstat -anp | grep mysqld
tcp 0 0 :::3307 :::* LISTEN 75638/mysqld ----多配置文件添加的
tcp 0 0 :::3306 :::* LISTEN 75910/mysqld
unix 2 [ ACC ] STREAM LISTENING 387245 75638/mysqld /disk1/mysql/mysql3307.sock
unix 2 [ ACC ] STREAM LISTENING 387439 75910/mysqld /disk1/mysql/mysql.sock
1. 声明
① mysqld_multi 是官方提供的,用来管理侦听unix/linux下不同端口mysqld进程(多实例)
② 通过将所有实例信息写入到配置文件,调用配置文件来分别管理[mysqld_multi] [mysqldN] 两个选项,即原有其他选项依然生效
如[mysqld] 的3306端口依然生效,可依然由 service mysqld 进行管理,互不干扰
③ 遵循mysql读取配置文件的默认顺序,也可自己定义配置文件位置
–defaults-file –defaults-extra-file
④ 可通过 mysqld_multi –example 来获取配置文件示例
注:示例给出的password 有误,应改为 pass
⑤ 如果配置文件不使用root用户,其他自定义用户XXX,则必须在实例启动后创建并赋予权限
下面操作,基于/etc/my.cnf配置文件,添加 3308,3309端口示例 利用mysqld_multi进行管理
2. 配置步骤
2.1 创建相关目录
[root@localhost ~]# mkdir -pv /disk1/mysql/data3308
[root@localhost ~]# mkdir -pv /disk1/mysql/data3309
[root@localhost ~]# chown -R mysql.mysql /disk1/mysql/data330{8,9}
2.2 配置文件
在现有的/etc/my.cnf配置文件后追加以下内容:
[mysqld_multi]
mysqld = /disk1/mysql/bin/mysqld_safe
mysqladmin = /disk1/mysql/bin/mysqladmin
user = root
pass = 123456 ------注意这里跟示例样本不一样(示例是password)
[mysqld3308]
socket = /tmp/mysql3308.sock
port = 3308
pid-file = /disk1/mysql/data3308/hostname.pid
datadir = /disk1/mysql/data3308
[mysqld3309]
socket = /tmp/mysql3309.sock
port = 3309
pid-file = /disk1/mysql/data3309/hostname.pid
datadir = /disk1/mysql/data3309
2.3 初始化数据库实例
[root@localhost ~]# mysqld --initialize-insecure --user=mysql --basedir=/disk1/mysql/ --datadir=/disk1/mysql/data3308
[root@localhost ~]# mysqld --initialize-insecure --user=mysql --basedir=/disk1/mysql/ --datadir=/disk1/mysql/data3309
[root@localhost ~]# mysqld_multi start
2.4 实例用户密码
为每个实例修改root密码,并且密码要与配置文件/etc/my.cnf保持一致,mysqld_multi 工具该user 去管理各个实例
由于用的是root账户,实例默认就有不存在权限问题,如果其他自己定义的user,则需赋予权限。
确保3308,3309实例启动中,修改密码:
[root@localhost ~]# mysqladmin -P 3308 -S /tmp/mysql3308.sock -u root -p password 123456
Enter password: ---直接回车,初始生产的密码为空
[root@localhost ~]# mysqladmin -P 3309 -S /tmp/mysql3309.sock -u root -p password 123456
登录验证:
[root@localhost ~]# mysql -u root -p -S /tmp/mysql3308.sock
[root@localhost ~]# mysql -u root -p -S /tmp/mysql3309.sock
2.5 mysqld_multi的启动关闭管理
启动关闭所有:
[root@localhost ~]# mysqld_multi start
[root@localhost ~]# mysqld_multi stop
单个:
[root@localhost ~]# mysqld_multi start 3308
[root@localhost ~]# mysqld_multi start 3309
[root@localhost ~]# mysqld_multi stop 3308
[root@localhost ~]# mysqld_multi stop 3309
查询状态:
[root@localhost ~]# mysqld_multi report