zoukankan      html  css  js  c++  java
  • MySQL单机多实例配置 枯木

    ===========================================================================摘抄自hellodba

    MySQL单机多实例方案,是指在一台物理的PC服务器上运行多个MySQL数据库实例,为什么要这样做?这样做的好处是什么?

    1.存储技术飞速发展,IO不再是瓶颈

    普通PC服务器的CPU与IO资源不均衡,因为磁盘的IO能力非常有限,为了满足应用的需要,往往需要配置大量的服务器,这样就造成CPU资源的大量浪费。但是,Flash存储技术的出现改变了这一切,单机的IO能力不再是瓶颈,可以在单机运行多个MySQL实例提升CPU利用率。

    2.MySQL对多核CPU利用率低

    MySQL对多核CPU的利用率不高,一直是个问题,5.1版本以前的MySQL,当CPU超过4个核时,性能无法线性扩展。虽然MySQL后续版本一直在改进这个问题,包括Innodb plugin和Percona XtraDB都对多核CPU的利用率改进了很多,但是依然无法实现性能随着CPU core的增加而提升。我们现在常用的双路至强服务器,单颗CPU有4-8个core,在操作系统上可以看到16-32 CPU(每个core有两个线程),四路服务器可以达到64 core甚至更多,所以提升MySQL对于多核CPU的利用率是提升性能的重要手段。下图是Percona的一份测试数据:


    ===========================================================================摘抄自hellodba

    mysqld_multi可以管理多个帧听不同Unix套接字文件和TCP/IP端口的连接的mysqld进程。它可以启动或停止服务器,或报告它们的当前状态。

    要想调用mysqld_multi,使用下面的语法:

    shell> mysqld_multi [options] {start|stop|report} [GNR[,GNR] ...]

    startstopreport表示你想要执行的操作。你可以在单个服务器或多个服务器上执行指定的操作,取决于选项名后面的GNR列。如果没有该列,mysqld_multi为选项文件中的所有服务器执行该操作。

    具体配置如下:

    # pwd

    /usr/local/mysql/etc/

    # cat multi.cnf

    [mysqld_multi]

    mysqld     = /usr/local/mysql/bin/mysqld_safe

    mysqladmin =/usr/local/mysql/bin/mysqladmin

    user       = multi_admin

    password   = 123123 #确保之后赋权的密码是这里的密码,否则无法关闭实例

     

    [mysqld2]

    socket     = /tmp/mysql.sock2

    port       = 3307

    pid-file   = /var/run/mysqld/mysql.pid2

    datadir    = /data2

     

    [mysqld3]

    socket     = /tmp/mysql.sock3

    port       = 3308

    pid-file   = /var/run/mysqld/mysql.pid3

    datadir    = /data3

     

    [mysqld4]

    socket     = /tmp/mysql.sock4

    port       = 3309

    pid-file   = /var/run/mysqld/mysql.pid4

    datadir    = /data4

    # mkdir /data2 /data3 /data4

    # chown myql:mysql -R  /data2/data3 /data4

    # cd /usr/local/mysql

    # ./scripts/mysql_install_db --user=mysql --datadir=/data2

    # ./scripts/mysql_install_db --user=mysql --datadir=/data3

    # ./scripts/mysql_install_db --user=mysql --datadir=/data4

    # /usr/local/mysql/bin/mysqld_multi \

    --defaults-file=/usr/local/mysql/etc/multi.cnfstart 2-4  //开启2到4的实例

    //# /usr/local/mysql/bin/mysqld_multi \

    --defaults-file=/usr/local/mysql/etc/multi.cnfstart 2,4 开启2和4两个实例

    # netstat -tulnp | grep mysql

    tcp        0     0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      15080/mysqld       

    tcp        0     0 0.0.0.0:3308               0.0.0.0:*                   LISTEN      15088/mysqld       

    tcp        0     0 0.0.0.0:3309               0.0.0.0:*                   LISTEN     15097/mysqld       

    # mysql -u root -S /tmp/mysql.sock2

    Welcome to the MySQLmonitor.  Commands end with ; or \g.

    Your MySQL connection id is 1

    Server version:5.5.8-debug-log Source distribution

     

    Copyright (c) 2000, 2010,Oracle and/or its affiliates. All rights reserved.

    This software comes withABSOLUTELY NO WARRANTY. This is free software,

    and you are welcome to modifyand redistribute it under the GPL v2 license

     

    Type 'help;' or '\h' forhelp. Type '\c' to clear the current input statement.

     

    mysql> grant shutdown on *.* to multi_admin@'localhost' identified by'123123';

    Query OK, 0 rows affected(0.00 sec)

     

    mysql> flush privileges;

    Query OK, 0 rows affected(0.01 sec)

     

    mysql> quit

    Bye

    #

    之后的实例依次连接执行命令赋权即可

    mysql> grant shutdown on *.* to multi_admin@'localhost' identified by'123123';

    mysql> flush privileges;

    # /usr/local/mysql/bin/mysqld_multi \

    --defaults-file=/usr/local/mysql/etc/multi.cnfstop 2-4

    # netstat -tulnp | grep mysql

    #

    另外NUMA对MySQL多实例的性能调优较大的联系,笔者会对这方面做一个详细的测试


  • 相关阅读:
    python高级函数六剑客
    测试工程师用到常用的git命令
    qing理解赋值,深浅拷贝的区别
    python设计模式之单例
    Python全栈之jQuery笔记
    畅谈python之单元测试框架-unittest
    浅析python之单元测试框架-unittest
    Python之日志处理(logging模块)
    Spring整理
    Spark学习笔记11面向对象编程
  • 原文地址:https://www.cnblogs.com/kumulinux/p/2808696.html
Copyright © 2011-2022 走看看