第一章 需求说明

  1. 部署MySQL5.7的三个多实例环境(端口分别为3307,3308,3309)
  2. 部署MySQL5.6和8.0版本数据库实例((端口分别为3316和3326)

第二章 环境准备

1.虚拟机环境

$ hostname -I
10.0.1.51
$ hostname
db01
$ cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)

2.虚拟机优化

# 关闭Selinux
$ setenforce 0
$ sed -i s#SELINUX=enforcing#SELINUX=disabled#g /etc/selinux/config # 关闭防火墙
$ systemctl stop firewalld
$ systemctl disable firewalld
$ iptables-save # 更改yum源
$ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.ori
$ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
$ sed -i '/aliyuncs/d' /etc/yum.repos.d/CentOS-Base.repo # 添加epel源
$ wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo # 更新yum缓存
$ yum clean all
$ yum makecache fast # 停止NetworkManager
$ systemctl stop NetworkManager
$ systemctl disable NetworkManager # 加大文件描述符
$ echo '* - nofile 65535' >>/etc/security/limits.conf

3.清理环境

①卸载已安装的mysql

$ rpm -qa | grep mysql
# 结果如下
mysql-community-common-8.0.18-1.el7.x86_64
mysql-community-client-8.0.18-1.el7.x86_64
mysql-community-libs-8.0.18-1.el7.x86_64 # 使用以下命令依次删除上面的程序
$ yum remove mysql-xxx-xxx-

②删除mysql的配置文件

$ find / -name mysql|xargs rm -fr

③删除MariaDB的文件

$ rpm -qa | grep mariadb
$ rpm -e mariadb-xxx --nodeps

④删除my.cnf

$ rm -fr /etc/my.cnf

⑤检查端口是否被占用

$ which mysql
$ pkill mysqld
$ netstat -lntup|egrep '3307|3308|3309|3316|3326'

4.准备软件包

MySQL官方下载地址

下载二进制包略。

5.准备目录

