MySQL多实例部署实战:同版本与多版本实例配置

来自AI助手的总结
介绍MySQL同版本及跨版本多实例部署与systemd管理方法
MySQL多实例部署实战:同版本与多版本实例配置

一、相同版本(8.0)的数据库服务多实例配置实现

环境准备

上传数据库程序软件包


[root@master ~]# cd /usr/local

[root@master local]# rz -y

解压数据库服务软件程序压缩包


[root@master local]# tar xf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz

创建数据库服务程序目录的软链接


[root@master local]# ln -s mysql-8.0.26-linux-glibc2.12-x86_64 mysql

配置数据库服务程序环境变量

末尾处添加如下内容

[root@master local]# vim /etc/profile
…
…
export PATH=/usr/local/mysql/bin:$PATH

验证


[root@master local]# tail -1 /etc/profile

export PATH=/usr/local/mysql/bin:$PATH

环境变量生效


[root@master local]# source /etc/profile

获取数据库服务版本信息


[root@master local]# mysql -V

mysql  Ver 8.0.26 for Linux on x86_64 (MySQL Community Server - GPL)

创建数据库服务管理用户信息


[root@master local]# useradd mysql

步骤一:多实例部署环境规划

实例信息编号 实例服务端口 实例存储路径 实例配置文件 套接字文件
mysql-01 端口信息:3307 /data/3307/data /data/3307/data/my.cnf /tmp/mysql3307.sock
mysql-02 端口信息:3308 /data/3308/data /data/3308/data/my.cnf /tmp/mysql3308.sock
mysql-03 端口信息:3309 /data/3309/data /data/3309/data/my.cnf /tmp/mysql3309.sock

步骤二:多实例部署环境准备


# 创建数据库多实例所需目录

[root@master ~]# mkdir -p /data/330{7..9}/data

# 授权数据库多实例所需权限

[root@master ~]# chown -R mysql. /data/*

步骤三:多实例初始数据信息


# 多实例初始化配置前调整操作

[root@master ~]# mv /etc/my.cnf /tmp

# 多实例初始化操作过程

[root@master ~]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data

[root@master ~]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3308/data

[root@master ~]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3309/data

步骤四:多实例配置文件编写

[root@master ~]# vim /data/3307/data/my.cnf
[mysql]
socket=/tmp/mysql3307.sock
[mysqld]
user=mysql
port=3307
basedir=/usr/local/mysql
datadir=/data/3307/data
socket=/tmp/mysql3307.sock
[root@master ~]# vim /data/3308/data/my.cnf
[mysqld]
user=mysql
port=3308
basedir=/usr/local/mysql
datadir=/data/3308/data
socket=/tmp/mysql3308.sock
[root@master ~]# vim /data/3309/data/my.cnf
[mysqld]
user=mysql
port=3309
basedir=/usr/local/mysql
datadir=/data/3309/data
socket=/tmp/mysql3309.sock

步骤五:多实例服务运行启动


[root@master ~]# mysqld_safe --defaults-file=/data/3307/data/my.cnf &

[root@master ~]# mysqld_safe --defaults-file=/data/3308/data/my.cnf &

[root@master ~]# mysqld_safe --defaults-file=/data/3309/data/my.cnf &

步骤六:多实例服务端口查看

[root@master ~]# ss -lntup|grep mysqld
tcp    LISTEN     0      128    [::]:3306               [::]:*                   users:(("mysqld",pid=1643,fd=23))
tcp    LISTEN     0      128    [::]:3307               [::]:*                   users:(("mysqld",pid=2543,fd=22))
tcp    LISTEN     0      128    [::]:3308               [::]:*                   users:(("mysqld",pid=2715,fd=22))
tcp    LISTEN     0      128    [::]:3309               [::]:*                   users:(("mysqld",pid=2887,fd=22))
tcp    LISTEN     0      70     [::]:33060              [::]:*                   users:(("mysqld",pid=1643,fd=21))

步骤七:进入数据库


#常用方法

[root@master ~]# mysql -S /tmp/mysql3307.sock

#不常用方法

[root@master ~]# mysql --defaults-file=/data/3307/data/my.cnf

说明:使用这种方法需要提前在/data/3307/data/my.cnf文件中添加socket=/tmp/mysql3307.sock内容,要不然无法进入

通过端口验证当前所在实例

mysql> select @@port;
+--------+
| @@port |
+--------+
|   3307 |
+--------+
1 row in set (0.00 sec)
mysql> select @@port;
+--------+
| @@port |
+--------+
|   3308 |
+--------+
1 row in set (0.00 sec)
mysql> select @@port;
+--------+
| @@port |
+--------+
|   3309 |
+--------+
1 row in set (0.00 sec)

步骤八:实现数据库服务多实例被systemd管理

#编写配置文件
[root@master ~]# 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/data/my.cnf
LimitNOFILE=5000
[root@master ~]# 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/data/my.cnf
LimitNOFILE=5000
[root@master ~]# vim /etc/systemd/system/mysqld3309.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/3309/data/my.cnf
LimitNOFILE=5000
#依次启动多实例数据库
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl start mysqld3307
[root@master ~]# systemctl start mysqld3308
[root@master ~]# systemctl start mysqld3309
#验证
[root@master ~]# ss -lntup | grep mysql
tcp    LISTEN     0      70     [::]:33060              [::]:*                   users:(("mysqld",pid=5442,fd=21))
tcp    LISTEN     0      128    [::]:3307               [::]:*                   users:(("mysqld",pid=5442,fd=23))
tcp    LISTEN     0      128    [::]:3308               [::]:*                   users:(("mysqld",pid=5497,fd=21))
tcp    LISTEN     0      128    [::]:3309               [::]:*                   users:(("mysqld",pid=5548,fd=21))

