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

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

實驗環境:sql

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

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

1、安裝數據庫centos

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

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

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

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

2、兩個數據庫都修改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;

修改好以後,相互遠程測試一下看是否可以相互遠程。

3、主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)

4、主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)

5、利用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以上版本已經不支持在配置文件中指定主服務器相關選項。

6、查看同步狀態

在主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

7、測試

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

8、結論

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

相關文章
相關標籤/搜索