Mysql数据库服务多实例systemd管理

01 编写服务启动配置文件
首先,参考正常MySQL数据库服务启动的systemd配置文件信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 查看默认数据库服务启动文件信息
vim /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=5000

其次,可以根据默认的MySQL数据库服务启动文件,编写多实例启动文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 编写数据库3307端口实例服务启动文件
vim /etc/systemd/system/mysqld3307.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
LimitNOFILE=5000

# 编写数据库3308端口实例服务启动文件
vim /etc/systemd/system/mysqld3308.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
LimitNOFILE=5000

# 编写数据库3309端口实例服务启动文件
vim /etc/systemd/system/mysqld3308.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
LimitNOFILE=5000

02 加载服务启动配置文件

1
2
# 加载system目录中新添加的服务启动管理文件
systemctl daemon-reload

03 测试服务启动停止操作

1
2
3
4
5
6
7
8
9
10
11
12
13
# 启动数据库多实例服务
systemctl start mysqld3307
systemctl start mysqld3308
systemctl start mysqld3308
# 检查多实例运行状态
ss -lntp|grep mysql

# 停止数据库多实例服务
systemctl stop mysqld3307
systemctl stop mysqld3308
systemctl stop mysqld3308
# 检查多实例运行状态
ss -lntp|grep mysql

部署数据库程序多个版本服务实例

01 数据库服务程序下载解压
…省略…
确认数据库服务安装部署后情况:

1
2
3
4
5
6
7
ll -d  mysql*
lrwxrwxrwx 1 root root 35 10月 27 23:28 mysql56 -> mysql-5.6.48-linux-glibc2.12-x86_64
drwxr-xr-x 13 root root 191 10月 27 23:27 mysql-5.6.48-linux-glibc2.12-x86_64
-r-------- 1 root root 343082156 10月 27 23:00 mysql-5.6.48-linux-glibc2.12-x86_64.tar.gz
lrwxrwxrwx 1 root root 35 10月 27 23:29 mysql57 -> mysql-5.7.30-linux-glibc2.12-x86_64
drwxr-xr-x 9 root root 129 10月 27 23:28 mysql-5.7.30-linux-glibc2.12-x86_64
-r-------- 1 root root 660017902 10月 27 23:02 mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz

02 数据库服务环境变量取消

1
2
3
4
5
6
7
8
9
# 将以下环境变量配置信息注释
vim /etc/profile
export PATH=/usr/local/mysql/bin:$PATH
-- 配置信息注释掉后,可以重新建立远程连接,生成新的会话信息

# 验证环境变量信息已经被注释
mysql -V
-bash:mysql:command not found
-- 看到以上信息,表示数据库服务已经被注释

03 数据库服务配置文件移除

1
2
# 移动数据库默认配置文件,以免多实例版本服务默认加载
mv /etc/my.cnf /backup

04 数据库服务实例配置目录

1
2
3
4
# 创建数据库多实例所需目录
mkdir -p /data/3356/data
mkdir -p /data/3357/data
chown -R mysql. /data/*

05 数据库服务初始过程操作

1
2
3
4
5
6
7
8
9
10
# 数据库服务初始化操作:5.6版本
/usr/local/mysql56/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql56/ --datadir=/data/3356/data
-- 初始化命令执行完毕后,输出信息显示两个ok,就表示5.6版本数据库程序初始化成功

# 数据库服务初始化操作:5.7版本
/usr/local/mysql57/bin/mysqld --user=mysql --initialize-insecure --basedir=/usr/local/mysql57/ --datadir=/data/3357/data

# 数据库服务初始化操作:8.0版本
.. 省略..
-- 初始化操作命令与操作过程和5.7一致,不做重复性操作了

06 数据库服务配置文件编写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 数据库服务实例服务配置文件编写:5.6
cat >/data/3356/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql56
datadir=/data/3356/data
socket=/tmp/mysql3356.sock
port=3356
EOF
# 数据库服务实例服务配置文件编写:5.7
cat >/data/3357/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql57
datadir=/data/3357/data
socket=/tmp/mysql3357.sock
port=3357
EOF

# 数据库服务实例服务配置文件编写:8.0 .. 省略.. — 多实例配置文件信息和5.7一致,不做重复性操作了

07 数据库服务配置启动文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 数据库服务多实例启动文件信息:5.6
vim /etc/systemd/system/mysqld3356.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql56/bin/mysqld --defaults-file=/data/3356/my.cnf
LimitNOFILE=5000

# 数据库服务多实例启动文件信息:5.7
vim /etc/systemd/system/mysqld3357.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql57/bin/mysqld --defaults-file=/data/3357/my.cnf
LimitNOFILE=5000

# 数据库服务多实例启动文件信息:8.0
...省略...

08 数据库服务程序启动操作

1
2
3
4
5
6
7
8
9
10
11
12
# 启动多版本数据库服务实例
systemctl start mysqld3356
systemctl start mysqld3357

# 检查多实例程序是否启动成功
ss -lntp|grep mysqld
LISTEN 0 80 [::]:3356 [::]:* users:(("mysqld",pid=65995,fd=10))
LISTEN 0 80 [::]:3357 [::]:* users:(("mysqld",pid=66082,fd=20))

# 进行数据库连接测试
mysql -S /tmp/mysql3356.sock
mysql -S /tmp/mysql3357.sock

Mysql数据库服务多实例systemd管理
https://johnnysxy.github.io/2023/06/05/Mysql数据库服务多实例systemd管理/
作者
Johnny Song
发布于
2023年6月5日
许可协议