亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

配置MySQL主從復制(Replication)服務

添加時間:2014-2-13 17:40:28  添加: 思海網絡 
我們一般使用 MySQL 的時候,如果數據量不大,只使用一臺 MySQL 服務器,備份的時候使用 mysqldump 工具就可以了,但是隨著業務不斷發展,問題出現了:數據量直線上升,單獨一臺數據庫服務器開始出現性能的瓶頸,數據訪問越來越慢。備份也變得困難了,因為 mysqldump 是導出一份文本文件,而數據量特別大的時候,這樣的備份往往需要很長時間。

  如果你遇到了類似上面的問題,你就可 以使用建立 MySQL 主從服務器的復制方式來解決,MySQL 的復制有以下幾個優勢:主服務器/從服務器設置增加了健壯性,主服務器出現問題時,你可以切換到從服務器繼續提供服務。通過在從服務器上執行查詢操作來降 低客戶查詢的負荷,可以得到更好的客戶響應時間,但是不要同時在主從服務器上進行更新,這樣可能引起沖突。使用復制的另一個好處是可以使用一個從服務器執 行備份,而不會干擾主服務器。在備份過程中主服務器可以繼續處理更新。

  MySQL 復制的原理:

  MySQL使用3個 線程來執行復制功能,其中1個在主服務器上,另兩個在從服務器上。當發出START SLAVE時,從服務器創建一個I/O線程,以連接主服務器并讓主服務器發送二進制日志。主服務器創建一個線程將二進制日志中的內容發送到從服務器。從服 務器I/O線程讀取主服務器Binlog Dump線程發送的內容并將該數據拷貝到從服務器數據目錄中的本地文件中,即中繼日志。第3個線程是SQL線程,從服務器使用此線程讀取中繼日志并執行日 志中包含的更新。SHOW PROCESSLIST語句可以查詢在主服務器上和從服務器上發生的關于復制的信息。

  默認中繼日志使用 host_name-relay-bin.nnnnnn形式的文件名,其中host_name是從服務器主機名,nnnnnn是序列號。用連續序列號來創 建連續中繼日志文件,從000001開始。從服務器跟蹤中繼日志索引文件來識別目前正使用的中繼日志。默認中繼日志索引文件名為 host_name-relay-bin.index。在默認情況,這些文件在從服務器的數據目錄中被創建。中繼日志與二進制日志的格式相同,并且可以用 mysqlbinlog讀取。當SQL線程執行完中繼日志中的所有事件后,中繼日志將會被自動刪除。

  設置 MySQL 主從復制:

  注意:MySQL 主從服務器最好使用相同的軟件版本,以避免不不可預期的故障。

  軟件環境:系統 rhel4u8,MySQL-5.1.44,

  主服務器ip:192.168.0.1  hostname:node1

  從服務器ip:192.168.0.2  hostname:node2

  設置主服務器

  1、編輯 /etc/hosts   (此步非必須)

  增加以下內容:

  192.168.0.2    node2 

  2、在主服務器上建立一個為從服務器進行復制使用的用戶。該賬戶必須授予 REPLICATION SLAVE 權限,由于僅僅是進行復制使用所以不需要再授予任何其它權限。

mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%'192.168.0.2' IDENTIFIED BY 'slavepasswd'; 
mysql> FLUSH PRIVILEGES; 

  3、編輯主服務器的配置文件:/etc/my.cnf的[ mysqld ] 部分:

  server-id = 本機數據庫 ID 標示,該部分還應有一個server-id=Master_id選項,其中master_id必須為1到232之間的一個正整數值

  log-bin = 二進制日志的位置和名稱

  binlog-do-db = 需要備份的數據庫名,如果備份多個數據庫,重復設置這個選項即可

  binlog-ignore-db = 不需要備份的數據庫苦命,如果備份多個數據庫,重復設置這個選項即可

  我的主服務器設置為:

server-id = 1 
log-bin=/usr/local/mysql/data/mysql-bin.000001 
binlog-do-db = wapnews 
binlog-ignore-db = mysql 
binlog-ignore-db = test 
binlog-ignore-db = information_schema

  4、主服務器執行FLUSH TABLES WITH READ LOCK語句清空所有表和塊寫入語句:

  mysql> FLUSH TABLES WITH READ LOCK; 

  5、保持mysql客戶端程序不要退出。開啟另一個終端對主服務器數據目錄做備份。

[root@node1 ~]# cd /usr/local/mysql/data 
[root@node1 ~]# tar -zcvf /tmp/mysql-wapnews.tar.gz ./wapnews 

  把備份完畢的數據庫備份復制到從服務器上。

  6、當FLUSH TABLES WITH READ LOCK所置讀鎖定有效時(即mysql客戶端程序不退出),讀取主服務器上當前的二進制日志名和偏移量值:

