MySQL多实例

来源:互联网 发布:淘宝客采集群怎么盈利 编辑:程序博客网 时间:2024/06/07 19:08

MySQL多实例

mysql

1.1 什么是MySQL多实例?

  简单地说,MySQL多实例就是在一台服务器上同时开启多个不同的服务端口(如:3306/3307)同时运行多个MySQL服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供服务。 
  这些MySQL多实例共用一套MySQL安装程序,使用不同的my.cnf(也可以相同)配置文件、启动程序(也可以相同)和数据文件。在提供服务时,多实例MySQL在逻辑上看来是各自独立的,他们根据配置文件对应设定值,获得服务器响应数量的资源。 
   
比喻图: 
image_1b648ncbo1v4e1g1osvo7v04h89.png-81.9kB

1.2 MySQL多实例的作用与问题

■ 有效利用服务器资源 
当单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务,且可以实现资源的逻辑隔离 
■ 节约服务器资源 
当公司资金紧张,但是数据库又需要各自尽量独立地提供服务,而且,需要主从复制等技术时,多实例就再好不过了

  MySQL多实例有它的好处,但也有弊端,比如,会存在资源互相抢占的问题。当某个数据库实例并发很高或者有SQL慢查询时,整个实例会消耗大量的系统CPU、磁盘I/O等资源,导致服务器上的其他数据库实例提供服务的质量一起下降。

1.3 MySQL多实例的生产场景应用

1、资金紧张性公司的选择 
资金紧张,公司业务访问量又不大,但又希望不同的业务的数据库服务各自尽量独立 
2、并发访问不是特别大的业务 
当公司业务访问量不太大的时候,服务器的资源基本都是浪费的,这就适合多实例的使用 
3、门户网站应用MySQL多实例场景 
配置硬件好的服务器,可以节省IDC机柜空间,跑多实例也不会减少硬件资源不慢的浪费 
一般是从库多实例,例如:某部门使用IBM服务器为48核CPU,内存96GB、一台服务器跑3~4个实例:此外,sina网也是用的多实例,内存48GB左右

说明: sina网的数据库单机1~4个数据库多实例的居多。其他又数1~2个的最多,因为大业务占用的机器比较多。服务器是DELL R510的居多,CPU是E5210,48GB内存,硬盘12*300G SAS,做RAID10,此外门户网站的服务器配置参考。

1.4 安装步骤

■ 安装依赖,下载软件包

  1. yum -y install ncurses-devel libaio-deve #安装依赖包
  2. yum -y install cmake #编译MySQL需要的软件
  3. useradd -s /sbin/nologin -M mysql #创建用户
  4. mkdir /home/oldboy/tools #规范软件包安装路径
  5. cd /home/oldboy/tools
  6. wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.49.tar.gz
  7. tar xf mysql-5.5.49.tar.gz #解压MySQL
  8. cd mysql-5.5.49

■ 编译MySQL源码包

编译参数

  1. cmake -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.32 \
  2. -DMYSQL_DATADIR=/application/mysql-5.5.32/data \
  3. -DMYSQL_UNIX_ADDR=/application/mysql-5.5.32/tmp/mysql.sock \
  4. -DDEFAULT_CHARSET=utf8 \
  5. -DDEFAULT_COLLATION=utf8_general_ci \
  6. -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
  7. -DENABLED_LOOCAL_INFILE=ON \
  8. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  9. -DWITH_FEDERATED_STORAGE_ENGINE=1 \
  10. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  11. -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
  12. -DWITHOUT_PARRTITION_STORAGE_ENGINE=1 \
  13. -DWITH_FAST_MUTEXES=1 \
  14. -DWITH_ZLIB=bundled \
  15. -DENABLED_LOCAL_INFILE=1 \
  16. -DWITH_READLINE=1 \
  17. -DWITH_EMBEDDED_SERVER=1\
  18. -DWITH_DEBUG=0

■ 此步是生成Makefile文件的步骤接下来进行安装

  1. make && make install
  2. ln -s /application/mysql-5.5.49 /application/mysql #制作软连接
  3. mkdir -p /data/{3306,3307}/data #创建多实例目录

这里的data安装使用下载 下载链接:http://pan.baidu.com/s/1pKZ4Li7

  1. [root@db01 /]# find /data -type f -name "mysql"|xargs chmod +x
  2. [root@db01 /]# find /data -type f -name "mysql"|xargs ls -l
  3. -rwxr-xr-x 1 root root 1307 Jul 152013 /data/3306/mysql
  4. -rwxr-xr-x 1 root root 1307 Jul 212013 /data/3307/mysql
  5. [root@db01 /]# chown -R mysql.mysql /data/
  6. [root@db01 /]# cd /application/mysql/scripts/
  7. [root@db01 scripts]# ./mysql_install_db --basedir=/application/mysql/ --datadir=/data/3306/data/ --user=mysql
  8. [root@db01 scripts]# ./mysql_install_db --basedir=/application/mysql/ --datadir=/data/3307/data/ --user=mysql

