MySQL多執行個體配置(一)

來源:互聯網
上載者:User

標籤:database   sql   dba   mysql   instance   

    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已經有初始密碼
  [email protected][(none)]> grant shutdown on *.* to ‘admin‘@‘localhost‘ identified by ‘xxx‘ with grant option;
  
  suse11:/tmp # mysql -uroot -p -S ./mysql3406.sock
  Enter password:  #此時密碼為空白
  [email protected][(none)]> set password for ‘root‘@‘localhost‘=password(‘xxx‘);
  
  [email protected][(none)]> grant shutdown on *.* to ‘admin‘@‘localhost‘ identified by ‘xxx‘ with grant option;
  
  suse11:/tmp # mysql -uroot -p -S ./mysql3506.sock
  Enter password:  #此時密碼為空白
  [email protected][(none)]> set password for ‘root‘@‘localhost‘=password(‘xxx‘);
  
  [email protected][(none)]> grant shutdown on *.* to ‘admin‘@‘localhost‘ identified by ‘xxx‘ with grant option;

  #使用TCP方式登入測試
  suse11:/tmp # mysql -uroot -pxxx -P3506
  [email protected][(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多執行個體配置(一)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.