zoukankan      html  css  js  c++  java
  • 数据库多实例

    什么是mysql多实例:
      简单的说,就是在一台机器上开启多个不同的服务端口(如:3306,3307) ,运行多个MySQL服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供各自的服务。
      这些MySQL多实例共用---套MySQL安装程序,使用不同(也可以相同)的my.cnf配置文件、启动程序,数据文件。在提供服务时,多实例MySQL在逻辑上看来是各自独立的,多个实例的自身是根据配置文件对应的设定值,来取得服务器的相关硬件资源多少。
      作个比喻,MySQL多实例相当于房子的多个卧室一样, 每个实例可以看作-一个卧室,整个服务器就是一套房子,服务器的硬件资源(cpu,mem,disk)可以看作房子的卫生间、厨房、厅一样,是房子的公用资源,北漂蜗居在一起,肯定要共用上述资源。这样想我们就应,该明白了。
    MySQL多实例的作用与问题:
      有效利用服务器资源
      当单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务。
      节约服务器资源
      当公司资金紧张,但是数据库又需要各自尽量独立提供服务,而且,需要主从同步等
      资源相互抢占问题
      当某个服务实例并发很高或者有慢查询时,整个实例会消耗更多的内存、CPU、磁盘I0资源,导致服务器上的其它的实例提供服务的质量下降。这就相当于大家住在一一个房子的不同卧室一 样,早晨起来上班,都要刷牙、洗脸等,这样卫生间就会长期占用,其它人就要等待一样的道理。
    MySQL配置方案:
    1.通过多配置文件及多个启动程序来实现多实例的方案,在配置多实例之前要关掉mysql进程
    第一步:创建MySQL多实例的数据文件目录

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

    第二步:删除启动文件

    rm -f /etc/init.d/mysqld

    第三步:上传my.cnf和mysql这个文件放在3306和3307下

    cd /data/3306 cd /data/3307 rz

    第四步:创建多实例的启动文件

    vim /data/3306/mysql
    vim /data/3307/mysql

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

    mysqld_ safe --defaults-file=/data/3306/my. cnf 2>81 > /dev/null &
    mysqld_ safe --defaults-file=/data/3307/my. cnf 2>81> /dev/null &

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

    mysqladmin -u root -poldboy123 -S /data/3307/mysql.sock shut dowmn
    mysqladmin -u root -poldboy123 -S /data/3306/mysql.sock shut dowmn

    第五步:对目录授权

    chown -R mysql.mysq /data

    第六步:加执行权限,用于启动mysql

    find /data/ -type f -name "mysql"|xargs chmod +x

    第七步:初始化MySQL多实例的数据库文件

    cd /application/mysql/scripts/
    ./mysql_install_db --basedir=/application/mysql --datadir=/data/3306/data --user=mysql
    ./mysql_install_db --basedir=/application/mysql --datadir=/data/3307/data --user=mysql

    初始化数据库的主要目的就是创建基础的数据库文件,例如:生成musql库表等。
    第八步:启动数据库

    /data/3306/mysql start
    /data/3307/mysql start

    第九步:登陆数据库,多实例登陆需要指定sock文件

    mysql -S /data/3306/mysql.sock
    create database d3306;
    mysql -S /data/3307/mysql.sock
    create database d3307;

    第十步:增加密码

    mysqladmin -u root -S /data/3306/mysql.sock password '123456'
    mysqladmin -u root -S /data/3307/mysql.sock password '123456'

    2.单一配置文件

    [mysqld_multi]
    mysql=/usr/bin/mysqld_safe
    mysqladmin=/usr/bin/mysqladmi
    user = mysql
    [mysqld1]#一次类推,端口不同
    socket = /var/lib/mysql/mysql.sock
    prot = 3306
    pid-file = /var/lib/mysql/mysql.pid
    datadir = /var/lib/mysql
    user = mysql
    skip-name-resolvee
    server -id=12
    master-connect retry=604
    default-storage -engine=innodbe
    innodb _buffer_ pool size=1G
    innodb_ addi tional_ _mem pool=10M
    default_ character_ set=utf8
    character set_ server-utf8
    read-only
    relat-log-space-limit=3G
    expire-logs_day=20

    启动方式:

    mysqld_multi --config-file=/data/mysql/my_multi.cnf start 1,2,3, 4,5,6,7
  • 相关阅读:
    进程状态-top,ps
    怎么杀死进程?
    linux文件属性和类型
    文件管理的相关命令
    系统的目录结构
    linux基础_02
    linux基础_01
    python 01
    什么是NoSql
    为何不推荐子查询和join?
  • 原文地址:https://www.cnblogs.com/zrxuexi/p/11846852.html
Copyright © 2011-2022 走看看