标签搜索

mysql多实例安装

lilymaxyz
2025-05-15 / 0 评论 / 20 阅读 / 正在检测是否收录...

1.mysql5.7.44多实例【rocky9.4】

1.1.基础环境

安装依赖
yum -y install libaio numactl-libs ncurses-compat-libs

1.2.准备用户

groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin mysql

1.3.准备安装包

此方法为二进制安装,需要提前下载二进制包

image-20250515101741859

image-20250515101906816

image-20250515102310664

直接下载安装包,点击download

右击复制链接地址
https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz

1.4.软件环境

mkdir -p /data/softs
cd /data/softs

# 上传下载的安装包到/data/softs目录下
# 也可以使用wget
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz

# 解压移动
tar xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql

1.5.环境变量设定

echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh

1.6.相关目录结构设置

# 创建目录
mkdir -pv /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid,share}
[root@Rocky9-15 ~]# tree /mysql
/mysql
├── 3306
│   ├── bin
│   ├── data
│   ├── etc
│   ├── log
│   ├── pid
│   └── socket
│   └── share
├── 3307
│   ├── bin
│   ├── data
│   ├── etc
│   ├── log
│   ├── pid
│   └── socket
│   └── share
└── 3308
    ├── bin
    ├── data
    ├── etc
    ├── log
    ├── pid
    └── socket
    └── share

24 directories, 0 files
# 为目录赋予用户权限
chown -R mysql:mysql /usr/local/mysql/
chown -R mysql:mysql /mysql/

1.7.生成三个实例的初始数据

# 空密码初始化
for i in 6 7 8
do
    /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/mysql/330$i/data
done

image-20250515103556522

1.8.创建主配置文件

for i in 6 7 8
do
cat > /mysql/330$i/etc/my.cnf <<-eof
[mysqld]
user=mysql
port=330$i
socket = /mysql/330$i/socket/mysql.sock
basedir = /mysql/330$i
datadir = /mysql/330$i/data
skip_name_resolve = 1
pid-file = /mysql/330$i/pid/mysqld.pid
log-error = /mysql/330$i/log/error.log
lc-messages-dir = /usr/local/mysql/share/english
lc-messages = en_US

[client]
socket = /mysql/330$i/socket/mysql.sock
eof
done

image-20250515103906003

1.9.定制服务管理文件

下面两个服务脚本都可以使用
  • 服务脚本一
for i in 6 7 8
do
cat >/usr/lib/systemd/system/mysqld330$i.service<<EOF
[Unit]
Description=MySQL Community Server
Documentation=https://dev.mysql.com/doc/refman/8.4/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=/mysql/330$i/etc/my.cnf
ExecReload=/bin/kill -s HUP \$MAINPID
ExecStop=/bin/kill -s TERM \$MAINPID
LimitNOFILE = 10000
EOF
done
  • 服务脚本二
for i in 6 7 8
do
cat >/usr/lib/systemd/system/mysqld330$i.service<<EOF
[Unit]
Description=MySQL Community Server
Documentation=https://dev.mysql.com/doc/refman/8.4/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=/mysql/330$i/etc/my.cnf
ExecStop=/usr/local/mysql/bin/mysqladmin -uroot -p'Mysql.123456' -S /mysql/330$i/socket/mysql.sock
LimitNOFILE = 10000
EOF
done

1.10.更改文件属性

# 为目录赋予用户权限
chown -R mysql:mysql /mysql/

1.11.启动服务

# 重载配置
systemctl daemon-reload
for i in 6 7 8
do
systemctl enable --now mysqld330$i
done

image-20250515105532920

1.12.登录数据库

[root@Rocky9-15 ~]# mysql -S /mysql/3306/socket/mysql.sock
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.44 MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.44    |
+-----------+
1 row in set (0.00 sec)

