MySQL数据库的集中化运维,能够通过在一台MySQL数据库服务器上,部署多个MySQL实例。该功能是通过mysqld_multi来实现。mysqld_multi用于管理多个mysqld的服务进程,这些mysqld服务进程程序能够用不同的socket或是监听于不同的端口,同一时候将数据文件分布到不同的磁盘以分散IO。mysqld_multi提供简单的命令用于启动,关闭和报告所管理的服务器的状态。从而降低生产环境的维护成本,方便兴许的迁移和清理等工作,借助多实例绑定的方式提高服务器的总体资源利用率。对于多实例的配置有2种方式,一种是在my.cnf为全部实例提供配置,一种是使用每个实例一个配置文件。本文主要描写叙述第一种方式。
   另外一种多实例配置方式请參考:MySQL多实例配置(二)   有关MySQL单实例的安装请參考:Linux 下MySQL源代码安装完整版

1、各数据库多实例的差异
  MSSQL
      MSSQL中的实例指的是一个SQL server服务器上仅有一个缺省实例。缺省实例名即为机器名ServerName(或IP)。

假设在同一台机器上再安装SQL server,我们能够对实例命名如ServerName/InstanceName。
      即一台SQL server服务器上能够存在多个不同的实例。

一个实例下能够存在多个不同的数据库。

对于不同实例下的数据库的訪问,使用ServerName/InstanceName:PortNo就可以实现訪问,缺省实例为ServerName:PortNo。
      对不同的实例配置IP地址,相关的訪问协议。端口等等。

实例的可訪问性须要启动该实例相应的相关服务。此处须要注意的是实例名和实例的服务名并非同样的。
      缺省的实例的服务名为MSSQLSERVER,而命名实例的服务名为MSSQL$INSTANCE_NAME。
  
  Oracle 
      一个Oracle Server由一个Oracle实例和一个Oracle数据库组成。

即:Oracle Server = Oracle Instance + Oracle Database
      在Oracle的实例主要是由SGA,PGA以及一堆的后台进程来组成,此称之为实例。
      一系列物理文件的集合包含控制文件、数据文件、联机日志文件、參数文件、密码文件等称之为数据库。
      一个实例仅仅能訪问一个数据库。一个数据库能够被多个实例訪问。
    
  MySQL
      MySQL实例的概念与MSSQL差点儿相同。一个MySQL实例下能够存在或訪问N个数据库。
      不同的实例间能够用不同的端口号来区分。各个实例的数据能够使用不同的磁盘文件夹。
      MySQL多实例通过mysqld_multi工具来进行管理。

2、现有的环境
  mysql安装路径: /u01/app/mysql
  mysql数据路径: /u01/app/mysqldata/data3306
  mysql端口号: 3306
  mysql  版本号:5.6.12 Source distribution
  OS     环境:SUSE Linux Enterprise Server 11 SP3  (x86_64)

3、初始化实例
  #为新实例创建数据文件夹并赋权
  suse11:~ # mkdir -p /u01/app/mysqldata/data3406  
  suse11:~ # mkdir -p /u01/app/mysqldata/data3506
  suse11:~ # chown mysql:mysql -R /u01/app/mysqldata/data3406
  suse11:~ # chown mysql:mysql -R /u01/app/mysqldata/data3506
  
  #初始化实例
  suse11:~ # cd /u01/app/mysql
  suse11:/u01/app/mysql # ./scripts/mysql_install_db --user=mysql --ldata=/u01/app/mysqldata/data3406/
  suse11:/u01/app/mysql # ./scripts/mysql_install_db --user=mysql --ldata=/u01/app/mysqldata/data3506/
  # Author : Leshami
  # Blog   : http://blog.csdn.net/leshami

4、改动配置文件
  suse11:~ # more /etc/my.cnf        #本配置文件里仅提供了多实例的基本參数,生产环境依据情形自行加入
  [mysqld_multi]
  mysqld = /u01/app/mysql/bin/mysqld_safe
  mysqladmin = /u01/app/mysql/bin/mysqladmin
  user = admin       #此帐户用于多实例关闭时使用。须要在每个实例上创建并授权
  password = xxx     #使用统一的密码便于管理
  
  [mysqld3306]
  socket = /tmp/mysql3306.sock
  port = 3306
  pid-file = /u01/app/mysqldata/data3306/mysql3306.pid
  datadir = /u01/app/mysqldata/data3306
  basedir = /u01/app/mysql
  user = mysql
  server-id=3306
  
  [mysqld3406]
  socket = /tmp/mysql3406.sock
  port = 3406
  pid-file = /u01/app/mysqldata/data3406/mysql3406.pid
  datadir = /u01/app/mysqldata/data3406
  basedir = /u01/app/mysql
  user = mysql
  server-id=3406
  
  [mysqld3506]
  socket = /tmp/mysql3506.sock
  port = 3506
  pid-file = /u01/app/mysqldata/data3506/mysql3506.pid
  datadir = /u01/app/mysqldata/data3506
  basedir = /u01/app/mysql
  user = mysql
  server-id=3506