二、不同版本(5.6、5.7、8.0)的数据库服务多实例配置实现

环境准备

上传5.6、5.7和8.0版本的数据库程序软件包


[root@master ~]# cd /usr/local

[root@master local]# rz -y

解压5.6、5.7和8.0版本的数据库服务软件程序压缩包


[root@master local]# tar xf mysql-5.6.48-linux-glibc2.12-x86_64.tar.gz

[root@master local]# tar xf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz

[root@master local]# tar xf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz

创建数据库服务程序目录的软链接


[root@master local]# ln -s mysql-5.6.48-linux-glibc2.12-x86_64 mysql56

[root@master local]# ln -s mysql-5.7.30-linux-glibc2.12-x86_64 mysql57

[root@master local]# ln -s mysql-8.0.26-linux-glibc2.12-x86_64 mysql

步骤一:多实例部署环境规划

实例信息编号 实例服务端口 实例存储路径 实例配置文件 套接字文件
mysql-01 端口信息:3306 /data/3306/data /etc/my80.cnf /tmp/mysql3306.sock
mysql-02 端口信息:3356 /data/3356/data /etc/my56.cnf /tmp/mysql3356.sock
mysql-03 端口信息:3357 /data/3357/data /etc/my57.cnf /tmp/mysql3357.sock

步骤二:多实例部署环境准备(进行初始化操作)


# 创建数据库多实例所需目录

[root@master ~]# mkdir -p /data/3306/data

[root@master ~]# mkdir -p /data/335{6,7}/data

# 授权数据库多实例所需权限

[root@master ~]# chown -R mysql. /data/*

步骤三:多实例初始数据信息


# 多实例初始化配置前调整操作

[root@master ~]# mv /etc/my.cnf /tmp

# 多实例初始化操作过程

[root@master ~]# rm -rf /data/3356/data/*

[root@master ~]# rm -rf /data/3357/data/*

[root@master ~]# rm -rf /data/3306/data/*

[root@master ~]# /usr/local/mysql56/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql56/ --datadir=/data/3356/data/

[root@master ~]# /usr/local/mysql57/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57/ --datadir=/data/3357/data/

[root@master ~]# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/3306/data/

步骤四:多实例配置文件编写

[root@master ~]# vim /etc/my56.cnf
[mysqld]
server_id=3356
port=3356
user=mysql
basedir=/usr/local/mysql56
datadir=/data/3356/data
socket=/tmp/mysql3356.sock
innodb_fast_shutdown=0
[root@master ~]# vim /etc/my57.cnf
[mysqld]
port=3357
server_id=3357
user=mysql
basedir=/usr/local/mysql57
datadir=/data/3357/data
socket=/tmp/mysql3357.sock
innodb_fast_shutdown=0
[root@master ~]# vim /etc/my80.cnf
[mysqld]
port=3306
server_id=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
socket=/tmp/mysql3306.sock
innodb_fast_shutdown=0

步骤五:实现数据库服务多实例被systemd管理

#编写配置文件
[root@master ~]# vim /etc/systemd/system/mysqld56.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=/etc/my56.cnf
LimitNOFILE=5000
[root@master ~]# vim /etc/systemd/system/mysqld57.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=/etc/my57.cnf
LimitNOFILE=5000
[root@master ~]# 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/my80.cnf
LimitNOFILE=5000

步骤六:多实例服务运行启动

[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl start mysqld56
[root@master ~]# systemctl start mysqld57
[root@master ~]# systemctl start mysqld

步骤七:多实例服务端口查看

[root@master ~]# ss -lntup|grep mysqld
tcp    LISTEN     0      70     [::]:33060              [::]:*                   users:(("mysqld",pid=3067,fd=21))
tcp    LISTEN     0      128    [::]:3306               [::]:*                   users:(("mysqld",pid=3067,fd=24))
tcp    LISTEN     0      80     [::]:3356               [::]:*                   users:(("mysqld",pid=3030,fd=10))
tcp    LISTEN     0      80     [::]:3357               [::]:*                   users:(("mysqld",pid=3187,fd=20))

步骤八:进入数据库

常用方法


#进入8.0版本

[root@master ~]# mysql -S /tmp/mysql3306.sock

#进入5.6版本

[root@master ~]# mysql -S /tmp/mysql3356.sock

#进入5.7版本

[root@master ~]# mysql -S /tmp/mysql3357.sock

不常用方法


#进入8.0版本

[root@master ~]# mysql --defaults-file=/etc/my80.cnf

#进入5.6版本

[root@master ~]# mysql --defaults-file=/etc/my56.cnf

#进入5.7版本

[root@master ~]# mysql --defaults-file=/etc/my57.cnf

说明:使用这种方法需要提前在/etc/my80.cnf文件中添加socket=/tmp/mysql3306.sock内容,要不然无法进入

通过端口验证当前所在实例

#进入8.0版本验证
mysql> select @@port;
+--------+
| @@port |
+--------+
|   3306 |
+--------+
1 row in set (0.00 sec)
#进入5.6版本验证
mysql> select @@port;
+--------+
| @@port |
+--------+
|   3356 |
+--------+
1 row in set (0.00 sec)
#进入5.7版本验证
mysql> select @@port;
+--------+
| @@port |
+--------+
|   3357 |
+--------+
1 row in set (0.00 sec)
© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容