跳转至

mysql5.7.20多实例配置

1. 删除上一篇生成的数据文件!

rm -rf /data/330*/*

# 没启动前内存:12.35G
# 启动3个实例后内存:12.87G
# 大概使用内存:0.52G
# 每个实例大概使用:0.17G内存!

2. 思路

1. 启动多个MySQL进程
2. 规划多套数据
3. 规划多个端口
4. 规划多套日志路径

3. 创建多套目录并改权限

mkdir -p /data/330{7,8,9}/data
chown -R mysql.mysql /data/330*

4. 准备多套配置文件

vim /data/3307/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/3307/data     #数据文件中不能有文件!!!
server-id=3307
port=3307
user=mysql  #不加后面启动会报错
log-bin=/data/3307/mysql-bin
socket=/data/3307/mysql.sock
log-error=/data/3307/mysql.log
[mysql]
socket=/data/3307/mysql.sock
vim /data/3308/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/3308/data
server-id=3308
port=3308
user=mysql
log-bin=/data/3308/mysql-bin
socket=/data/3308/mysql.sock
log-error=/data/3308/mysql.log
[mysql]
socket=/data/3308/mysql.sock
vim /data/3309/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/3309/data
server-id=3309
port=3309
user=mysql
log-bin=/data/3309/mysql-bin
socket=/data/3309/mysql.sock
log-error=/data/3309/mysql.log
[mysql]
socket=/data/3309/mysql.sock

5. 初始化多套数据

mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/data/3307/data --user=mysql
mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/data/3308/data --user=mysql
mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/data/3309/data --user=mysql

6. 启动多个实例

# (使用mysqld命令!不要使用mysqld_safe命令!!!否则不知道密码啊!!!)

mysqld --defaults-file=/data/3307/my.cnf &
mysqld --defaults-file=/data/3308/my.cnf &
mysqld --defaults-file=/data/3309/my.cnf &

7. 查看启动端口

netstat -tunlp |grep 330
root@4c16g:~# netstat -tunlp|grep 330
tcp6       0      0 :::3309                 :::*                    LISTEN      1403583/mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      2991330/mysqld
tcp6       0      0 :::3307                 :::*                    LISTEN      1403465/mysqld
tcp6       0      0 :::3308                 :::*                    LISTEN      1403466/mysqld

8. 分别连接测试

mysql -S /data/3307/mysql.sock -e "show variables like 'server_id';"

mysql -S /data/3308/mysql.sock -e "show variables like 'server_id';"

mysql -S /data/3309/mysql.sock -e "show variables like 'server_id';"

查看结果

root@4c16g:~# mysql -S /data/3307/mysql.sock -e "show variables like 'server_id';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 3307  |
+---------------+-------+
root@4c16g:~#
root@4c16g:~# mysql -S /data/3308/mysql.sock -e "show variables like 'server_id';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 3308  |
+---------------+-------+
root@4c16g:~#
root@4c16g:~# mysql -S /data/3309/mysql.sock -e "show variables like 'server_id';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 3309  |
+---------------+-------+

9. 关闭多实例mysql

mysqladmin -S /data/3307/mysql.sock shutdown

mysqladmin -S /data/3308/mysql.sock shutdown

mysqladmin -S /data/3309/mysql.sock shutdown
root@4c16g:~# mysqladmin -S /data/3307/mysql.sock shutdown
[1]   Done                    mysqld --defaults-file=/data/3307/my.cnf
root@4c16g:~#
root@4c16g:~# mysqladmin -S /data/3308/mysql.sock shutdown
[2]-  Done                    mysqld --defaults-file=/data/3308/my.cnf
root@4c16g:~#
root@4c16g:~# mysqladmin -S /data/3309/mysql.sock shutdown
[3]+  Done                    mysqld --defaults-file=/data/3309/my.cnf
root@4c16g:~#

查看端口确认

root@4c16g:~# netstat -tunlp|grep 330
tcp6       0      0 :::3306                 :::*                    LISTEN      2991330/mysqld

最后更新: 2022-02-20 08:44:07