引用 MySQL集羣:主從數據庫配置 實現查詢負載

 

引用mysql

【轟隆隆】MySQL集羣:主從數據庫配置 實現查詢負載

來源:鐵木箱子的博客linux

     在作web應用系統中,若是數據庫出現了性能瓶頸,而你又是使用的MySQL數據庫,那麼就能夠考慮採用數據庫集羣的方式來實現查詢負載了。由於通常來說任何一個系統中數據庫的查詢操做比更新操做要多的多,所以經過多臺查詢服務器將數據庫的查詢分擔到不一樣的查詢數據庫從而提升數據庫的查詢效率。web

      MySQL數據庫支持數據庫的主從複製功能,使用主數據庫進行數據的插入、刪除與更新操做,而從數據庫則專門用來進行數據庫查詢,這樣就能夠將更新操做與查詢操做分離到不一樣的數據庫上,從而提升查詢的效率。sql

一、主數據庫配置

      MySQL任何一臺數據庫服務器均可以做爲主數據庫服務器,咱們只須要簡單的修改配置文件就能夠使之成爲主數據庫服務器。咱們打開MySQL的配置文件(對於windows就是MySQL安裝目錄下的my.ini文件,對於linux一般就是/etc/my.cnf文件),咱們在配置文件中加入以下兩行:數據庫

 
    
  1. server-id = 1
  2. log-bin=mysql-bin

      注意,MySQL進行主從複製是經過二進制的日誌文件來進行,因此咱們必須開啓MySQL的日誌功能,即咱們上面的log-bin,同時每一臺數據庫服務器都須要指定一個惟一的server-id,一般主數據庫服務器咱們指定爲1。主數據庫服務器的配置就是如此了,而後咱們還須要給主數據庫授予一個能夠進行復制的用戶,命令以下:windows

 
    
  1. GRANT replication slave ON *.* TO 'repuser'@ '%' IDENTIFIED BY '123456';

      replication slave是MySQL數據庫中表示覆制的權限名稱,repuser則是表示從數據庫服務器登錄到主數據庫服務器時用到的用戶名稱,123456表示登錄密碼。這樣,咱們就在主數據庫服務器上建立了一個能夠進行復制的用戶帳號了。而後咱們啓動主數據庫服務器就能夠了。服務器

二、從數據庫配置

      從數據庫服務器的配置稍微多一點,主要也是修改MySQL的配置文件,加入以下行:性能

 
    
  1. server-id= 2
  2. log-bin=mysql-bin --在從服務器上啓動日誌記錄,不是必須,可是官方建議
  3. master-host=主機 --主數據庫服務器的IP地址
  4. master-user=用戶名 --執行復制的用戶名稱,就是grant的用戶
  5. master-password=密碼 --複製用戶的密碼,就是grant的用戶密碼
  6. master-port=端口 --主數據庫服務器的端口,默認是 3306

      相關的配置參數意義已作了說明,主要就是多了配置主數據庫服務器上的複製帳號的信息。而後咱們啓動從數據庫服務器,注意啓動從數據庫服務器後,並無啓動複製線程,咱們須要在命令行中執行以下命令來啓動複製功能:spa

 
    
  1. slave start

      啓動後,咱們就能夠經過以下命令來查看複製的狀態了:命令行

 
    
  1. show slave status;

      而後咱們就能夠看到系統的輸出,第一個就是Slave_IO_State,它的值一般就是Waiting for master to send event,而後咱們也還能夠看到咱們剛纔配置的主數據庫服務器的IP地址、複製帳號等信息。

      咱們還能夠在從數據庫服務器上動態的改變對主數據庫的配置信息,經過以下命令來進行:

 
    
  1. CHANGE MASTER TO MASTER_HOST=’主數據庫服務器的IP地址’, MASTER_PORT= 3306, MASTER_USER=’主數據庫上的複製賬號’, MASTER_PASSWORD=’密碼’;

三、啓動與監控

      監控主數據庫服務器的狀態,咱們能夠經過showmaster status來查看主數據庫服務器的狀態,它的輸出以下:

 
    
  1. + ------------------+----------+--------------+------------------+
  2. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  3. + ------------------+----------+--------------+------------------+
  4. | mysql -bin .000003 | 370558 | | |
  5. + ------------------+----------+--------------+------------------+
  6. 1 row IN SET ( 0.00 sec )

      其中File是表示日誌記錄的文件,而Position則是表示當前日誌在文件中的位置,這個也是從數據庫服務器上執行復制操做必須的標識,後面的兩個字段分別表示要記錄的數據庫名稱和不須要記錄的數據庫名稱,咱們也能夠在配置文件中進行配置。

      監控從數據庫服務器的狀態,咱們能夠經過show slave status來查看從數據庫服務器的狀態,它的基本輸出以下:

 
    
  1. + ----------------------------------+---------------+-------------+-------------+---------------+------------------+---------------------+-----------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+
  2. | Slave_IO_State | Master_Host | Master_User | Master_Port | Connect_Retry | Master_Log_File | Read_Master_Log_Pos | Relay_Log_File | Relay_Log_Pos | Relay_Master_Log_File | Slave_IO_Running | Slave_SQL_Running | Replicate_Do_DB | Replicate_Ignore_DB | Replicate_Do_Table | Replicate_Ignore_Table | Replicate_Wild_Do_Table | Replicate_Wild_Ignore_Table | Last_Errno | Last_Error | Skip_Counter | Exec_Master_Log_Pos | Relay_Log_Space | Until_Condition | Until_Log_File | Until_Log_Pos | Master_SSL_Allowed | Master_SSL_CA_File | Master_SSL_CA_Path | Master_SSL_Cert | Master_SSL_Cipher | Master_SSL_Key | Seconds_Behind_Master |
  3. + ----------------------------------+---------------+-------------+-------------+---------------+------------------+---------------------+-----------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+
  4. | Waiting FOR master TO send event | 172 .16 .11 .221 | repuser | 3306 | 60 | mysql -bin .000003 | 370558 | WEB2 -relay -bin .000206 | 12251 | mysql -bin .000003 | Yes | Yes | | | | | | | 0 | | 0 | 370558 | 12251 | None | | 0 | No | | | | | | 0 |
  5. + ----------------------------------+---------------+-------------+-------------+---------------+------------------+---------------------+-----------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+
  6. 1 row IN SET ( 0.00 sec )

      上面顯示的結果中的mysql-bin.000003370558分別表示的是Master_Log_File和Read_Master_Log_Pos,即主數據庫服務器上的日誌文件和要讀取的主數據庫服務器上的日誌的位置,一般這個Read_Master_Log_Pos是和主數據庫服務器上的Position是一致的,固然這個是指同步之後的,若是從數據庫服務器尚未同步完畢,那麼這個值一般比主數據庫服務器上的要小。

      若是從數據庫服務器在同步的過程當中出現了問題,那麼咱們能夠經過reset slave來重置從數據庫服務器的複製線程,從數據庫服務器上的一般操做命令有:
 
     
  1. Slave start; --啓動複製線程
  2. Slave stop; --中止複製線程
  3. Reset slave; --重置複製線程
  4. Show slave status; --顯示覆制線程的狀態
  5. Change master to; --動態改變到主數據庫的配置

      至此,咱們就完成了mysql的主從數據庫的配置,這也也爲咱們的應用在集羣中的使用打下了一個基礎。

 

【轟隆隆】推薦:

http://www.honglonglong.com

http://blog.163.com/fulong258  

相關文章
相關標籤/搜索