mysql> exit
Bye
[root@Rocky9-15 ~]# mysql -S /mysql/3307/socket/mysql.sock -e "select version();"
+-----------+
| version() |
+-----------+
| 5.7.44    |
+-----------+
[root@Rocky9-15 ~]# mysql -S /mysql/3308/socket/mysql.sock -e "select version();"
+-----------+
| version() |
+-----------+
| 5.7.44    |
+-----------+

1.13.设置登录密码

# 更改密码
for i in 6 7 8
do
mysqladmin -uroot -S /mysql/330$i/socket/mysql.sock password 'Mysql.123456'
done
# 查看版本信息
for i in 6 7 8
do
mysql -S /mysql/330$i/socket/mysql.sock -p'Mysql.123456' -e "select version();"
done
# 查看端口号
for i in 6 7 8
do
mysql -S /mysql/330$i/socket/mysql.sock -p'Mysql.123456' -e "select @@port;"
done

2.mysql8.4.0多实例【rocky9.4】

2.1.基础环境

# 安装依赖
yum -y install libaio numactl-libs ncurses-compat-libs

2.2.准备用户

groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin mysql

2.3.准备安装包

mkdir -p /data/softs

cd /data/softs

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.4.0-linux-glibc2.28-x86_64.tar.xz

2.4.软件环境

cd /data/softs

tar xf mysql-8.4.0-linux-glibc2.28-x86_64.tar.xz

mv mysql-8.4.0-linux-glibc2.28-x86_64 /usr/local/mysql

2.5.环境变量

echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh

2.6.相关目录结构设置

mkdir -pv /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid,share}
[root@Rocky9-15 ~]# tree /mysql/
/mysql/
├── 3306
│   ├── bin
│   ├── data
│   ├── etc
│   ├── log
│   ├── pid
│   ├── share
│   └── socket
├── 3307
│   ├── bin
│   ├── data
│   ├── etc
│   ├── log
│   ├── pid
│   ├── share
│   └── socket
└── 3308
    ├── bin
    ├── data
    ├── etc
    ├── log
    ├── pid
    ├── share
    └── socket

24 directories, 0 files
# 为目录赋予用户权限
chown -R mysql:mysql /usr/local/mysql/
chown -R mysql:mysql /mysql/

2.7.生成三个实例的初始数据

# 空密码初始化
for i in 6 7 8
do
    /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/mysql/330$i/data
done

image-20250515114450042

2.8.创建主配置文件

for i in 6 7 8
do
cat > /mysql/330$i/etc/my.cnf <<-eof
[mysql]
port = 330$i
socket = /mysql/330$i/socket/mysql.sock

[mysqld]
port = 330$i
mysqlx_port = 330$i0
mysqlx_socket = /mysql/330$i/socket/mysqlx.sock
basedir = /mysql/330$i
datadir = /mysql/330$i/data
socket = /mysql/330$i/socket/mysql.sock
pid-file = /mysql/330$i/pid/mysqld.pid
log-error = /mysql/330$i/log/error.log

eof
done

2.9.定制服务管理文件

for i in 6 7 8
do
cat >/usr/lib/systemd/system/mysqld330$i.service<<EOF
[Unit]
Description=MySQL Community Server
Documentation=https://dev.mysql.com/doc/refman/8.4/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=/mysql/330$i/etc/my.cnf
ExecReload=/bin/kill -s HUP \$MAINPID
ExecStop=/bin/kill -s TERM \$MAINPID
LimitNOFILE = 10000
EOF
done

2.10.更改文件属性

# 为目录赋予用户权限
chown -R mysql:mysql /mysql/

2.11.启动服务

# 重载配置
systemctl daemon-reload
for i in 6 7 8
do
systemctl enable --now mysqld330$i
done

image-20250515115541036

2.12.登录数据库

[root@Rocky9-15 ~]# mysql -S /mysql/3306/socket/mysql.sock
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.4.0 MySQL Community Server - GPL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.4.0     |
+-----------+
1 row in set (0.00 sec)