$ rm -rf /data/*

# MySQL安装目录
$ mkdir -p /data/app # MySQL数据目录
$ mkdir -p /data/330{7,8,9}/data
$ mkdir -p /data/33{16,26}/data # Scoket目录
$ mkdir -p /data/socket

第三章 部署MySQL5.7多实例

1.解压软件包并制作软连接

$ tar xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
$ mv mysql-5.7.28-linux-glibc2.12-x86_64 mysql-5.7.28
$ ln -s /data/app/mysql-5.7.28 /data/app/mysql5728

2.创建MySQL多实例配置

# 3307实例配置
$ cat > /data/3307/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/data/app/mysql5728
datadir=/data/3307/data
socket=/data/socket/mysql3307.sock
port=3307
server_id=7
EOF # 3308实例配置
$ cat > /data/3308/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/data/app/mysql5728
datadir=/data/3308/data
socket=/data/socket/mysql3308.sock
port=3308
server_id=8
EOF # 3309实例配置
$ cat > /data/3309/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/data/app/mysql5728
datadir=/data/3309/data
socket=/data/socket/mysql3309.sock
port=3309
server_id=9
EOF

3.创建MySQL傀儡用户并授权

$ useradd -s /sbin/nologin -M mysql
$ id mysql
$ chown -R mysql.mysql /data

4.初始化

$ /data/app/mysql5728/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql5728 --datadir=/data/3307/data
$ echo $? $ /data/app/mysql5728/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql5728 --datadir=/data/3308/data
$ echo $? $ /data/app/mysql5728/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql5728 --datadir=/data/3309/data
$ echo $?

5.编写systemd启动脚本

# 3307实例启动的服务脚本
$ 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/mysql5728/bin/mysqld --defaults-file=/data/3307/my.cnf
LimitNOFILE = 5000
EOF # 3308实例启动的服务脚本
$ 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/mysql5728/bin/mysqld --defaults-file=/data/3308/my.cnf
LimitNOFILE = 5000
EOF # 3309实例启动的服务脚本
$ 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/mysql5728/bin/mysqld --defaults-file=/data/3309/my.cnf
LimitNOFILE = 5000
EOF

6.启动多实例

$ systemctl start mysqld3307
$ systemctl start mysqld3308
$ systemctl start mysqld3309
$ netstat -lntup|grep mysqld
tcp6 0 0 :::3307 :::* LISTEN 2093/mysqld
tcp6 0 0 :::3308 :::* LISTEN 2127/mysqld
tcp6 0 0 :::3309 :::* LISTEN 2161/mysqld

7.绝对路径登录MySQL多实例

$ /data/app/mysql5728/bin/mysql -S /data/socket/mysql3307.sock
$ /data/app/mysql5728/bin/mysql -S /data/socket/mysql3308.sock
$ /data/app/mysql5728/bin/mysql -S /data/socket/mysql3309.sock

第四章 部署MySQL5.6单实例

1.解压软件包并制作软连接

$ tar xf mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz
$ mv mysql-5.6.46-linux-glibc2.12-x86_64 mysql-5.6.46
$ ln -s ln -s mysql-5.6.46 mysql5646

2.创建MySQL实例配置

cat > /data/3316/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/data/app/mysql5646
datadir=/data/3316/data
socket=/data/socket/mysql3316.sock
port=3316
server_id=16
EOF

3.创建mysql傀儡用户并授权

$ chown -R mysql.mysql /data

4.初始化

$ /data/app/mysql5646/scripts/mysql_install_db  --user=mysql --basedir=/data/app/mysql5646 --datadir=/data/3316/data
$ echo $?

5.编写systemd启动脚本

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/mysql5646/bin/mysqld --defaults-file=/data/3316/my.cnf
LimitNOFILE = 5000
EOF

6.启动实例

$ systemctl daemon-reload
$ systemctl start mysqld3316.service
$ netstat -lntup|grep mysqld
tcp6 0 0 :::3316 :::* LISTEN 2516/mysqld

7.绝对路径登录MySQL实例

$ /data/app/mysql5646/bin/mysql -S /data/socket/mysql3316.sock

第五章 部署MySQL8.0单实例

1.解压软件包并制作软连接

$ tar xf mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
$ mv mysql-8.0.18-linux-glibc2.12-x86_64 mysql-8.0.18
$ ln -s mysql-8.0.18 mysql8018

2.创建MySQL实例配置

cat > /data/3326/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/data/app/mysql8018
datadir=/data/3326/data
socket=/data/socket/mysql3326.sock
port=3326
server_id=26
EOF

3.创建mysql傀儡用户并授权

$ chown -R mysql.mysql /data

4.安装依赖并初始化

$ yum install -y perl-DBD-MySQL perl-Config-Tiny epel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes
$ /data/app/mysql8018/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql8018 --datadir=/data/3326/data
$ echo $?

5.编写systemd启动脚本

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/mysql8018/bin/mysqld --defaults-file=/data/3326/my.cnf
LimitNOFILE = 5000
EOF

6.启动实例

$ systemctl start mysqld3326.service
$ netstat -lntup|grep mysqld
tcp6 0 0 :::3326 :::* LISTEN 2686/mysqld

7.绝对路径登录MySQL实例

$ /data/app/mysql8018/bin/mysql -S /data/socket/mysql3326.sock

至此,在同一台服务器上部署多版本MySQL多实例完成,可是使用一下命令验证:

[root@db01 ~]# netstat -lntup|grep mysqld
tcp6 0 0 :::3326 :::* LISTEN 2686/mysqld
tcp6 0 0 :::33060 :::* LISTEN 2686/mysqld
tcp6 0 0 :::3307 :::* LISTEN 2093/mysqld
tcp6 0 0 :::3308 :::* LISTEN 2127/mysqld
tcp6 0 0 :::3309 :::* LISTEN 2161/mysqld
tcp6 0 0 :::3316 :::* LISTEN 2516/mysqld

我的博客:https://www.pingface.com/2020/04/23/mysqlmulti.html

CentOS7.7下二进制部署MySQL多版本多实例实战的更多相关文章

  1. Linux Centos7.x下安装部署Jira和confluence以及破解方法详述

    简述 JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域. Confluence是一个专业的企业知识管 ...

  2. CentOS 7.x下安装部署MySQL 8.0实施手册

    MySQL 8 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能! 一.  Mysql8.0版本相比之前版本的一些特性 1) ...

  3. 使用openshit在ubuntu14.04下一键部署openstack(juno版本)

    一.基本介绍 本实验是在vmware workstation上虚拟机ubuntu14.04(64bit,desktop)上部署openstack(Juno版本).采用的工具是openshit.open ...

  4. CentOS 6.5下二进制安装 MySQL 5.6

    CentOS 6.5 二进制安装MySQL 5.6 1:查看系统版本 [root@10-4-5-9 mysql]# cat /etc/redhat-release CentOS release 6.5 ...

  5. Linux Centos7.x下安装部署VNC的实操详述

    VNC (Virtual Network Console)是虚拟网络控制台的缩写.它 是一款优秀的远程控制工具软件,由著名的AT&T的欧洲研究实验室开发的.VNC 是在基于 UNIX和 Lin ...

  6. MySQL知识-MySQL不同版本多实例

    一.不同版本多实例   0.软连接不同版本软件,修改环境变量 [root@db01 database]# ln -s mysql-5.6.46-linux-glibc2.12-x86_64 mysql ...

  7. CentOS7.4下安装部署HAProxy高可用群集

    目录第一部分 实验环境第二部分 搭建配置web服务器第三部分 安装配置haproxy服务器第四部分 测试验证第五部分 haproxy配置相关详细解释 第一部分 实验环境1.一台harpoxy调度服务器 ...

  8. centos7环境下在线安装mysql

    卸载mariadb centos默认安装了mariadb,因此,在安装mysql之前,需要卸载系统中安装的mariadb. 查看系统中所有已安装的mariadb包.命令:rpm -qa | grep ...

  9. centos7环境下ELK部署之elasticsearch

    es部署:es只能用普通用户启动 博客园首发,转载请注明出处:https://www.cnblogs.com/tzxxh/p/9435318.html 一.环境准备: 安装jdk1.8.创建普通用户 ...

随机推荐

  1. Python第六章-函数02-函数的作用域

    函数 三.作用域规则 有了函数之后,我们必须要面对一个作用域的问题. 比如:你现在访问一个变量,那么 python 解析器是怎么查找到这个变量,并读取到这个变量的值的呢? 依靠的就是作用域规则! 3. ...

  2. 学界!关于GAN的灵魂七问

    根据一些指标显示,关于生成对抗网络(GAN)的研究在过去两年间取得了本质的进步.在图像合成模型实践中的进步快到几乎无法跟上. 但是,根据其他指标来看,实质性的改进还是较少.例如,在应如何评价生成对抗网 ...

  3. POJ-3134-Power Calculus(迭代加深)

    题意:输入一个n,问x从1次方开始,到n次方 ,可以乘或除已经计算出来的数 ,最少需要执行多少步? 思路:迭代加深 ,深度从0开始 ,直到返回值为真. 在深搜过程中剪枝(深度的判断 ,当前最大值尽全力 ...

  4. 面试中常问的五种IO模型和BIO,NIO,AIO

    一,五种IO模型: 一个IO操作可以分为两个步骤:发起IO请求和实际的IO操作例如:1.操作系统的一次写操作分为两步:第一步,将数据从用户空间拷贝到系统空间:第二步,从系统空间往网卡写.2.一次读操作 ...

  5. NKOJ4270 小奇挖矿2

    问题描述 [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿石交易市场,以便为飞船升级无限非概率引擎. [问题描述] 现在有m+1个星球,从左到右标号为0到m,小 ...

  6. Bitmap之位图采样和内存计算详解

    原文首发于微信公众号:躬行之(jzman-blog) Android 开发中经常考虑的一个问题就是 OOM(Out Of Memory),也就是内存溢出,一方面大量加载图片时有可能出现 OOM, 通过 ...

  7. JS数据结构与算法 - 二叉树(一)基本算法

    仅供JavaScript刷题参考用. 二叉查找树和平衡二叉树 其它树:满二叉树.完全二叉树.完美二叉树.哈弗曼树.二叉查找树BST.平衡二叉树AVL 了解:红黑树,是一种特殊的二叉树.这种树可以进行高 ...

  8. 浅谈头文件(.h)和源文件(.cpp)的区别

    浅谈头文件(.h)和源文件(.cpp)的区别 本人原来在大一写C的时候,都是所有代码写在一个文件里一锅乱煮.经过自己开始写程序之后,发现一个工程只有一定是由多个不同功能.分门别类展开的文件构成的.一锅 ...

  9. BurpSuite 安装配置简明教程

    文章更新于:2020-04-14 按照惯例,需要的文件附上链接放在文首. 文件名:jdk-8u241-windows-x64.7z 文件大小:208.43 MB 下载链接:https://downlo ...

  10. flaks-自定义url转换器

    flaks-自定义url转换器 from flask import Flask, url_for from werkzeug.routing import BaseConverter app = Fl ...