美文网首页MySQL数据库
走向DBA之多实例配置

走向DBA之多实例配置

作者: 国王12 | 来源:发表于2019-06-16 15:28 被阅读0次

    一、什么是多实例?

    1.什么是实例?

    前文已经说过,实例是一种概念,举个例子:

    公司:老板+经理+员工+办公区

    实例:mysqld+master thread+干活的thread+预分配内存

    2.那么多实例就好理解了,就是单台机器上多个实例哈哈哈

    借用老男孩老师的例子,一台服务器比作一套房子,那么服务器上的硬件资源(硬盘,CPU等)软件资源(操作系统等)可以看作公用资源,而一个实例就比做一个卧室,卧室里住的有人,这些人会使用这些公共资源。多实例就是一台服务器同时开启多个不同的端口,同时运行mysql服务进程,这些服务通过不同的socket文件监听不同的服务端口来提供服务。

    二、为什么要使用多实例?

    1.优点:

    还是上边的例子,一个人使用三室一厅必然有些奢侈(富二代除外),那么对于北漂的人来讲,多个人合租三室一厅会不会好一些呢?这就是使用多实例的原因。放到企业来讲,一台服务器的资源很大,一个mysql实例固然无法让这台服务器发挥到它最大的承受范围,剩下的资源就浪费了,所以就会使用多实例的方法,来尽可能的去让服务器的资源不浪费。

    2.缺点:

    虽然可以更大程度上去使用服务器的现有资源,但是也会出现资源抢占的问题,就像同一时刻多实例都需要提供服务的话,就像早上六点半房子里的人都要洗脸刷牙上班,这就会导致资源互相抢占的问题。当一个SQL语句慢查询时,就会大幅度消耗系统的CPU,磁盘I/O等资源,导致其他实例提供服务的效率也会随之下降。

    三、应用场景

    结合多实例的优缺点,总结多实例的应用场景:

    1.公司刚起步(没钱)

    2.访问量不是特别大的业务

    3.购买了性能极佳的服务器(节约机房空间)

    接下来就是重点了*****

    mysql多实例配置方案有两种:

    第一种:单一配置文件,单一启动程序部署方案

    这种方案老师说不重要,也基本不会有人用,(我也不会,所以不说了)

    第二种:多配置文件,多启动程序部署方案:*****

    话不多说,咱直接是那个代码

    1.创建三个目录(存放三个实例的配置文件及数据等)

    mkdir -p /data/330{7,8,9}/data
    

    2.写入配置文件

    cat > /data/3307/my.cnf <<EOF
    [mysqld]
    basedir=/application/mysql
    datadir=/data/3307/data
    socket=/data/3307/mysql.sock
    log_error=/data/3307/mysql.log
    port=3307
    server_id=7
    log_bin=/data/3307/mysql-bin
    EOF
    
    cat > /data/3308/my.cnf <<EOF
    [mysqld]
    basedir=/application/mysql
    datadir=/data/3308/data
    socket=/data/3308/mysql.sock
    log_error=/data/3308/mysql.log
    port=3308
    server_id=8
    log_bin=/data/3308/mysql-bin
    EOF
    
    cat > /data/3309/my.cnf <<EOF
    [mysqld]
    basedir=/application/mysql
    datadir=/data/3309/data
    socket=/data/3309/mysql.sock
    log_error=/data/3309/mysql.log
    port=3309
    server_id=9
    log_bin=/data/3309/mysql-bin
    EOF
    

    3.把原配置文件改名或移动(避免冲突)

    mv /etc/my.cnf /etc/my.cnf.bak 
    

    4.初始化三套数据

    mysqld --initialize-insecure  --user=mysql --datadir=/data/3307/data --basedir=/application/mysql
    mysqld --initialize-insecure  --user=mysql --datadir=/data/3308/data --basedir=/application/mysql
    mysqld --initialize-insecure  --user=mysql --datadir=/data/3309/data --basedir=/application/mysql
    

    5.配置systemd管理多实例

    cd /etc/systemd/system
    cp mysqld.service mysqld3307.service
    cp mysqld.service mysqld3308.service
    cp mysqld.service mysqld3309.service
    

    6.更改每个实例启动时指定的my.cnf

    vim mysqld3307.service 
    ExecStart=/application/mysql/bin/mysqld  --defaults-file=/data/3307/my.cnf
    vim mysqld3308.service
    ExecStart=/application/mysql/bin/mysqld  --defaults-file=/data/3308/my.cnf
    vim mysqld3309.service
    ExecStart=/application/mysql/bin/mysqld  --defaults-file=/data/3309/my.cnf
    

    7.授权

    chown -R mysql.mysql /data/*
    

    8.启动(注意,可以先把虚拟机的内存调大一点(3G),不然可能带不动三个实例)

    systemctl start mysqld3307.service
    systemctl start mysqld3308.service
    systemctl start mysqld3309.service
    

    8.验证多实例是否启动成功和可用

    netstat -lntup|grep 330
    mysql -S /data/3307/mysql.sock -e "select @@server_id"
    mysql -S /data/3308/mysql.sock -e "select @@server_id"
    mysql -S /data/3309/mysql.sock -e "select @@server_id"
    

    总结:多实例配置这一块没有什么大坑,主要是第六步更改每一个单实例的启动指定my.cnf文件,路径要写对了。还有就是内存尽可能调到3G,足够的内存才可以运行的更加通畅。(当然也可以调更大)

    相关文章

      网友评论

        本文标题:走向DBA之多实例配置

        本文链接:https://www.haomeiwen.com/subject/oklgfctx.html