■ MySQL多实例配置及启动

启动MySQL启动方式和原来不同

  1. [root@db02 scripts]# /data/3306/mysql start
  2. Starting MySQL...
  3. [root@db02 scripts]# /data/3307/mysql start
  4. Starting MySQL...

■ 启动完成进行检查

  1. [root@db02 scripts]# netstat -lntup|grep 330
  2. tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 14480/mysqld
  3. tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 15198/mysqld
  4. cp /application/mysql/bin/* /usr/local/sbin/
  5. 登录的时候需要指定sock
  6. mysql -uroot -S /data/3306/mysql.sock
  7. mysql -uroot -S /data/3307/mysql.sock

■ 设置开机启动

  1. echo "mysql multi instances" >>/etc/rc.local
  2. echo "/data/3306/mysql start" >>/etc/rc.local
  3. echo "/data/3307/mysql start" >>/etc/rc.local

下面我们自己添加一个多实例

添加多实例3308

  1. [root@db02 data]# mkdir /data/3308/data -p
  2. [root@db02 data]# \cp /data/3306/my.cnf /data/3308
  3. [root@db02 data]# \cp /data/3306/mysql /data/3308
  4. [root@db02 3308]# sed -i 's/3306/3308/g' my.cnf mysql
  5. [root@db02 3308]# sed -i 's/server-id = 1/server-id = 8/g' /data/3308/my.cnf
  6. [root@db02 3306]# chown -R mysql.mysql ../3308/

授权

  1. [root@db02 3306]# chmod 700 /data/3308/mysql
  2. [root@db02 3308]# cd /application/mysql/scripts/
  3. [root@db02 scripts]#./mysql_install_db --basedir=/application/mysql/ --datadir=/data/3308/data/ --user=mysql
  4. [root@db02 3308]# chmod +x /data/3308/mysq
  5. [root@db02 scripts]# /data/3308/mysql start
  6. Starting MySQL...
  7. [root@db02 scripts]# mysql -S /data/3308/mysql.sock

MySQL远程连接

  1. mysql -uroot -poldboy -h 10.0.0.7 -P 端口号 -P 为端口参数

因为脚本里面设置的密码是abcdocker 所以如果我们不设置将无法停止MySQL

  1. [root@db02 scripts]# mysqladmin password abcdocker -S /data/3306/mysql.sock
  2. [root@db02 scripts]# mysqladmin password abcdocker -S /data/3307/mysql.sock
  3. [root@db02 scripts]# mysqladmin password abcdocker -S /data/3308/mysql.sock
  4. [root@db02 scripts]# mysql -uroot -pabcdocker -S /data/3306/mysql.sock

常见错误问题:

错误问题: 
■ 对主机名做解析 
■ tmp目录权限1777 
■ 如果启动MySQL多实例没有查到端口就稍等一会 
■ 日志.err结尾的日志进行排错

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 快2岁宝宝不听话怎么办 2岁半的宝宝不听话怎么办 3岁宝宝哭闹不止怎么办 2岁宝宝爱打人怎么办 两周岁宝宝吃东西就吐怎么办 两周岁宝宝不爱吃饭怎么办 两周岁宝宝反复发烧怎么办 两周岁宝宝咳嗽厉害怎么办 2岁宝宝体内有火怎么办 4岁宝宝数都不会怎么办 两岁宝宝太撅怎么办 儿童晚上发烧白天不发烧怎么办 宝宝晚上睡觉认人怎么办 两岁宝宝尿裤子怎么办 分手了想和好怎么办说 2岁半宝宝胆小怎么办 1岁半宝宝胆小怎么办 分手了还是想他怎么办 两岁宝宝夜惊怎么办 孩子误吃了牙膏怎么办 孩子跳舞脸上的妆卸不掉怎么办 4周岁还不会说话怎么办 宝贝2岁多还不会说话怎么办 孩子20个月离婚怎么办 两个月宝宝闹夜怎么办 两个月宝宝闹瞌睡怎么办 2岁宝宝话特别多怎么办 宝宝3岁还不会说话怎么办 小儿3岁说话晚怎么办 1岁半了不会说话怎么办 宝宝2岁还说话晚怎么办 一岁宝宝不愿意学说话怎么办 2周岁宝宝不愿意学说话怎么办 三岁宝宝不爱说话应该怎么办 三岁宝宝不理人怎么办 两岁半宝宝不说话不连贯怎么办 宝宝三岁说话口齿不清怎么办 b超宝宝腿短怎么办 两岁宝宝学说话口吃怎么办 两岁宝宝说话少怎么办 三岁宝宝说话少怎么办