zoukankan      html  css  js  c++  java
  • CentOS7.7下二进制部署MySQL多版本多实例实战

    第一章 需求说明

    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

  • 相关阅读:
    解析iOS开发中的FirstResponder第一响应对象
    iOS9新特性——堆叠视图UIStackView
    IOS定位服务的应用
    iOS原生地图开发详解
    iOS原生地图开发进阶——使用导航和附近兴趣点检索
    iOS开发之----常用函数和常数
    iOS延时执行
    Mac快捷键、命令行
    UICollectionView使用
    iOS: 在代码中使用Autolayout (1) – 按比例缩放和优先级
  • 原文地址:https://www.cnblogs.com/centlnx/p/12763775.html
Copyright © 2011-2022 走看看