mysql > SHOW MASTER STATUS; 
+-----------------------------+---------------+-------------------------+--------------------------------------------+ 
| File                 | Position   | Binlog_Do_DB    | Binlog_Ignore_DB             | 
+------------------------------+---------------+-------------------------+--------------------------------------------+ 
| mysql-bin.000001    | 73        | wapnews        | test,mysql,information_schema | 
+------------------------------+---------------+-------------------------+--------------------------------------------+ 

  File列顯示日志名,而Position顯示偏移量。在該例子中,二進制日志值為mysql-bin.000001,偏移量為73。記錄該值。以后設置從服務器時需要使用這些值。它們表示復制坐標,從服務器應從該點開始從主服務器上進行新的更新。

  取得快照并記錄日志名和偏移量后,回到前一中端重新啟用寫活動:

  mysql> UNLOCK TABLES; 

  設置從服務器:

  1、編輯/etc/hosts    (此步非必要)

  增加以下內容:

  192.168.0.1 node1 

  2、停止從服務器上的mysqld服務并編輯從服務器的配置文件:/etc/my.cnf 的[ mysqld ] 部分:

  server-id = 本機數據庫 ID 標示,該部分還應有一個server-id=Master_id選項,其中master_id必須為1到232之間的一個正整數值

  [root@node2 ~]# service mysqld stop

  我的從服務器配置

  server-id=2

  3、將主服務器數據庫備份恢復到從服務器的數據目錄中。確保對這些文件和目錄的權限正確。服務器 MySQL運行的用戶必須能夠讀寫文件,如同在主服務器上一樣。

[root@node2 ~]# cd /usr/local/mysql/data 
[root@node2 ~]# tar -zxvf mysql-wapnews.tar.gz 
[root@node2 ~]# chown -R mysql:mysql /usr/local/mysql/data/wapnews 

  4、啟動從服務器。在從服務器上執行下面的語句,用你的系統的實際值替換選項值:

mysql> CHANGE MASTER TO 
     -> MASTER_HOST='master_host_name', 
     -> MASTER_USER='replication_user_name', 
     -> MASTER_PASSWORD='replication_password', 
     -> MASTER_LOG_FILE='recorded_log_file_name', 
     -> MASTER_LOG_POS=recorded_log_position;

  我的從服務器設置:

mysql> change master to 
  -> master_host='192.168.0.1', 
  -> master_user='replication', 
  -> master_password='slavepass', 
  -> master_port=3306 
  -> master_log_file='mysql-bin.000001', 
  -> master_log_pos=73, 
  -> master_connect_retry=30; 

  5、啟動從服務器線程:

  mysql> START SLAVE; 

  執行這些程序后,從服務器應連接主服務器,并補充自從快照以來發生的任何更新。

  檢查主從復制是否正常運行

  在從服務器上運行 show processlist 命令,檢查是否啟動兩個復制進程。

mysql> show processlist \G; 
*************************** 1. row *************************** 
   Id: 44 
  User: system user 
  Host: 
   db: NULL 
Command: Connect 
  Time: 490 
 State: Waiting for master to send event 
  Info: NULL 
*************************** 2. row *************************** 
   Id: 45 
  User: system user 
  Host: 
   db: NULL 
Command: Connect 
  Time: 390 
 State: Has read all relay log; waiting for the slave I/O thread to update it 
  Info: NULL 
3 rows in set (0.00 sec) 

  在從服務器上運行 show slave status 命令,檢查復制進程是否正確。

mysql> show slave status \G; 
*************************** 1. row *************************** 
        Slave_IO_State: Waiting for master to send event 
         Master_Host: 192.168.0.1 
         Master_User: replication 
         Master_Port: 3306 
        Connect_Retry: 30 
       Master_Log_File: mysql-bin.000001 
     Read_Master_Log_Pos: 73 
        Relay_Log_File: localhost-relay-bin.000002 
        Relay_Log_Pos: 251 
    Relay_Master_Log_File: mysql-bin.000001 
       Slave_IO_Running: Yes 
      Slave_SQL_Running: Yes 
       Replicate_Do_DB: 
     Replicate_Ignore_DB: 
      Replicate_Do_Table: 
    Replicate_Ignore_Table: 
   Replicate_Wild_Do_Table: 
 Replicate_Wild_Ignore_Table: 
          Last_Errno: 0 
          Last_Error: 
         Skip_Counter: 0 
     Exec_Master_Log_Pos: 106 
       Relay_Log_Space: 410 
       Until_Condition: None 
        Until_Log_File: 
        Until_Log_Pos: 0 
      Master_SSL_Allowed: No 
      Master_SSL_CA_File: 
      Master_SSL_CA_Path: 
       Master_SSL_Cert: 
      Master_SSL_Cipher: 
        Master_SSL_Key: 
    Seconds_Behind_Master: 0 
Master_SSL_Verify_Server_Cert: No 
        Last_IO_Errno: 0 
        Last_IO_Error: 
        Last_SQL_Errno: 0 
        Last_SQL_Error: 
1 row in set (0.00 sec) 

   上面出現: Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes 表示復制正常,如果有一個顯示是NO,請檢查以上的主從設置步驟是否正確。如果出現復制錯誤,從服務器的錯誤日志(HOSTNAME.err)中也會出現 錯誤消息。出處:http://7056824.blog.51cto.com/69854/400642

  注意:從服務器復制時,會在其數據目錄中發現文件master.info和HOSTNAME-relay- log.info。狀態文件保存在硬盤上,從服務器關閉時不會丟失。下次從服務器啟動時,讀取這些文件以確定它已經從主服務器讀取了多少二進制日志,以及 處理自己的中繼日志的程度。不要移除或編輯這些文件,除非你確切知你正在做什么并完全理解其意義。即使這樣,最好是使用CHANGE MASTER TO語句。

關鍵字:服務器、MySQL、日志

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站