MySQL 不同版本多实例

1 规划

MySQL5.6 8.0软件包:  
  mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz   mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz 配置文件     : /data/331{6..8}/my.cnf 数据目录     : /data/331{6..8} 初始化数据    日志目录     : /binlog/331{6..8} 端口       : port=3316,3317,3318 server_id   : server_id=16,17,18 socket      : /tmp/mysql{56,57,80}.sock

2 软连接不同版本软件,修改环境变量

cd /app/database/
rm -rf ./mysql58  # 删除软链接
ln
-s mysql-5.6.46-linux-glibc2.12-x86_64 mysql56 ln -s mysql-8.0.13-linux-glibc2.12-x86_64 mysql80 mv /etc/my.cnf /etc/my.cnf.bak vim /etc/profile # 注释掉以下信息 #export PATH=/app/database/mysql/bin:$PATH vim .bash_profile # 注释掉以下信息 #PATH=$PATH:$HOME/bin:/app/database/mysql/bin #复制一个新窗口 [root@master ~]# mysql -V -bash: mysql: command not found

3 准备不同目录

rm -rf /data/331{6..8}/*
rm -rf /binlog/331{6..8}
mkdir -p /data/331{6..8}/data
mkdir -p /binlog/331{6..8}
chown -R mysql.mysql /data/* /binlog/*

4 准备配置文件

cat > /data/3316/my.cnf <<EOF
[mysqld]
basedir=/app/database/mysql56
datadir=/data/3316/data
socket=/tmp/mysql56.sock
log_error=/data/3316/mysql.log
port=3316
server_id=16
log_bin=/binlog/3316/mysql-bin
EOF

cat > /data/3318/my.cnf <<EOF
[mysqld]
basedir=/app/database/mysql80
datadir=/data/3318/data
socket=/tmp/mysql80.sock
log_error=/data/3318/mysql.log
port=3318
server_id=18
log_bin=/binlog/3318/mysql-bin
EOF

4 初始化数据

# 5.6
/app/database/mysql56/scripts/mysql_install_db --user=mysql --datadir=/data/3316/data --basedir=/app/database/mysql56

# 8.0
/app/database/mysql80/bin/mysqld --initialize-insecure --user=mysql --datadir=/data/3318/data --basedir=/app/database/mysql80

5 准备启动脚本

# 5.6
cat > /etc/systemd/system/mysqld56.service <<EOF
[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=/app/database/mysql56/bin/mysqld --defaults-file=/data/3316/my.cnf
LimitNOFILE = 5000
EOF

# 8.0
cat > /etc/systemd/system/mysqld80.service <<EOF
[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=/app/database/mysql80/bin/mysqld --defaults-file=/data/3318/my.cnf
LimitNOFILE = 5000
EOF

6 启动多实例

[root@master ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1351/sshd           
tcp6       0      0 :::22                   :::*                    LISTEN      1351/sshd           
[root@master ~]# systemctl start mysqld56
[root@master ~]# systemctl start mysqld80
[root@master ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1351/sshd           
tcp6       0      0 :::33060                :::*                    LISTEN      3229/mysqld         
tcp6       0      0 :::3316                 :::*                    LISTEN      3201/mysqld         
tcp6       0      0 :::3318                 :::*                    LISTEN      3229/mysqld         
tcp6       0      0 :::22                   :::*                    LISTEN      1351/sshd           

7 登录多实例数据库

[root@master ~]# /app/database/mysql56/bin/mysql -S /tmp/mysql56.sock
Server version: 5.6.46-log MySQL Community Server (GPL)
[root@master ~]# /app/database/mysql80/bin/mysql -S /tmp/mysql80.sock
Server version: 8.0.13 MySQL Community Server - GPL

[root@master ~]# vim /etc/profile
export PATH=/app/database/mysql/bin:$PATH
[root@master ~]# source /etc/profile
[root@master ~]# mysql -V
mysql Ver 14.14 Distrib 5.7.28, for linux-glibc2.12 (x86_64) using EditLine wrapper

[root@master
~]# mysql -S /tmp/mysql56.sock Server version: 5.6.46-log MySQL Community Server (GPL) [root@master ~]# mysql -S /tmp/mysql80.sock Server version: 8.0.13 MySQL Community Server - GPL [root@master ~]# mv /etc/my.cnf.bak /etc/my.cnf [root@master ~]# /etc/init.d/mysqld start Starting MySQL.... SUCCESS! [root@master ~]# mysql Server version: 5.7.28 MySQL Community Server (GPL) [root@master ~]# mysql -uroot -p Server version: 5.7.28 MySQL Community Server (GPL) [root@master ~]# mysql -S /tmp/mysql56.sock Server version: 5.6.46-log MySQL Community Server (GPL) [root@master ~]# mysql -S /tmp/mysql80.sock Server version: 8.0.13 MySQL Community Server - GPL

5.7 和 8.0 的客户端可以连其他两个服务端,5.6 的客户端连8.0的服务端会报错

# 8.0
[root@master ~]# /app/database/mysql80/bin/mysql -S /tmp/mysql56.sock Server version: 5.6.46-log MySQL Community Server (GPL) [root@master ~]# /app/database/mysql80/bin/mysql -S /tmp/mysql.sock Server version: 5.7.28 MySQL Community Server (GPL)
# 5.7 [root@master ~]# /app/database/mysql/bin/mysql -S /tmp/mysql56.sock Server version: 5.6.46-log MySQL Community Server (GPL) [root@master ~]# /app/database/mysql/bin/mysql -S /tmp/mysql80.sock Server version: 8.0.13 MySQL Community Server - GPL
# 5.6
[root@master ~]# /app/database/mysql56/bin/mysql -S /tmp/mysql.sock Server version: 5.7.28 MySQL Community Server (GPL) [root@master ~]# /app/database/mysql56/bin/mysql -S /tmp/mysql80.sock ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/local/mysql/lib/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory

 

posted @ 2020-07-28 10:46  丁海龙  阅读(181)  评论(0)    收藏  举报