国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MYSQL雙機熱備份的配置實施

2024-07-24 12:36:42
字體:
來源:轉載
供稿:網友

為了實現MYSQL數據庫的冗災、備份、恢復、負載均衡等功能,喻名堂這兩天一直在學習和研究mysql的雙機熱備,其實MYSQL的雙機熱備就是使用MYSQL同步功能兩種方式里面的“主-主”同步方式實現的。在一開始搜索資料進行配置時沒有注意版本的問題,所以試了很多次都沒有成功,后來才知道搜索的方法不對,結果搜索出來的資料都是老版本的,最后通過搜索對應的版本號再根據資料終于配置成功,現將不同版本的雙機熱備的配置方法進行整理并分享出來方便其他想配置MYSQL雙機熱備的朋友能一次成功。

要實現熱備MYSQL的版本都要高于3.2,還有一個基本的原則就是作為從數據庫的數據庫版本可以高于主服務器數據庫的版本,但是不可以低于主服務器的數據庫版本,如果要實現雙機熱備就一定要兩個數據庫的版本一樣,如果不知道兩個數據庫的版本可以用如下命令查看

1、登陸前查看:

$MYSQLHOME/bin/mysql –V      //$MYSQLHOME指MYSQL的安裝目錄

2、登陸后查看:

A、 mysql>status

B、 mysql>select version();

現在MYSQL的最新版為5.5.27,從版本5.1.7開始雙機熱備的方法就出現了變化,在版本5.1.7前的配置文件里面的一些可以用的參數在版本5.1.7以后已經不可以用了。現在喻名堂就根據版本5.1.7以前和版本5.1.7以后兩種情況的雙機熱備的配置進行描述。

在對配置過程進行描述前先對實驗環境做一些定義,方便后面的描述

第一臺MYSQL數據庫服務器的名稱為:MYSQL_A,IP地址為:192.168.100.100;第二臺MYSQL數據庫服務器的名稱為:MYSQL_B,IP地址為:192.168.100.200,兩臺服務器都是使用的centos5.6的操作系統,兩個MYSQL的安裝目錄都是:/mysql,數據目錄都是:/mysql/data,配置文件目錄都是:/etc/my.cnf,要同步的數據庫為asymt

一、版本5.1.7以前

1、設置MYSQL_A

編輯my.cnf,在[mysqld]下添加如下配置:(my.cnf里面已經存在的配置不必重復配置)

  1. Server-id=1                           //服務id,這個應該默認是1就不用改動 
  2. log-bin=log_name                     //日志文件的名稱,這里可以制定日志到別的目錄 如果沒有設置則默認主機名的一個日志名稱 
  3. master-host=192.168.100.200   //主服務器的IP地址或者域名 
  4. master-port=3306                     //主數據庫的端口號 
  5. master-user=asymt                    //同步數據庫的用戶 
  6. master-password=123456               //同步數據庫的密碼 
  7. master-connect-retry=60     //如果從服務器發現主服務器斷掉,重新連接的時間差 
  8. binlog-do-db=asymt                   //記錄日志的數據庫 
  9. binlog-ignore-db=mysql                //不記錄日志的數據庫 , 這就避免了Master上的權限設置等被同步到Slave上,如果對這方面沒有限制,就可以不設置這個參數。 

以上的如果有多個數據庫只要在下面添加就行,有多少個數據庫就添加幾行,然后設置同步數據庫的用戶帳號.

mysql> GRANT REPLICATION SLAVE ON *.* TO 'asymt'@'192.168.100.200' IDENTIFIED BY '123456';

4.0.2以前的版本, 因為不支持REPLICATION 要使用下面的語句來實現這個功能

mysql> GRANT FILE ON *.*  TO 'asymt'@'192.168.100.200' IDENTIFIED BY '123456';

如果想要在Slave上有權限執行 "LOAD TABLE FROM MASTER" 或 "LOAD DATA FROM MASTER" 語句的話,必須授予全局的 FILE 和 SELECT 權限:

mysql>GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO 'asymt'@'192.168.100.200' IDENTIFIED BY '123456';

鎖定現有的數據庫、備份現在的數據并在MYSQL_B上恢復數據

鎖定數據庫:mysql> FLUSH TABLES WITH READ LOCK;

不要退出這個終端,否則這個鎖就不生效了;備份數據庫有兩種辦法一種是直接進入到mysql的data目錄然后打包你需要備份數據庫的文件夾,第二種是使用mysqldump的方式來備份數據庫但是要加上"--master-data " 這個參數,建議使用第一種方法來備份數據庫,然后在MYSQL_B上將MYSQL_A上的備份數據解壓到數據庫data目錄并設置好權限以及屬主,然后用“unlock tables”語句來釋放鎖,最后重啟數據庫。

