zoukankan      html  css  js  c++  java
  • MySQL数据库多实例介绍及安装

    1.mysql多实例实质

    在一台机器上开启多个不同的mysql服务端口(3306,3307),运行多个mysql服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供各自的服务;

    多个实例共用一套mysql安装程序,配置文件可以用同一个(最好不同),启动程序可以用同一个(最好不同),数据文件是不同的;

    服务器的硬件资源是公用的;

    逻辑上多实例是各自独立的

    2.多实例的作用

    有效利用服务器资源;                                  #每台服务器的资源利用率要高

    节约服务器资源;

    但是多实例会存在资源互相抢占问题,当某个服务实例并发很高或者有慢查询时,会消耗整台服务器更多的内存、CPU等,导致其他实例运行也慢

    3.多实例的应用场景

    资金比较紧张的公司;

    并发访问不是特别大的业务;

    门户网站一般会采取:目的是配硬件好的服务器,节省IDC机柜空间,让硬件资源不浪费

    4.mysql多实例常见配置方案

    1)通过多个配置文件及多个启动程序来实现多实例                 #生产中比较推荐此方法,本随笔中也将采取此方法

    2)单一配置文件方案即一个配置文件里写多个实例的内容      #通过mysqld_muti参数实现,此方法耦合性太高,可参见 http://blog.51cto.com/suifu/1850560

    5.安装多实例数据库

    #生产硬件配置,32G MEM 8 CPU,硬盘6*600g  SAS 15k,跑2-3个实例

    1)安装好cmake及mysql依赖的包

    yum install ncurses-devel -y

    yum install libaio-devel -y

    2)创建mysql多实例数据文件目录      #此过程依赖于已经安装好mysql软件的单实例环境

    采用/data目录作为mysql多实例总的数据文件根目录

    pkill mysqld                                          #创建前需把创建好的mysql单实例杀掉

    rm -f /etc/init.d/mysqld                          #删除单实例时的启动命令

    mkdir -p /data/{3306,3307}/data

    tree /data

    chown -R mysql.mysql /data                 #授权data目录

    3)创建mysql配置文件并配置环境变量

    分别在/data/3306和/data/3307下创建my.conf文件 不像单实例放在/etc/下        #my.cnf中主要修改port和server-id

    echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile                       #环境变量设置单实例已设置

    4)初始化数据文件

    初始化命令同单实例,只是更改数据路径:

    在/application/mysql/scripts下执行./mysql_install_db --basedir=/application/mysql --defaults-file=/data/3306/my.cnf --datadir=/data/3306/data --user=mysql             #同理实现3307初始化

    #初始化的目的就是为了生成存放文件的地方,结果就是在/data下生成了一些系统化的文件

    5)配置开机自启动脚本&启动多实例

    cd /home/coco/tools/mysql-5.5.32

    /bin/cp support-files/mysql.server /data/3306/mysql

    /bin/cp support-files/mysql.server /data/3307/mysql                                   #启动脚本可参见 http://blog.51cto.com/oldboy/2124950

    find /data/ -type f -name "mysql" | xargs chmod +x                             #给启动文件授权执行权限

    find /data/ -type f -name "mysql" | xargs ls -l

    启动数据库:

    /data/3306/mysql start

    /data/3307/mysql start

    netstat -lntup|grep 330[6-7]

    多实例启动文件的启动mysql服务实质                        #这里直接采用mysqld_safe启动多实例

    mysqld_safe --defaults-file=/data/3306/my.cnf 2>&1 > /dev/null &

    mysqld_safe --defaults-file=/data/3307/my.cnf 2>&1 > /dev/null &

    6)登录多实例数据库

    mysql -S /data/3306/mysql.sock             #多实例的登录一定要指定特定的socket

    mysqladmin -u root -S /data/3306/mysql.sock password 'oldboy123'       #多实例为root增加密码

    mysql -uroot -p'oldboy123'  -S /data/3306/mysql.sock                      #密码外侧的单引号可省略

    #为了确保账户安全,因此要将启动脚本改权限,只有root可以更改密码:

    find /data -type f -name "mysql" -exec chmod 700 {} \.

    find /data -type f -name "mysql" -exec chown root.root {} \.

    find /data -type f -name "mysql" -exec  ls -l  {} \.

    7)停止多实例数据库

    多实例启动文件的停止mysql服务实质:

    mysqladmin -u root -poldboy123 -S /data/3306/mysql.sock shutdown

    mysqladmin -u root -poldboy123 -S /data/3307/mysql.sock shutdown

    8)如果mysql服务没有起来,排查办法如下

    8.1)若发现没有mysql的端口,等几秒再看,可能是会比较慢

    8.2)查看错误日志,该日志路径在my.cnf最下面可以看到

    grep log-error my.cnf|tail -l

    >>log-error=/data/3306/mysql_coco.err

    8.3)前面每行命令执行的返回结果是否有错误

    8.4)查看系统的/var/log/messages

    #Linux中可以用vimdiff   file1  file2 来同时对比两个文件内容        %附件为3306和3307两个实例的my.cnf对比

     

    2018年10月27日

    祝好!

  • 相关阅读:
    可重入函数
    进程间通信的方法和实现
    Qt之Qprocess
    mysql学习(十二)内置函数
    mysql学习(十一)嵌套查询 排序 分组
    mysql学习(十)多表查询
    ubuntu 12.04 安装谷歌浏览器
    mysql学习(九)sql语句
    mysql学习(八)数据表类型-字符集
    mysql远程连接问题-http://www.cnblogs.com/jerome-rong/archive/2013/03/05/2944264.html
  • 原文地址:https://www.cnblogs.com/wangke2017/p/9482161.html
Copyright © 2011-2022 走看看