mysql> exit
Bye
[root@Rocky9-15 ~]# mysql -S /mysql/3307/socket/mysql.sock -e "select version();"
+-----------+
| version() |
+-----------+
| 8.4.0     |
+-----------+
[root@Rocky9-15 ~]# mysql -S /mysql/3308/socket/mysql.sock -e "select version();"
+-----------+
| version() |
+-----------+
| 8.4.0     |
+-----------+

2.13.设置登录密码

# 设置密码
for i in 6 7 8
do
mysqladmin -uroot -S /mysql/330$i/socket/mysql.sock password 'Mysql.123456'
done
# 查看版本信息
for i in 6 7 8
do
mysql -S /mysql/330$i/socket/mysql.sock -p'Mysql.123456' -e "select version();"
done
# 查看端口号
for i in 6 7 8
do
mysql -S /mysql/330$i/socket/mysql.sock -p'Mysql.123456' -e "select @@port;"
done

3.mysql5.6.50多实例【rocky9.4】

3.1.基础环境

yum install -y perl-Data-Dumper autoconf libaio  perl-Sys-Hostname ncurses-compat-libs

3.2.准备用户

groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin mysql

3.3.准备安装包

mkdir -p /data/softs

cd /data/softs

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.50-linux-glibc2.12-x86_64.tar.gz

3.4.软件环境

cd /data/softs

tar xf mysql-5.6.50-linux-glibc2.12-x86_64.tar.gz

mv mysql-5.6.50-linux-glibc2.12-x86_64 /usr/local/mysql

3.5.环境变量

echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh

3.6.相关目录结构设置

mkdir -pv /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid,share}
[root@Rocky9-18 softs]# tree /mysql/
/mysql/
├── 3306
│   ├── bin
│   ├── data
│   ├── etc
│   ├── log
│   ├── pid
│   ├── share
│   └── socket
├── 3307
│   ├── bin
│   ├── data
│   ├── etc
│   ├── log
│   ├── pid
│   ├── share
│   └── socket
└── 3308
    ├── bin
    ├── data
    ├── etc
    ├── log
    ├── pid
    ├── share
    └── socket

24 directories, 0 files
# 为目录赋予用户权限
chown -R mysql:mysql /usr/local/mysql/
chown -R mysql:mysql /mysql/

3.7.生成三个实例的初始数据

# 空密码初始化
for i in 6 7 8
do
    /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/mysql/330$i/data
done

image-20250515124353894

3.8.创建主配置文件

for i in 6 7 8
do
cat > /mysql/330$i/etc/my.cnf <<-eof
[mysqld]
port=330$i
user=mysql
socket = /mysql/330$i/socket/mysql.sock
basedir = /usr/local/mysql
datadir = /mysql/330$i/data
innodb_file_per_table=on
skip_name_resolve = on
symbolic-links=0

[client]
socket = /mysql/330$i/socket/mysql.sock

[mysqld_safe]
pid-file = /mysql/330$i/pid/mysqld.pid
log-error = /mysql/330$i/log/error.log
eof
done

3.9.定制服务管理文件

for i in 6 7 8
do
cat >/usr/lib/systemd/system/mysqld330$i.service<<EOF
[Unit]
Description=MySQL Community Server
Documentation=https://dev.mysql.com/doc/refman/8.4/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=/mysql/330$i/etc/my.cnf
ExecReload=/bin/kill -s HUP \$MAINPID
ExecStop=/bin/kill -s TERM \$MAINPID
LimitNOFILE = 10000
EOF
done

3.10.更改文件属性

# 为目录赋予用户权限
chown -R mysql:mysql /mysql/

3.11.启动服务

# 重载配置
systemctl daemon-reload
for i in 6 7 8
do
systemctl enable --now mysqld330$i
done

image-20250515125118036

3.12.登录数据库