2、設置MYSQL_B

同MYSQL_A一樣,編輯my.cnf,在[mysqld]下添加如下配置:(my.cnf里面已經存在的配置不必重復配置)

  1. Server-id=2                           //服務id,每個數據庫應該不一樣 
  2. log-bin=log_name                     //日志文件的名稱,這里可以制定日志到別的目錄 如果沒有設置則默認主機名的一個日志名稱 
  3. master-host=192.168.100.100   //主服務器的IP地址或者域名 
  4. master-port=3306                     //主數據庫的端口號 
  5. master-user=asymt                    //同步數據庫的用戶 
  6. master-password=123456               //同步數據庫的密碼 
  7. master-connect-retry=60               //如果從服務器發現主服務器斷掉,重新連接的時間差 
  8. binlog-do-db=asymt                   //記錄日志的數據庫 
  9. binlog-ignore-db=mysql                //不記錄日志的數據庫 , 這就避免了 

Master上的權限設置等被同步到Slave上,如果對這方面沒有限制,就可以不設置這個參數,以上的如果有多個數據庫只要在下面添加就行,有多少個數據庫就添加幾行.

然后設置同步數據庫的用戶帳號:

mysql> GRANT REPLICATION SLAVE ON *.* TO 'asymt'@'192.168.100.100' IDENTIFIED BY '123456';

4.0.2以前的版本, 因為不支持REPLICATION 要使用下面的語句來實現這個功能

mysql> GRANT FILE ON *.*  TO 'asymt'@'192.168.100.100' IDENTIFIED BY '123456';

如果想要在Slave上有權限執行 "LOAD TABLE FROM MASTER" 或 "LOAD DATA FROM MASTER" 語句的話,必須授予全局的 FILE 和 SELECT 權限:

mysql>GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO 'asymt'@'192.168.100.100' IDENTIFIED BY '123456';

最后重啟數據庫.

3、分別登陸MYSQL_A和MYSQL_B上的數據庫,查看同步狀態:

  1. mysql –h localhost –u root -p 
  2. mysql>SHOW SLAVE STATUSG 
  3. *************************** 1. row *************************** 
  4. Slave_IO_State: Waiting for master to send event 
  5. Master_Host: 192.168.100.100 
  6. Master_User: asymt 
  7. Master_Port: 3306 
  8. Connect_Retry: 60 
  9. Master_Log_File: localhost-bin.000002 
  10. Read_Master_Log_Pos: 1556 
  11. Relay_Log_File: localhost-relay-bin.000004 
  12. Relay_Log_Pos: 51 
  13. Relay_Master_Log_File: localhost-bin.000002 
  14. Slave_IO_Running: Yes 
  15. Slave_SQL_Running: Yes 
  16. Replicate_Do_DB: cicro,cicro 
  17. Replicate_Ignore_DB: 
  18. Replicate_Do_Table: 
  19. Replicate_Ignore_Table: 
  20. Replicate_Wild_Do_Table: 
  21. Replicate_Wild_Ignore_Table: 
  22. Last_Errno: 0 
  23. Last_Error: 
  24. Skip_Counter: 0 
  25. Exec_Master_Log_Pos: 1556 
  26. Relay_Log_Space: 51 
  27. Until_Condition: None 
  28. Until_Log_File: 
  29. Until_Log_Pos: 0 
  30. Master_SSL_Allowed: No 
  31. Master_SSL_CA_File: 
  32. Master_SSL_CA_Path: 
  33. Master_SSL_Cert: 
  34. Master_SSL_Cipher: 
  35. Master_SSL_Key: 
  36. Seconds_Behind_Master: 0 
  37. 1 row in set (0.00 sec) 

可以看到,Slave_IO_Running 和 Slave_SQL_Running 兩列的值都為 "Yes",這表明 Slave 的 I/O 和 SQL 線程都在正常運行.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临沭县| 中山市| 辽源市| 阳泉市| 富川| 乡城县| 上虞市| 个旧市| 林口县| 阳东县| 衡山县| 巫溪县| 芦溪县| 松江区| 灌南县| 鸡泽县| 竹北市| 攀枝花市| 吉隆县| 高唐县| 临漳县| 九江县| 名山县| 盘锦市| 铜梁县| 青海省| 怀安县| 吉水县| 兖州市| 北京市| 琼中| 共和县| 兴义市| 阳谷县| 甘孜| 南安市| 剑川县| 阳江市| 三门县| 新兴县| 襄樊市|