Window 系統與Linux 系統的Mysql 雙機熱備


近日,由於實際工作要求,需要實現windows下的mysqlRedhat環境下的mysql實現雙擊熱備功能,現把相關的配置方法總結如下。

Window 軟件環境信息

Windows Server 2008

Mysql version 5.1.5

IP:192.168.0.200

Linux mysql 服務信息

Linux 5.0

Mysql version 5.0.3

IP:192.168.0.210

以下服務器Windows Server 2008 上的mysql簡稱W服務器,linux服務器上的mysql簡稱L服務器

前言:

配置之前必須確保兩個數據庫的表結構及數據完全一樣,數據庫的名稱建議一樣。這里將W服務器的數據庫同步到L服務器上,這里是這樣實現的,W服務器上通過phpMyAdmin將數據庫導出MyDBName.sql文件,然后壓縮成標准的zip格式文件,拷貝到L服務器上,在L服務器上通過phpMyAdmin先創建數據庫MyDBName,之后將MyDBName.zip導入到的MyDBName數據庫中即可。

這里注意兩點:

1)             這里數據庫名稱用MyDBName有大小寫主要是為了介紹的方便,建議數據庫名稱最好都用小寫;

2)             為了保證W服務器上導出的數據庫的sql文件能在L服務器上正常執行,建議用phpMyAdmin工具進行數據導出,因為linux環境下phpMyAdmin工具非常好用,這樣可以避免因工具不懂而導致的不必要的問題。

一、主從熱備

主數據庫服務器:W服務器

備份服務器:L服務器

1.1 主服務器配置(W服務器上myql服務的配置)

先配置W服務器上的mysql.ini信息,主要是在配置文件里[mysqld] 節點下添加如下三行代碼

log-bin=         #二進制日志路徑很重要,如果沒有logs文件夾可以自己建立,默認在mysql-bin目錄下,也可自己指定目錄

server-id=1       #主服務器ID,唯一性

binlog-do-db=MyDBName #需同步的數據庫,如果沒有本行,即表示同步所有的數據庫

上面三行代碼有時候在配置文件里面存在,只需把代碼前面的“#”刪除即可,添加完成上面三行代碼,需要重啟mysql服務.

接下來在Wmysql服務器上為Lmysql服務器添加一個專用的數據同步的用戶帳號(repl,然后授權

grant replication slave on *.* to 'repl'@'192.168.0.210' identified by '123456';

之后通過命令myql  –h192.168.0.200  –uroot  –psa進入數據庫,查看master狀態

Mysql>show master status;

可看到這里有兩個狀態變量,它們十分重要

 

mysql > SHOW MASTER STATUS;

+--------------------+------------+---------------------+-------------------------+

| File     | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+--------------------+------------+---------------------+------------------------+

| mysql-bin.003 | 73   | MyDBName| mysql       |

+--------------------+------------+---------------------+-------------------------+

 

注意 File mysql-bin.003 position 73

這個文件是對MyDBName 這個數據庫的二進制日志記錄,記錄數據變化的當前記錄條數是 73 ,對備份服務器非常重要,需要記住,后面要用到。

 

1.2 備份服務器配置(L服務器上的myql服務的配置)

L服務器上打開mysql.cnf

[mysqld]節點下添加如下內容

server-id=2

master-host=192.168.0.200  #主服務器ip

master-user=repl          #主服務器分配的用戶名

master-password=123456     #主服務器分配的用戶名對應的密碼

master-port=3306                             #主服務器mysql端口,默認3306

master-connect-retry=10    #重復連接的次數

這里這樣配置有時候可以,有時候會導致mysql服務無法啟動,建議最好采用下面這種方式

[mysqld]節點下添加如下內容

server-id=2

修改完成后,需要重啟mysql服務。

然后通過命令行登錄msyql(mysql –hlocalhost –uroot -ppwd)

Mysql>slave stop; #先停止slave服務

然后執行

Mysql>change master to

>master_host='192.168.0.200',

>master_user='repl',

>master_password='123456',

>master_log_file=' mysql-bin.003' ,   #上面主服務器查詢的值,有用吧

>master_log_pos=73;               #上面主服務器查詢的值有用吧

正常執行之后,啟動slave服務即可

Mysql>slave start;

之后查看slave狀態

Mysql>show slave status; 能查看到信息,表示備份服務器設置成功。

接下來要做的工作就是測試主服務器數據庫中表的字段信息修改后,備份服務器是不是會正常會被修改。

 

二、互為主從熱備

在第一節主從熱備配置中可以實現W數據庫服務器表中字段信息修改直接同步到L服務器的數據庫中,實現主從熱備。

在主從熱備的基礎上配置,互為主從熱備,步驟差不多。

2.1主服務器配置:L服務器上的myql服務的配置

L數據庫服務器上運行mysql命令

Mysql>show master status;

顯示的信息為empty,沒有記錄,需要在配置文件mysql.cnf中的[mysqld]添加如下幾行信息即可

log-bin=   #可為空,也可寫mysql-bin

binlog-do-db=MyDBName    #待同步的數據庫名稱

binlog-ignore-db=mysql     #忽略mysql數據庫的同步

重啟mysql服務

 

命令行執行Mysql>show master status;  可以看到結果

mysql > SHOW MASTER STATUS;

+--------------------+------------+---------------------+-------------------------+

| File     | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+--------------------+------------+---------------------+------------------------+

| mysql-bin.001 | 106   | MyDBName| mysql      |

+--------------------+------------+---------------------+-------------------------+

表示設置成功,同時執行命令mysql>show slave status;

可以看到很多信息,表明設置成功。

2.2備份服務器的配置:W服務器上mysql服務的配置

這里配置很簡單,只需要執行mysql幾個命令即可

通過命令行登錄msyql(mysql –hlocalhost –uroot -ppwd)

Mysql>slave stop; #先停止slave服務

然后執行

Mysql>change master to

>master_host='192.168.0.210',    #L服務器的IP

>master_user='repl',                            #L服務器為W服務器創建的同步賬戶

>master_password='123456',     #L服務器為W服務器創建的同步賬戶的密碼

>master_log_file=' mysql-bin.001' ,   #上面主服務器查詢的值

>master_log_pos=106;               #上面主服務器查詢的值

正常執行之后,啟動slave服務即可

Mysql>slave start;

至此,mysql主從互為熱備配置完成。類似的方法在網上搜索會有很多,以上內容是本人在實際工作中的總結,經過實踐檢驗。

在實際的配置過程中,可能會存在其他的問題,一般都能很快解決,本次總結希望以后能夠比較快速的處理類似的問題。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM