MySQL (不)同版本多实例

1.实例
实例结构组成:Mysqld守护进程 + Master thread + worker thread(IO\SQL\Purge…) + 预分配内存结构

在这里插入图片描述

2.多实例
在一台机器上开启多个不同的MySQL服务端口(3306,3307…),运行多个MySQL服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供各自的服务。

同版本多实例共用一套MySQL安装程序,配置文件每个实例对应一个(可以用同一个),启动程序用同一个,数据文件是不同的;不同版本多实例各有一套MySQL安装程序,配置文件每个实例对应一个,启动程序每个实例对应一个,数据文件是不同的;

3.手撕同版本多实例

在这里插入图片描述

下载软件地址:https://downloads.mysql.com/archives/community/

本文同版本以 8.0.24 为例

3.1 上传软件到指定目录

cd /opt/soft
上传软件包  mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz

3.2 检验MD5值

md5sum mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz
ded5c24afd07a4a529e02d110c44b2ac  mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz
对比官方MD5: ded5c24afd07a4a529e02d110c44b2ac

3.3 解压并创建软连

tar xf mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz
ln -s mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz mysql80

3.4 修改环境变量

echo 'export PATH=/opt/soft/mysql80/bin:$PATH' >>/etc/profile
source /etc/profile  
mysql -V
  mysql  Ver 8.0.24 for Linux on x86_64 (MySQL Community Server - GPL)

3.5 清理遗留环境

rpm -qa|grep mariadb
    mariadb-libs-5.5.60-1.el7_5.x86_64

用yum清理
yum remove mariadb-libs-5.5.60-1.el7_5.x86_64        

删掉/etc/my.cnf已有文件
rm -rf /etc/my.cnf

3.6 依赖包

yum install -y libaio-devel

3.7 创建相关目录并授权

mkdir /data/330{7..9}/data -p                    -- 存放数据库数据                     
useradd -M -s /sbin/nologin mysql                -- 创建管理用户
chown -R mysql.mysql /data/*

3.8 准备配置文件

cat > /data/3307/my.cnf <<EOF 
[mysqld]
basedir=/opt/soft/mysql80/
datadir=/data/3307/data
user=mysql
server_id=7
port=3307
socket=/tmp/mysql_3307.sock
[mysql]
socket=/tmp/mysql_3307.sock
default-character-set=utf8
EOF

cat > /data/3308/my.cnf <<EOF 
[mysqld]
basedir=/opt/soft/mysql80/
datadir=/data/3308/data
user=mysql
server_id=8
port=3308
socket=/tmp/mysql_3308.sock
[mysql]
socket=/tmp/mysql_3308.sock
default-character-set=utf8
EOF

cat > /data/3309/my.cnf <<EOF 
[mysqld]
basedir=/opt/soft/mysql80/
datadir=/data/3309/data
user=mysql
server_id=9
port=3309
socket=/tmp/mysql_3309.sock
[mysql]
socket=/tmp/mysql_3309.sock
default-character-set=utf8
EOF

3.9 数据初始化

mysqld --defaults-file=/data/3307/my.cnf --initialize-insecure
mysqld --defaults-file=/data/3308/my.cnf --initialize-insecure
mysqld --defaults-file=/data/3309/my.cnf --initialize-insecure
3.10 启动&验证
mysqld_safe --defaults-file=/data/3307/my.cnf &
mysqld_safe --defaults-file=/data/3308/my.cnf &
mysqld_safe --defaults-file=/data/3309/my.cnf &

netstat -lnutp|grep mysqld
tcp6       0      0 :::33060                :::*                    LISTEN      11776/mysqld        
tcp6       0      0 :::3307                 :::*                    LISTEN      11776/mysqld        
tcp6       0      0 :::3308                 :::*                    LISTEN      11962/mysqld        
tcp6       0      0 :::3309                 :::*                    LISTEN      12199/mysqld   

mysql -S /tmp/mysql_3307.sock
mysql -S /tmp/mysql_3308.sock
mysql -S /tmp/mysql_3309.sock

在这里插入图片描述

4.手撕不同版本多实例

在这里插入图片描述

本文不同版本以 5.6.50、5.7.32、 8.0.24 为例

由于同版本和不同版本多实例,3.6之前的步骤都是大同小异的,我们从下面步骤开始。

4.1 创建相关目录并授权

mkdir /data/335{6..7}/data /data/3380/data -p      -- 存放数据库数据                     
# useradd -M -s /sbin/nologin mysql                -- 上面已经创建管理用户,省略
chown -R mysql.mysql /data/*

4.2 准备配置文件

cat > /data/3356/my.cnf <<EOF 
[mysqld]
basedir=/opt/soft/mysql80/
datadir=/data/3356/data
user=mysql
server_id=56
port=3356
socket=/tmp/mysql_3356.sock
[mysql]
socket=/tmp/mysql_3356.sock
default-character-set=utf8
EOF

cat > /data/3357/my.cnf <<EOF 
[mysqld]
basedir=/opt/soft/mysql57/
datadir=/data/3357/data
user=mysql
server_id=57
port=3357
socket=/tmp/mysql_3357.sock
[mysql]
socket=/tmp/mysql_3357.sock
default-character-set=utf8
EOF

cat > /data/3380/my.cnf <<EOF 
[mysqld]
basedir=/opt/soft/mysql80/
datadir=/data/3380/data
user=mysql
server_id=80
port=3380
socket=/tmp/mysql_3380.sock
[mysql]
socket=/tmp/mysql_3380.sock
default-character-set=utf8
EOF

4.3 数据初始化

5.6.50 版本初始化:
/opt/soft/mysql56/scripts/mysql_install_db --user=mysql --basedir=/opt/soft/mysql56 --datadir=/data/3356/data

5.7.32 版本初始化:
/opt/soft/mysql57/bin/mysqld  --defaults-file=/data/3357/my.cnf --initialize-insecure

8.0.24 版本初始化:
/opt/soft/mysql80/bin/mysqld  --defaults-file=/data/3380/my.cnf --initialize-insecure

4.4 启动&验证

/opt/soft/mysql56/bin/mysqld_safe  --defaults-file=/data/3356/my.cnf  &
/opt/soft/mysql57/bin/mysqld_safe  --defaults-file=/data/3357/my.cnf  &
/opt/soft/mysql80/bin/mysqld_safe  --defaults-file=/data/3380/my.cnf  &

netstat -lnutp|grep mysqld
tcp6       0      0 :::33060                :::*                    LISTEN      11776/mysqld        
tcp6       0      0 :::3307                 :::*                    LISTEN      11776/mysqld        
tcp6       0      0 :::3308                 :::*                    LISTEN      11962/mysqld        
tcp6       0      0 :::3309                 :::*                    LISTEN      12199/mysqld        
tcp6       0      0 :::3380                 :::*                    LISTEN      17451/mysqld        
tcp6       0      0 :::3356                 :::*                    LISTEN      17888/mysqld        
tcp6       0      0 :::3357                 :::*                    LISTEN      17692/mysqld  


mysql -S /tmp/mysql_3356.sock
mysql -S /tmp/mysql_3357.sock
mysql -S /tmp/mysql_3380.sock

在这里插入图片描述
更多精彩内容欢迎关注微信公众号
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值