暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL (不)同版本多实例

ClickHouse周边 2021-07-07
728
    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



                              近期文章推荐:
                              EXPLAIN 之 key_len 计算
                              ClickHouse 之 FORMAT 应用
                              ClickHouse集群(1)INSERT、MERGE执行流程
                              更多精彩内容欢迎关注微信公众号


                              文章转载自ClickHouse周边,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                              评论