MySQL多实例配置(两)

摘要:
通过多实例绑定提高服务器的总体资源利用率。配置多个实例有两种方法。在Linux下安装MySQL源代码的完整版本。1.各种数据库的多个实例之间的差异。MSSQL MSSQL中的实例仅引用SQL server服务器上缺少的一个实例。也就是说,一个SQL服务器上可以存在多个不同的实例。MySQL实例可以存在或访问N个数据库。每个实例的数据可以使用不同的磁盘文件夹。

    MySQL操作和维护一个集中的数据库的。它可以由一个单一的执行MySQL在数据库服务器,部署多MySQL示例。这个功能是由mysqld_multi实现。mysqld_multimysqld的服务进程。这些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/data3606  
  suse11:~ # mkdir -p /u01/app/mysqldata/data3706
  suse11:~ # chown mysql:mysql -R /u01/app/mysqldata/data3606
  suse11:~ # chown mysql:mysql -R /u01/app/mysqldata/data3706
  
  #初始化实例
  suse11:~ # cd /u01/app/mysql
  suse11:/u01/app/mysql # ./scripts/mysql_install_db --user=mysql --ldata=/u01/app/mysqldata/data3606/
  suse11:/u01/app/mysql # ./scripts/mysql_install_db --user=mysql --ldata=/u01/app/mysqldata/data3706/
  # Author : Leshami
  # Blog   :
http://blog.csdn.net/leshami

 

4、配置各实例的my.cnf文件
  # vi /u01/app/mysqldata/data3606/my3606.cnf
  
  [mysqld]
  socket = /tmp/mysql3606.sock 
  port = 3606
  pid-file = /u01/app/mysqldata/data3606/mysql3606.pid
  datadir = /u01/app/mysqldata/data3606
  basedir = /u01/app/mysql
  user = mysql
  server-id=3606
  [client]
  port = 3606
  socket = /tmp/mysql3606.sock 
  
  [mysql]
  no-auto-rehash
  socket = /tmp/mysql3606.sock 
  prompt=\u@\h[\d]> \
  
  # vi /u01/app/mysqldata/data3706/my3706.cnf
  
  [mysqld]
  socket = /tmp/mysql3706.sock 
  port = 3706
  pid-file = /u01/app/mysqldata/data3706/mysql3706.pid
  datadir = /u01/app/mysqldata/data3706
  basedir = /u01/app/mysql
  user = mysql
  server-id=3706
  [client]
  port = 3706
  socket = /tmp/mysql3706.sock 
  
  [mysql]
  no-auto-rehash
  socket = /tmp/mysql3706.sock
  prompt=\u@\h[\d]> \
  
  suse11:~ # chown -R mysql:mysql /u01/app/mysqldata/data3606/my3606.cnf
  suse11:~ # chown -R mysql:mysql /u01/app/mysqldata/data3706/my3706.cnf

 

5、启动关闭多实例
  suse11:~ # mysqld_safe --defaults-file=/u01/app/mysqldata/data3606/my3606.cnf &
  suse11:~ # mysqld_safe --defaults-file=/u01/app/mysqldata/data3706/my3706.cnf &  
  suse11:~ # netstat -nltp|grep mysql
  tcp        0      0 :::3606                 :::*                    LISTEN      64277/mysqld       
  tcp        0      0 :::3706                 :::*                    LISTEN      64597/mysqld 
  
  suse11:~ # mysqladmin -uroot password 'xxx' -S /tmp/mysql3606.sock
  suse11:~ # mysqladmin -uroot password 'xxx' -S /tmp/mysql3706.sock
  
  #以下使用套接字方式连接到实例
  suse11:~ # mysql -uroot -pxxx -S /tmp/mysql3606.sock
  
root@localhost[(none)]>
  
  suse11:~ # mysql -uroot -pxxx -S /tmp/mysql3706.sock
  
root@localhost[(none)]>
  
  #以下使用TCP方式连接到实例
  suse11:~ # mysql -uroot -pxxx -P3606 --protocol=tcp
  
root@localhost[(none)]> exit
  
  suse11:~ # mysql -uroot -pxxx -P3706 --protocol=tcp
  
root@localhost[(none)]>
  
  #关闭mysql实例
  suse11:~ # mysqladmin -uroot -pxxx -S /tmp/mysql3606.sock shutdown
  suse11:~ # mysqladmin -uroot -pxxx -S /tmp/mysql3706.sock shutdown

版权声明:本文博主原创文章。博客,未经同意不得转载。

免责声明:文章转载自《MySQL多实例配置(两)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android有用的任务管理器—tractordocker的/var/run/docker.sock参数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Prometheus服务发现

  导航:这里主要是列出一个prometheus一些系统的学习过程,最后按照章节顺序查看,由于写作该文档经历了不同时期,所以在文中有时出现 的云环境不统一,但是学习具体使用方法即可,在最后的篇章,有一个完整的腾讯云的实战案例。   1.什么是prometheus?   2.Prometheus安装   3.Prometheus的Exporter详解   ...

数据库打开时报错该如何解决

故障描述 故障主要表现为打开数据库时报错,内容为:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。经过对数据库文件的检测后初步可得出以下结论:sysaux01.dbf有坏块,sysaux01.dbf文件损坏。急需恢复zxfg用户下的数据。 故障分析出现上述报错的可能性原因主要有控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不...

将xml文件数据导入到sql中[原]

        设计数据库的时候为了操作的方便,我们可以选择用xml格式文件来保存我们的数据表结构及其数据。这样的好处是多方面的,设计简单,操作方便,自己可以开发一个设计数据库表的应用程序直接对xml文件进行操作。其实另外一个好处是在最终使用的时候很容易将xml数据导入到任何我们想要的数据库中,不过注明的是这中设计的方法只在于简便,不可能达到其他专门工具的...

Oracle数据库的exp、imp用法

oracle 数据库的导入导出imp/exp相当于oracle数据库备份与还原,exp命令可以把数据从远程数据库服务器导出到本地的dmp文件;imp命令用以把dmp文件从本地导入到远程数据库服务器。 例子: exp命令: 1、exp 用户名/密码 dmp文件保存位置;如下面 在dos窗口中输入:sqlplus SIMMSPSTEST/SIMMSPSTEST...

Oracle12c中配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB)

Oracle12c中的多宿主选项允许一个容器数据库(CDB)容纳多个独立的可插拔数据库(PDB)。本文将展示如何配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB)。1. 配置CDB中的实例参数(ALTER SYSTEM)配置CDB实例参数和配置非CDB实例参数没什么不一样。ALTER SYSTEM命令用来设置初始化参数,而有些数据库配置修改需要...

教你调用数据库读取短信 记事本 通讯录文件,让ios5的短信恢复到ios4

由于高版本的ios固件向下恢复到低版固件时无法通过itunes恢复备份,所以一些数据,比如SMS需要通过提取文件的方式单独进行备份恢复特别是ios5的短信,之前很是头痛,直接将文件恢复到指定目录修改权限是不行的,因为ios5对sms数据库进行了修改,与ios4不匹配,为了使短信恢复,就尝试打开数据,修改看看,结果证明可行我这里针对的是ios5的短信,当然如...