zoukankan      html  css  js  c++  java
  • MySQL多实例配置(两)

        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

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

  • 相关阅读:
    gcvt(),ecvt(),fcvt()的区别
    SQLITE3 使用总结
    C++的类型转换浅析
    JAVA Class21
    JAVA Class20
    JAVA Class19
    JAVA Class18
    JAVA Class17
    JAVA Class16
    关于hover失效问题(!important)
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4828080.html
Copyright © 2011-2022 走看看