Mysql的雙主架構

                                            Mysql的雙主架構

 

雙主模型架構:兩個節點都有二進制日誌和中繼日誌,都要啓用dump線程,io線程,sql線程。

         io線程:負責從其他節點請求二進制日誌事件。

         dump線程:從本地的二進制日誌讀取事件。

         sql線程:從中繼日誌中讀取事件保存在本地數據庫中,並寫入二進制日誌。

配置實現雙主模型:

        1)雙方節點具有複製權限的用戶

        2)雙方節點都得啓用中繼日誌和需要配置二進制日誌

        3)爲保證具有自動增長功能的字段能正確生成id,需要配置兩個節點分別使用偶數或奇數。

本次實驗使用兩個節點分別node1:192.168.1.117node2:192.168.1.119。在上面兩個節點最好乾淨的數據庫,先做下初始化。之後就可以配置mysql的雙主模型了。

[root@www mydata]# ls    

binlogs  data  relaylogs               //此三個目錄文件在配置中都會使用到。

[root@www mydata]# ll                //還需要屬主屬組爲mysql

total 12

drwxr-xr-x. 2 mysql mysql 4096 Feb 15 13:25 binlogs

drwxr-xr-x. 2 mysql mysql 4096 Feb 15 13:24 data

drwxr-xr-x. 2 mysql mysql 4096 Feb 15 13:26 relaylogs

[root@www mydata]#

在兩個node節點上的配置文件處分別編輯如下:

node1

[root@www mysql]# vim /etc/mysql/my.cnf

# binary logging is required for replication

log-bin=/mydata/binlogs/mysql-master1-bin   //二進制日誌存放位置。

relay-log=/mydata/relaylogs/mysql-relay-log   //中繼日誌存放位置。

# binary logging format - mixed recommended

binlog_format=mixed

# required unique id between 1 and 2^32 - 1

# defaults to 1 if master-host is not set

# but will not function as a master if omitted

server-id       = 1

auto-increment-offset  =1

auto-increment-increment  =2            //id每次增加2

node2節點上。

log-bin=/mydata/binlogs/mysql-master2-bin

relay-log=/mydata/relaylogs/mysql-relay-log

# binary logging format - mixed recommended

binlog_format=mixed 

# required unique id between 1 and 2^32 - 1

# defaults to 1 if master-host is not set

# but will not function as a master if omitted

server-id       = 11

auto-increment-offset  =2

auto-increment-increment  =2

分別啓動數據庫

[root@bogon data]# service mysqld start

Starting MySQL.......                                      [  OK  ]

node1node2

MariaDB [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO reuser@'192.168.1.%'

IDENTIFIED BY 'repass';

Query OK, 0 rows affected (0.09 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

node1

MariaDB [(none)]> SHOW MASTER STATUS;

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

| File                     | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-master1-bin.000001 |      501 |              |                  |

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

1 row in set (0.00 sec)

MariaDB [(none)]>

node2

MariaDB [(none)]> SHOW MASTER STATUS;

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

| File                     | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-master2-bin.000003 |      501 |              |                  |

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

1 row in set (0.81 sec)

MariaDB [(none)]>

node2

MariaDB [(none)]> CHANGE MASTER TO

MASTER_HOST='192.168.1.117',MASTER_USER='reuser',MASTER_PASSWORD='repass',MASTER_LOG_FILE='mysql-master1-bin.000001',MASTER_LOG_POS=501;

Query OK, 0 rows affected (0.06 sec)

node1

MariaDB [(none)]> CHANGE MASTER TO

MASTER_HOST='192.168.1.119',MASTER_USER='reuser',MASTER_PASSWORD='repass',MASTER_LOG_FILE='mysql-master2-bin.000003',MASTER_LOG_POS=501;

Query OK, 0 rows affected (0.16 sec)

MariaDB [(none)]> START SLAVE;

Query OK, 0 rows affected (0.08 sec)

MariaDB [(none)]> SHOW SLAVE STATUS\G;

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

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.1.119

                  Master_User: reuser

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-master2-bin.000003

          Read_Master_Log_Pos: 501

               Relay_Log_File: mysql-relay-log.000002

                Relay_Log_Pos: 537

        Relay_Master_Log_File: mysql-master2-bin.000003

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB:

node2

MariaDB [(none)]> CHANGE MASTER TO

MASTER_HOST='192.168.1.117',MASTER_USER='reuser',MASTER_PASSWORD='repass',MASTER_LOG_FILE='mysql-master1-bin.000001',MASTER_LOG_POS=501;

Query OK, 0 rows affected (0.16 sec)

MariaDB [(none)]> START SLAVE;

Query OK, 0 rows affected (0.08 sec)

MariaDB [(none)]> SHOW SLAVE STATUS\G;

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

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.1.117

                  Master_User: reuser

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-master1-bin.000001

          Read_Master_Log_Pos: 501

               Relay_Log_File: mysql-relay-log.000002

                Relay_Log_Pos: 537

        Relay_Master_Log_File: mysql-master1-bin.000001

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB:  

node2上創建庫。

MariaDB [(none)]> CREATE DATABASE double_master;

Query OK, 1 row affected (0.00 sec)

node1上查看所有數據庫。

MariaDB [(none)]> SHOW DATABASES;

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

| Database           |

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

| information_schema |

| double_master      |

| mysql              |

| performance_schema |

| test               |

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

5 rows in set (0.05 sec)

node1上創建表。

MariaDB [(none)]> USE double_master;

Database changed

MariaDB [double_master]> CREATE TABLE double_tb1(id INT(11) AUTO_INCREMENT PRIMARY KEY,name CHAR(20),gender ENUM('m','f'));

Query OK, 0 rows affected (0.55 sec) 

MariaDB [double_master]> INSERT INTO double_tb1 VALUES(NULL,'Wu Zetian','f'),(NULL,'Li Shimin','m');

Query OK, 2 rows affected (0.07 sec)

Records: 2  Duplicates: 0  Warnings: 0

MariaDB [double_master]> SELECT * FROM double_tb1;    //查看錶double_tb1數據。

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

| id | name      | gender |

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

|  1 | Wu Zetian | f      |

|  3 | Li Shimin | m      |

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

2 rows in set (0.06 sec) 

node2節點上查看。

MariaDB [(none)]> USE double_master;

Database changed

MariaDB [double_master]> SHOW TABLES;

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

| Tables_in_double_master |

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

| double_tb1              |

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

1 row in set (0.00 sec)

MariaDB [double_master]> SELECT * FROM double_tb1;    //查看結果和node1上一樣。

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

| id | name      | gender |

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

|  1 | Wu Zetian | f      |

|  3 | Li Shimin | m      |

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

2 rows in set (0.07 sec) 

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