5、启动关闭多实例
  suse11:~ # mysqld_multi report
  Reporting MySQL servers
  MySQL server from group: mysqld3306 is not running
  MySQL server from group: mysqld3406 is not running
  MySQL server from group: mysqld3506 is not running
  
  suse11:~ # mysqld_multi start 3306
  suse11:~ # mysqld_multi start 3406,3506     #能够同一时候启动多个实例
  suse11:~ # netstat -ntlp  | grep mysql
  tcp        0      0 :::3306                 :::*                    LISTEN      14786/mysqld       
  tcp        0      0 :::3406                 :::*                    LISTEN      15103/mysqld       
  tcp        0      0 :::3506                 :::*                    LISTEN      15371/mysqld
  
  suse11:/tmp # ls *.sock
  mysql3306.sock  mysql3406.sock  mysql3506.sock
  
  #为新实例改动密码及创建账户
  suse11:/tmp # mysql -uroot -pxxx -S ./mysql3306.sock  #3306已经有初始密码
  root@localhost[(none)]> grant shutdown on *.* to 'admin'@'localhost' identified by 'xxx' with grant option;
  
  suse11:/tmp # mysql -uroot -p -S ./mysql3406.sock
  Enter password:  #此时密码为空
  root@localhost[(none)]> set password for 'root'@'localhost'=password('xxx');
  
  root@localhost[(none)]> grant shutdown on *.* to 'admin'@'localhost' identified by 'xxx' with grant option;
  
  suse11:/tmp # mysql -uroot -p -S ./mysql3506.sock
  Enter password:  #此时密码为空
  root@localhost[(none)]> set password for 'root'@'localhost'=password('xxx');
  
  root@localhost[(none)]> grant shutdown on *.* to 'admin'@'localhost' identified by 'xxx' with grant option;

#使用TCP方式登录測试
  suse11:/tmp # mysql -uroot -pxxx -P3506
  root@localhost[(none)]>
  
  #检查多实例的状态
  suse11:/tmp # mysqld_multi report
  Reporting MySQL servers
  MySQL server from group: mysqld3306 is running
  MySQL server from group: mysqld3406 is running
  MySQL server from group: mysqld3506 is running

#停止多实例服务器
  suse11:~ # mysqld_multi stop 3306
  suse11:~ # mysqld_multi report 3306
  Reporting MySQL servers
  MySQL server from group: mysqld3306 is not running
  suse11:~ # mysqld_multi stop 3406
  suse11:~ # mysqld_multi stop 3506

#多实例服务器的日志
  suse11:~ # tail /u01/app/mysql/share/mysqld_multi.log
  Stopping MySQL servers
  
  Warning: Using a password on the command line interface can be insecure.
  141017 23:40:09 mysqld_safe mysqld from pid file /u01/app/mysqldata/data3406/mysql3406.pid ended
  mysqld_multi log file version 2.16; run: Fri Oct 17 23:40:09 2014
  
  Stopping MySQL servers
  
  Warning: Using a password on the command line interface can be insecure.
  141017 23:40:11 mysqld_safe mysqld from pid file /u01/app/mysqldata/data3506/mysql3506.pid ended
  
  #一次启动多个实例
  suse11:~ # mysqld_multi start 3306-3506
  suse11:~ # mysqld_multi report
  Reporting MySQL servers
  MySQL server from group: mysqld3306 is running
  MySQL server from group: mysqld3406 is running
  MySQL server from group: mysqld3506 is running

6、配置多实例的自启动
  # echo "/u01/app/mysql/bin/mysqld_multi start 3306-3506" >>/etc/init.d/boot.local

