MySQL數據庫雙機熱備------主-主備份配置

MySQL數據庫雙機熱備------主-主備份配置

實驗環境:

主1數據庫 192.168.1.1 centos6.5 x86_64 +MySQL5.5.35

主2數據庫192.168.1.2  WindowsXP x64 +MySQL5.5.13

一、安裝數據庫

1.在centos6.5 x86_64 上面安裝MySQL5.5.35數據庫,下載rpm包的形式安裝,在MySQL的官網上面下載。

MySQL-client-5.5.35-1.el6.x86_64.rpm

MySQL-server-5.5.35-1.el6.x86_64.rpm

2.WindowsXP x64 上面安裝MySQL5.5.13,軟件在網上獲取。

二、兩個數據庫都修改root密碼,並且開啓遠程訪問權限。

1.# mysqladmin -u root -ppassword newpassword

Windows上面的是在dos下面進入到C:\Program Files\MySQL\MySQL Server 5.5\bin目錄然後執行上面的命令。

2.mysql> grant all privileges on *.* to root@'% 'identified by 'newpassword';

mysql>flush privileges;

修改好之後,相互遠程測試一下看是否能夠相互遠程。

三、主1數據庫配置

1.添加同步賬號

登陸mysql操作界面,在主1服務器上爲主2服務器建立一個用來同步的連接帳戶,該帳戶必須授予REPLICATION SLAVE權限。因爲從mysql版本3.2以後就可以通過REPLICATION對其進行雙機熱備的功能操作。

操作指令如下:

mysql> grant replication slave on*.* to bak@'192.168.1.2' identified by 'bak';

mysql> flush privileges;

2.測試同步賬號的連接性

創建好同步連接帳戶後,我們可以通過在主2服務器上用bak帳戶對主1服務器數據庫進行訪問,看下是否能連接成功。主2上輸入如下指令:

# mysql –h192.168.1.1 –u bak –p  回車之後要求輸入密碼,密碼爲bak,如果登陸成功,則可以繼續進行雙擊熱備,否則請找到問題並解決。

3.修改配置文件

修改配置文件/etc/my.cnf  打開在[mysqld]下修改即可:

[mysqld]

server-id= 1

log-bin=mysql-bin                  #啓用日誌文件

binlog-do-db= test          #需要同步的數據庫

binlog-ignore-db= mysql    #不需要同步的數據庫

log-slave-updates

sync_binlog= 1

auto_increment_offset= 1

auto_increment_increment= 2

replicate-do-db= test

replicate-ignore-db= mysql,information_schema

修改完配置文件後,保存後,重啓一下mysql服務,如果成功則沒問題。

4.查看主服務器 mysql的狀態文件

#servicemysql restart

登陸mysql 輸入命令:

mysql>flush tables whit read lock;   鎖表以便在同步之前寫數據進去。

mysql>show master status\G

***************************1. row ***************************

           File: mysql-bin.000003

       Position: 107

   Binlog_Do_DB: test

Binlog_Ignore_DB:mysql

1row in set (0.00 sec)

注意看裏面的參數,特別前面兩個File和Position,在從服務(Slave)配置主-主關係會有用到的。

注:這裏使用了鎖表,目的是爲了產生環境中不讓進新的數據,好讓從服務器定位同步位置,初次同步完成後,記得解鎖。

mysql>unlock tables;

QueryOK, 0 rows affected (0.00 sec)

四、主2數據庫配置

1.添加同步賬戶

登陸mysql操作界面,在主2服務器上爲主1服務器建立一個用來同步的連接帳戶,該帳戶必須授予REPLICATION SLAVE權限。因爲從mysql版本3.2以後就可以通過REPLICATION對其進行雙機熱備的功能操作。

操作指令如下:

mysql> grant replication slave on*.* to bak@'192.168.1.1' identified by 'bak';

mysql> flush privileges;

2.測試同步賬戶的連接性

創建好同步連接帳戶後,我們可以通過在從服務器(Slave)上用bak帳戶對主服務器(Master)數據庫進行訪問,看下是否能連接成功。在從服務器(Slave)上輸入如下指令:

# mysql –h192.168.1.2 –u bak –p  回車之後要求輸入密碼,密碼爲bak,如果登陸成功,則可以繼續進行雙擊熱備,否則請找到問題並解決。

3.修改配置文件

修改配置文件 C:\ProgramFiles\MySQL\MySQL Server 5.5 中的my.ini

[mysqld]

server-id = 2

log-bin=mysql-bin

replicate-do-db = test

replicate-ignore-db =mysql,information_schema,performance_schema

binlog-do-db = test

binlog-ignore-db = mysql