[root@Rocky9-18 ~]# mysql -S /mysql/3306/socket/mysql.sock
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.50 MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.50    |
+-----------+
1 row in set (0.00 sec)

mysql> exit
Bye

3.13.设置登录密码

# 设置密码
for i in 6 7 8
do
mysqladmin -uroot -S /mysql/330$i/socket/mysql.sock password 'Mysql.123456'
done
# 查看版本信息
for i in 6 7 8
do
mysql -S /mysql/330$i/socket/mysql.sock -p'Mysql.123456' -e "select version();"
done
# 查看端口号
for i in 6 7 8
do
mysql -S /mysql/330$i/socket/mysql.sock -p'Mysql.123456' -e "select @@port;"
done

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

4.1.多实例部署环境规划

实例信息编号实例服务端口实例存储路径实例配置文件套接字文件
mysql5.6.503306/mysql/3306/data/mysql/3306/etc/my.cnf/mysql/3306/socket/mysql.sock
mysql5.7.443307/mysql/3307/data/mysql/3307/etc/my.cnf/mysql/3307/socket/mysql.sock
mysql8.4.03308/mysql/3308/data/mysql/3308/etc/my.cnf/mysql/3308/socket/mysql.sock

4.2.基础环境

# 安装依赖
yum -y install libaio numactl-libs ncurses-compat-libs perl-Data-Dumper autoconf libaio  perl-Sys-Hostname ncurses-compat-libs

4.3.准备用户

groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin mysql

4.4.准备安装包

mkdir -p /data/softs

cd /data/softs

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.50-linux-glibc2.12-x86_64.tar.gz

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.4.0-linux-glibc2.28-x86_64.tar.xz

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz

4.5.软件环境

如果不想浪费下载时间,可以上传下载好的安装包
cd /data/softs

tar xf mysql-5.6.50-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.6.50-linux-glibc2.12-x86_64 /usr/local/mysql3306

tar xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql3307

tar xf mysql-8.4.0-linux-glibc2.28-x86_64.tar.xz
mv mysql-8.4.0-linux-glibc2.28-x86_64 /usr/local/mysql3308

4.6.相关目录结构设置

mkdir -pv /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid,share}
# 为目录赋予用户权限
chown -R mysql:mysql /usr/local/mysql*
chown -R mysql:mysql /mysql/

4.7.生成三个实例的初始数据

由于每个实例初始化都要找环境变量,为了避免冲突
1.配置环境变量
2.初始化mysql脚本
3.初始化环境变量
下面最好一个步骤一个步骤执行
echo $PATH

echo 'PATH=/usr/local/mysql3306/bin:$PATH' > /etc/profile.d/mysql3306.sh
source /etc/profile.d/mysql3306.sh

/usr/local/mysql3306/scripts/mysql_install_db --basedir=/usr/local/mysql3306 --datadir=/mysql/3306/data
PATH="/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"



echo 'PATH=/usr/local/mysql3307/bin:$PATH' > /etc/profile.d/mysql3307.sh
source /etc/profile.d/mysql3307.sh

/usr/local/mysql3307/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql3307 --datadir=/mysql/3307/data
PATH="/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"



echo 'PATH=/usr/local/mysql3308/bin:$PATH' > /etc/profile.d/mysql3308.sh
source /etc/profile.d/mysql3308.sh
/usr/local/mysql3308/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql3308 --datadir=/mysql/3308/data
PATH="/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"

image-20250515134528130

4.8.环境变量--可省略

注意:环境变量仅对当前窗口有效,如果更换窗口,需要重新执行环境变量
echo 'PATH=/usr/local/mysql3306/bin:$PATH' > /etc/profile.d/mysql3306.sh
source /etc/profile.d/mysql3306.sh

echo 'PATH=/usr/local/mysql3307/bin:$PATH' > /etc/profile.d/mysql3307.sh
source /etc/profile.d/mysql3307.sh

echo 'PATH=/usr/local/mysql3308/bin:$PATH' > /etc/profile.d/mysql3308.sh
source /etc/profile.d/mysql3308.sh

4.9.创建主配置文件

cat > /mysql/3306/etc/my.cnf <<-eof
[mysqld]
port=3306
user=mysql
socket = /mysql/3306/socket/mysql.sock
basedir = /usr/local/mysql3306
datadir = /mysql/3306/data
innodb_file_per_table=on
skip_name_resolve = on
symbolic-links=0

[client]
socket = /mysql/3306/socket/mysql.sock

[mysqld_safe]
pid-file = /mysql/3306/pid/mysqld.pid
log-error = /mysql/3306/log/error.log
eof
cat > /mysql/3307/etc/my.cnf <<-eof
[mysqld]
user=mysql
port=3307
socket = /mysql/3307/socket/mysql.sock
basedir = /mysql/3307
datadir = /mysql/3307/data
skip_name_resolve = 1
pid-file = /mysql/3307/pid/mysqld.pid
log-error = /mysql/3307/log/error.log
lc-messages-dir = /usr/local/mysql3307/share/english
lc-messages = en_US

[client]
socket = /mysql/3307/socket/mysql.sock
eof
cat > /mysql/3308/etc/my.cnf <<-eof
[mysql]
port = 3308
socket = /mysql/3308/socket/mysql.sock

[mysqld]
port = 3308
mysqlx_port = 33080
mysqlx_socket = /mysql/3308/socket/mysqlx.sock
basedir = /mysql/3308
datadir = /mysql/3308/data
socket = /mysql/3308/socket/mysql.sock
pid-file = /mysql/3308/pid/mysqld.pid
log-error = /mysql/3308/log/error.log
eof

4.10.定制服务管理文件

for i in 6 7 8
do
cat >/usr/lib/systemd/system/mysqld330$i.service<<EOF
[Unit]
Description=MySQL Community Server
Documentation=https://dev.mysql.com/doc/refman/8.4/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql330$i/bin/mysqld --defaults-file=/mysql/330$i/etc/my.cnf
ExecReload=/bin/kill -s HUP \$MAINPID
ExecStop=/bin/kill -s TERM \$MAINPID
LimitNOFILE = 10000
EOF
done

4.11.更改文件属性

# 为目录赋予用户权限
chown -R mysql:mysql /mysql/

4.12.启动服务

# 重载配置
systemctl daemon-reload
for i in 6 7 8
do
systemctl enable --now mysqld330$i
done

image-20250515135205967

4.13.测试是否存活

for i in 6 7 8
do
    /usr/local/mysql330$i/bin/mysqladmin -S /mysql/330$i/socket/mysql.sock ping
done

image-20250515140020706

4.13.登录数据库

注意:由于是多个版本的mysql,设置环境变量会发生冲突

所以,登录mysql使用绝对路径登录

image-20250515140630876

/usr/local/mysql3306/bin/mysql -S /mysql/3306/socket/mysql.sock

/usr/local/mysql3307/bin/mysql -S /mysql/3307/socket/mysql.sock

/usr/local/mysql3307/bin/mysql -S /mysql/3307/socket/mysql.sock

image-20250515140414508

image-20250515140530809

4.14.设置登录密码

# 设置密码
for i in 6 7 8
do
    /usr/local/mysql330$i/bin/mysqladmin -uroot -S /mysql/330$i/socket/mysql.sock password 'Mysql.123456'
done
# 查看版本信息
for i in 6 7 8
do
/usr/local/mysql330$i/bin/mysql -S /mysql/330$i/socket/mysql.sock -p'Mysql.123456' -e "select version();"
done

image-20250515140922415

# 查看端口号
for i in 6 7 8
do
/usr/local/mysql330$i/bin/mysql -S /mysql/330$i/socket/mysql.sock -p'Mysql.123456' -e "select @@port;"
done

image-20250515141013472

endl

0

评论

博主关闭了所有页面的评论