zoukankan      html  css  js  c++  java
  • MySql多实例设置

    https://blog.csdn.net/qq_21153619/article/details/81529880#%E4%BA%8C%E3%80%81%E5%A4%9A%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%90%AD%E5%BB%BA

    MySQL多实例

    什么是MySQL多实例

    MySQL多实例就是一台机器上开启多个不同的服务端口(这是有:3306(默认配置)、3307、3308、3309),运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自服务。

    MySQL多实例的特点有一下几点

    • 有效利用服务器资源,当单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务。

    • 节约服务器资源;

    • 资源相互抢占问题,当某个服务实例并发很高时,或者开启慢查询时,会消耗更多的内存CPU磁盘IO资源,导致服务器上的其他实例提供服务的质量下降;

    部署mysql多实例的两种方式

      第一个是使用多个配置文件启动不同的进程来实现多实例,这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便。

      第二种是通过官方自带的mysql_multi使用单独的配置文件来实现多实例(一个文件配置多个多实例),这种方式定制每个实例的配置不太方便,优点是管理起来很方便,集中管理。

    同一开发环境下安装多个数据库,必须处理以下问题

    • 配置文件安装路径不能相同

    • 数据库目录不能相同

    • 启动脚本不能同名

    • 端口不能相同

    • socket文件的生成路径不能相同

    多实例搭建

    创建用户和组

    #用户不登录系统
    useradd mysql -s /sbin/nologin
    id mysql
    uid=1000(mysql) gid=1000(mysql) groups=1000(mysql)

    注:这里配置330733083309端口的配置文件

    创建需要目录

    注:将二进制包放在/app/database/下面

    pkill mysqld
    rm
    -rf /data/330{7..9}/data/* rm -rf /binlog/330{7..9}/data/* mkdir -p /app/database/ cd /app/database/ tar xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz ln -s mysql-5.7.28-linux-glibc2.12-x86_64 mysql mkdir -p /data/330{7..9}/data mkdir -p /binlog/330{7..9}

    配置文件

    cat > /data/3307/my.cnf <<EOF
    [mysqld]
    basedir=/app/database/mysql
    datadir=/data/3307/data
    socket=/tmp/mysql3307.sock
    log_error=/data/3307/mysql.log
    port=3307
    server_id=7
    log_bin=/binlog/3307/mysql-bin
    EOF
    
    cat > /data/3308/my.cnf <<EOF
    [mysqld]
    basedir=/app/database/mysql
    datadir=/data/3308/data
    socket=/tmp/mysql3308.sock
    log_error=/data/3308/mysql.log
    port=3308
    server_id=8
    log_bin=/binlog/3308/mysql-bin
    EOF
    
    cat > /data/3309/my.cnf <<EOF
    [mysqld]
    basedir=/app/database/mysql
    datadir=/data/3309/data
    socket=/tmp/mysql3309.sock
    log_error=/data/3309/mysql.log
    port=3309
    server_id=9
    log_bin=/binlog/3309/mysql-bin
    EOF

    初始化数据

    yum install libaio -y
    chown
    -R mysql.mysql /data /binlog mv /etc/my.cnf /etc/my.cnf.bak mysqld --initialize-insecure --user=mysql --datadir=/data/3307/data --basedir=/app/database/mysql mysqld --initialize-insecure --user=mysql --datadir=/data/3308/data --basedir=/app/database/mysql mysqld --initialize-insecure --user=mysql --datadir=/data/3309/data --basedir=/app/database/mysql

    准备启动脚本

    注:之前的环境变量是export PATH=/app/database/mysql/bin:$PATH

    #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=/app/database/mysql/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=/app/database/mysql/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=/app/database/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf
    LimitNOFILE = 5000
    EOF

    启动多实例

    systemctl daemon-reload
    systemctl start mysqld3307
    systemctl start mysqld3308
    systemctl start mysqld3309
    netstat -tulnp

    登录数据库

    mysql -S /tmp/mysql3307.sock
    mysql -S /tmp/mysql3308.sock
    mysql -S /tmp/mysql3309.sock
  • 相关阅读:
    2019-02-08 Python学习之Scrapy的简单了解
    2019-02-07 selenium...
    2019-02-06 单链表的整表创建及增删插
    2019-02-05 Linux的一些常用命令学习2
    2019-02-04 Linux的一些常用命令学习
    2019-02-03 线性表的顺序储存结构C语言实现
    2019-02-03 多进程和多线程的区别【】
    python 多进程
    Tftp文件传输服务器(基于UDP协议)
    多线程实现tcp聊天服务器
  • 原文地址:https://www.cnblogs.com/Mercury-linux/p/12305494.html
Copyright © 2011-2022 走看看