MySQL多实例配置(一)的更多相关文章

  1. MYSQL多实例配置方法 mysqld_multi方法

    在实际的开发过程中,可能会需要在一台服务器上部署多个MYSQL实例,那建议使用MYSQL官方的解决方案 mysqld_multi 1.修改my.cnf 如一个定义两个实例的参考配置: [mysqld_ ...

  2. MYSQL多实例配置与使用教程

    原文http://www.111cn.net/database/mysql/58651.htm 在实际的开发过程中,可能会需要在一台服务器上部署多个MYSQL实例,那建议使用MYSQL官方的解决方案 ...

  3. MySQL多实例配置(两)

    MySQL操作和维护一个集中的数据库的.它可以由一个单一的执行MySQL在数据库服务器,部署多MySQL示例.这个功能是由mysqld_multi实现.mysqld_multimysqld的服务进程. ...

  4. 基于mysqld_multi实现MySQL多实例配置

    环境: 操作系统  CentOS7.5(已安装MySQL) 主机名    localhost 本机安装路径为 /usr/local/mysql 实验初始配置:所有主机关闭防火墙与selinux [ro ...

  5. MySQL多实例配置

    实验环境:RHEL6.4为最小化安装,mysql安装包为通用二进制安装包,版本为mysql-5.6.26 创建mysql用户 #useradd –M –s /sbin/nologin mysql #y ...

  6. mysql多实例配置下,用脚本启动mysql时,出现Please read "Security" section of the manual to find out how to run mysqld as root!

    [root@localhost 3308]# mysqld stop170414 0:35:28 [Note] --secure-file-priv is set to NULL. Operation ...

  7. mysql、mariadb安装和多实例配置

    本文目录:1. mysql单实例安装 1.1 rpm安装mysql 1.2 通用二进制包安装mysql 1.2.1 初始化数据库 1.2.2 安装后的规范化操作 1.3 编译安装 1.3.1 编译安装 ...

  8. Mysql多实例添加到开机自启的方法

    Mysql多实例配置成功后,想让配置成开机自启. 首先看一下Linux启动的知识点,顺序如下. 1 加载内核2 执行init程序3 /etc/rc.d/rc.sysinit   # 由init执行的第 ...

  9. MySQL多实例部署与优化

    MySQL安装 ##上传MySQL安装包## mkdir /home/oldboy/tools -p cd /home/oldboy/tools/ ###wget -q http://mirrors. ...

随机推荐

  1. sh脚本写法

    1.shell注释符号: 1. 单行注释: “#” 2. 多行注释: : << ! 语句1 语句2 语句3 语句4 ! http://blog.csdn.net/lansesl2008/a ...

  2. 爬虫学习之第一次获取网页内容及BeautifulSoup处理

    from urllib.request import urlopen from urllib.request import HTTPError from bs4 import BeautifulSou ...

  3. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown error 1146

    问题介绍:   com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown error 1146 MySql语法错误, 但是错 ...

  4. 微信小程序:this code is a mock one

    问题 微信小程序调用wx.login() 的 success 函数带的code 提示this code is a mock one 解决方法 appid和微信小程序开发工具所登陆用户管理的小程序清单不 ...

  5. 基于HLS(HTTP Live Streaming)的视频直播分析与实现

    转自:http://www.cnblogs.com/haibindev/archive/2013/01/30/2880764.html HLS(HTTP Live Streaming)的分析: HTT ...

  6. viewport移动端适配,读文笔记

    文章地址: viewport移动端适配 笔记: 移动端适配目的: 希望在屏幕尺寸大小不同的手机上进行访问页面时,页面显示的效果能合理的展示,我们期望的是在手机屏幕较大时显示的内容比较大一些,手机屏幕小 ...

  7. 万能的搜索--之DFS(二)

    (一)深度优先搜索(DFS) 我们先给出深度优先的解决办法,所谓深度优先搜索,在迷宫问题里就是不撞南墙不回头,能走得深一点就尽量深一点.如果碰到了墙壁就返回前一个位置尝试其他的方向.在<啊哈!算 ...

  8. poj2368 Buttons

    题目描述 题解: 非常简单的巴什博弈问题. 简单来说保证$L+1$是$K$的因数即可. 决策是,先手取$x$个,后手就取$L+1-x$个. 那个$L>=2$真的很坑. 代码: #include& ...

  9. svn基本使用详情

    1.增加(Add)先提到变更列表中,再commit到配置库中,选择新增文件,右键SVN菜单执行“Add“操作提交到”变更列表中”,然后右键SVN菜单执行”SVNCommit”提交到版本库中. 2.删除 ...

  10. 关于Spring的理解和相关笔记

    java不死的原因就是:就是因为他有一个核心非常强大的技术框架支持. Spring IOC: Inverse Of Control 控制反转 IFly fly; AOP: Aspect Oriente ...