MySql多版本多实例配置

MySql多版本多实例配置

Scroll Down

需求说明

  1. 同版本多实例
# 1.安装3个mysql5.7版本的实例
- 端口分别为( 3307, 3308, 3309 )
  1. 多版本多实例sh
# 1.安装1个mysql5.6版本的实例
- 端口为 3316
# 2.安装1个mysql8.0版本的实例
- 端口为 3326

清除遗留环境

# 查看是否安装mariadb
rpm -qa | grep mariadb 
# 若有就删除
yum -y remove mariadb*
  1. 删除旧配置
rm -rf /etc/my.cnf

MySql 同版本多实例安装

需求说明

# 1.安装3个mysql5.7版本的实例
- 端口分别为( 3307, 3308, 3309 )

准备工作

  1. 创建运行mysql的用户
useradd -s /sbin/nologin -M mysql
  1. 创建安装和数据目录
# 创建存放软件目录
mkdir -p /data/app
mkdir -p /data/330{7..9}/data

安装mysql5.7

  1. 下载mysql5.7版本二进制安装包
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
  1. 解压并制作软链接
cd /data/app
tar xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
ln -s mysql-5.7.28-linux-glibc2.12-x86_64 mysql57
  1. 初始化数据
/data/app/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql --datadir=/data/3307/data
/data/app/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql --datadir=/data/3308/data
/data/app/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql --datadir=/data/3309/data
  1. 授权
chown -R mysql.mysql /data

配置3个实例的my.cnf文件

cat > /data/3307/my.cnf <<EOF 
[mysqld]                    
user=mysql                  
basedir=/data/app/mysql     
datadir=/data/3307/data     
socket=/tmp/mysql3307.sock      
port=3307                   
server_id=7                  
EOF

cat > /data/3308/my.cnf <<EOF 
[mysqld]                    
user=mysql                  
basedir=/data/app/mysql     
datadir=/data/3308/data     
socket=/tmp/mysql3308.sock      
port=3308                   
server_id=8                  
EOF

cat > /data/3309/my.cnf <<EOF 
[mysqld]                    
user=mysql                  
basedir=/data/app/mysql     
datadir=/data/3309/data     
socket=/tmp/mysql3309.sock      
port=3309                   
server_id=9                  
EOF

配置3个实例的启动脚本

cat > /etc/systemd/system/mysqld3307.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=/data/app/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
LimitNOFILE = 5000
EOF

cat > /etc/systemd/system/mysqld3308.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=/data/app/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
LimitNOFILE = 5000
EOF


cat > /etc/systemd/system/mysqld3309.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=/data/app/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf
LimitNOFILE = 5000
EOF

启动3个实例,并设置别名

  1. 启动3个实例
systemctl start mysqld3307
systemctl start mysqld3308
systemctl start mysqld3309
  1. 查看是否启动成功
[root@db01 ~]# netstat -lntup | grep mysql     
tcp6       0      0 :::3307                 :::*                    LISTEN      4259/mysqld         
tcp6       0      0 :::3308                 :::*                    LISTEN      4266/mysqld         
tcp6       0      0 :::3309                 :::*                    LISTEN      4273/mysqld 
  1. 设置别名
cat >> /etc/bashrc <<EOF
alias mysql3307='/data/app/mysql/bin/mysql -S /tmp/mysql3307.sock'
alias mysql3308='/data/app/mysql/bin/mysql -S /tmp/mysql3308.sock'
alias mysql3309='/data/app/mysql/bin/mysql -S /tmp/mysql3309.sock'
EOF

  1. 使用别名连接数据库
[root@db01 ~]# mysql3307
mysql>

MySql 多版本多实例安装

需求说明

# 1.安装1个mysql5.6版本的实例
- 端口为 3316
# 2.安装1个mysql8.0版本的实例
- 端口为 3326

准备工作

  1. 创建运行mysql的用户
useradd -s /sbin/nologin -M mysql
  1. 创建安装和数据目录
# 创建存放软件目录
mkdir -p /data/app
mkdir -p /data/3316/data
mkdir -p /data/3326/data

下载安装mysql

  1. 下载mysql二进制安装包
# 下载5.6把那本
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz
# 下载8.0版本
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
  1. 解压,制作软链接
cd /data/app
# 5.6版本软链接
tar xf mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz
ln -s mysql-5.6.46-linux-glibc2.12-x86_64 mysql56

# 8.0版本软链接
tar xf mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
ln -s mysql-8.0.18-linux-glibc2.12-x86_64 mysql80
  1. 初始化数据
# 5.6版本
/data/app/mysql56/scripts/mysql_install_db  --user=mysql --basedir=/data/app/mysql56 --datadir=/data/3316/data
# 8.0版本
/data/app/mysql80/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql80 --datadir=/data/3326/data
  1. 授权
chown -R mysql.mysql /data
  1. 创建运行mysql的用户,并授权

chown -R mysql.mysql /data

配置5.6和8.0版本my.cnf文件

  • 5.6版本的 my.cnf 配置文件
cat > /data/3316/my.cnf <<EOF 
[mysqld]                    
user=mysql                  
basedir=/data/app/mysql56    
datadir=/data/3316/data     
socket=/tmp/mysql3316.sock      
port=3316                   
server_id=16                  
EOF

  • 8.0版本的my.cnf配置文件
cat > /data/3326/my.cnf <<EOF 
[mysqld]                    
user=mysql                  
basedir=/data/app/mysql80     
datadir=/data/3326/data     
socket=/tmp/mysql3326.sock      
port=3326                  
server_id=26                  
EOF

准备启动脚本

  • 5.6版本启动脚本
cat > /etc/systemd/system/mysqld3316.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=/data/app/mysql56/bin/mysqld --defaults-file=/data/3316/my.cnf
LimitNOFILE = 5000
EOF
  • 8.0版本的启动脚本
cat > /etc/systemd/system/mysqld3326.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=/data/app/mysql80/bin/mysqld --defaults-file=/data/3326/my.cnf
LimitNOFILE = 5000
EOF

启动实例

  1. 启动实例
systemctl start mysqld3316
systemctl start mysqld3326
  1. 查看实例是否启动成功
[root@db01 ~]# netstat -lntup | grep mysqld
tcp6       0      0 :::3326                 :::*                    LISTEN      4401/mysqld           
tcp6       0      0 :::3316                 :::*                    LISTEN      4394/mysqld 
  1. 设置别名连接数据库
cat >> /etc/bashrc <<EOF
alias mysql3316='/data/app/mysql56/bin/mysql -S /tmp/mysql3316.sock'
alias mysql3326='/data/app/mysql80/bin/mysql -S /tmp/mysql3326.sock'
EOF
  1. 使用别名连接数据库
[root@db01 ~]# mysql3316
mysql>