log-slave-updates

sync_binlog = 1

auto_increment_offset = 2

auto_increment_increment = 2

修改完之後,重啓windows上的mysql的服務。

Netmysql restart  也可以手工去服務裏面找到mysql重啓。

4.查看主2 mysql服務器的狀態文件

登陸mysql 輸入命令:

mysql>flush tables whit read lock;   鎖表以便在同步之前寫數據進去。

mysql>show master status\G

***************************1. row ***************************

           File: mysql-bin.000004

       Position: 536

   Binlog_Do_DB: test

Binlog_Ignore_DB:mysql

1row in set (0.00 sec)

五、利用change master 語句指定同步位置

1.指定主1的同步源

主1的同步源爲主2 mysql服務器。

在主1服務器上面操作,這步是最關鍵的一步了,在進入mysql操作界面後,輸入如下指令:

mysql>stopslave;          //先停步slave服務線程,這個是很重要的,如果不這樣做會造成以下操作不成功。

mysql>change master to

>master_host='192.168.1.2',master_user='bak',master_password='bak',

> master_log_file='ysql-bin.000004',master_log_pos=536;

注:master_log_file,master_log_pos由主2服務器(Master)查出的狀態值中確定。master_log_file對應File, master_log_pos對應Position。Mysql 5.x以上版本已經不支持在配置文件中指定主服務器相關選項。

如果遇到問題不成功,則需要重新設置slave命令如下:

mysql>stop slave;

mysql>reset slave;

之後停止slave線程重新設置。成功後,則可以開啓slave線程了。

mysql>start slave;

2.指定主2的同步源

主2的同步源爲主1 mysql服務器。

在主2服務器上 使用changemaster語句

mysql>stopslave;          //先停步slave服務線程,這個是很重要的,如果不這樣做會造成以下操作不成功。

mysql>change master to

>master_host='192.168.1.1',master_user='bak',master_password='bak',

> master_log_file='ysql-bin.000003',master_log_pos=107;

注:master_log_file,master_log_pos由主服務器(Master)查出的狀態值中確定。master_log_file對應File, master_log_pos對應Position。Mysql 5.x以上版本已經不支持在配置文件中指定主服務器相關選項。

六、查看同步狀態

在主1服務器上查看主2服務器的狀態(對於主1來說,主2就是slave;)用如下指令進行查看:

mysql> show slave status\G

*************************** 1. row***************************

             Slave_IO_State: Waiting for master to send event

                Master_Host: 192.168.1.2

                Master_User: bak

                Master_Port: 3306

              Connect_Retry: 60

            Master_Log_File: mysql-bin.000005

        Read_Master_Log_Pos: 107

             Relay_Log_File: CO6-relay-bin.000004

               Relay_Log_Pos: 253

      Relay_Master_Log_File: mysql-bin.000005

           Slave_IO_Running: Yes

          Slave_SQL_Running: Yes

            Replicate_Do_DB: test

        Replicate_Ignore_DB: mysql,information_schema

         Replicate_Do_Table:

     Replicate_Ignore_Table:

    Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

查看下面兩項值均爲Yes,即表示設置從服務器成功。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

在主2服務器上查看主1服務器的狀態(對於主2來說,主1就是slave;)用如下指令進行查看:

mysql> show slave status\G

*************************** 1. row***************************

             Slave_IO_State: Waiting for master to send event

                Master_Host: 192.168.1.1

                Master_User: bak

                Master_Port: 3306

              Connect_Retry: 60

            Master_Log_File: mysql-bin.000004

        Read_Master_Log_Pos: 536

             Relay_Log_File: IT06-relay-bin.000004

              Relay_Log_Pos: 253

      Relay_Master_Log_File: mysql-bin.000004

           Slave_IO_Running: Yes

          Slave_SQL_Running: Yes

            Replicate_Do_DB: test

         Replicate_Ignore_DB:mysql,information_schema,performance_schema

         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: 536

            Relay_Log_Space: 408

            Until_Condition: None

             Until_Log_File:

              Until_Log_Pos: 0

         Master_SSL_Allowed: No

查看下面兩項值均爲Yes,即表示設置從服務器成功。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

七、測試

在主1數據庫的test庫中建表寫數據,查看主2數據庫中是否有同步數據。再在主2數據庫的test庫中建表寫數據,查看主1數據庫中是否有同步數據。

八、結論

主—主數據庫的雙機熱備操作比較複雜,遵循的原則是每一步必須都調試成功,否則下面就無法進行了。Mysql 5.x以上版本已經不支持在配置文件中指定主服務器相關選項。所以要使用changemaster語句,這一點很重要。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章