如何設定 MariaDB 主主複製

roc_guo發表於2022-05-23

OS:  8.5

MariaDB: MariaDB 10.3.28

兩臺主機名稱如下:

  • Hostname: MasterA ,IP:192.168.232.130
  • Hostname: MasterB ,IP:192.168.232.131
安裝MariaDB

使用下面 在兩天伺服器中安裝mariadb服務:

# MasterA中安裝:
[root@MasterA ~]# yum -y install mariadb mariadb-server
# MasterB中安裝:
[root@MasterB ~]# yum -y install mariadb mariadb-server

啟動mariadb服務:

[root@MasterA ~]# systemctl enable mariadb --now
[root@MasterB ~]# systemctl enable mariadb --now

如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製

編輯my.cnf配置檔案

編輯/etc/my.cnf.d/mariadb-server.cnf配置檔案

修改MasterA節點的mariadb-server.cnf配置檔案:

[root@MasterA my.cnf.d]# vim mariadb-server.cnf

在mysqld部分下面新增server-id,log-bin 和 log-basename
如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製
儲存配置,並重啟MasterA的MariaDB服務。

[root@MasterA ~]# systemctl restart mariadb

在MasterA的資料庫中建立一個帳戶,使用者名稱為replica_user,密碼為123456,指定slave的IP地址為192.168.232.131,也就是MasterB的IP地址。

MariaDB [(none)]> grant replication slave on *.* to 'replica_user'@192.168.232.131 identified by '123456';
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.001 sec)

如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製
修改MasterB節點的mariadb-server.cnf配置檔案:

[root@MasterB ~]# vim /etc/my.cnf.d/mariadb-server.cnf

在mysqld部分下面新增server-id,log-bin 和 log-basename
如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製
儲存配置,並重啟MasterA的MariaDB服務。

[root@MasterA ~]# systemctl restart mariadb

在MasterB的資料庫中建立一個帳戶,使用者名稱為replica_user,密碼為123456,指定slave的IP地址為192.168.232.130,也就是MasterA的IP地址。

MariaDB [(none)]> grant replication slave on *.* to 'replica_user'@192.168.232.130 identified by '123456';
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.001 sec)

如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製

配置雙主複製

首先進入MasterA作業系統,進入資料庫,使用 show master status;檢視二進位制日誌名稱和pos值:

[root@MasterA ~]# mysql -u root -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 19
Server version: 10.3.28-MariaDB-log MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show master status;
+---------------------+----------+--------------+------------------+
| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------------+----------+--------------+------------------+
| master01-bin.000004 |     5078 |              |                  |
+---------------------+----------+--------------+------------------+
1 row in set (0.000 sec)
MariaDB [(none)]>

如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製
在MasterB系統中進入資料庫,指定MasterA伺服器的資訊,並指定剛才從MasterA獲取的bin-log檔名和position值,並啟動slave:

MariaDB [(none)]> change master to master_host='192.168.232.130',
    -> master_user='replica_user',
    -> master_password='123456',
    -> master_log_file='master01-bin.000004',
    -> master_log_pos=5078;
Query OK, 0 rows affected (0.007 sec)
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.002 sec)

如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製
檢視slave狀態是否有報錯:
如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製
看到上圖中, Slave_IO_RunningSlave_SQL_Running都為yes, Last_Error沒有錯誤資訊。

其次,在MasterB的資料庫中查詢master相關資訊:

MariaDB [(none)]> show master status;
+---------------------+----------+--------------+------------------+
| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------------+----------+--------------+------------------+
| master02-bin.000001 |     1080 |              |                  |
+---------------------+----------+--------------+------------------+
1 row in set (0.000 sec)

如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製
在MasterA系統中進入資料庫,指定MasterB伺服器的資訊,並指定剛才從MasterB獲取的bin-log檔名和position值,並啟動slave:

MariaDB [(none)]> change master to master_host='192.168.232.131',
    -> master_user='replica_user',
    -> master_password='123456',
    -> master_log_file='master02-bin.000001',
    -> master_log_pos=1080;
Query OK, 0 rows affected (0.010 sec)
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.002 sec)

如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製
檢視slave狀態是否有報錯:
如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製
看到上圖中, Slave_IO_RunningSlave_SQL_Running都為yes, Last_Error沒有錯誤資訊。

任意一臺資料庫,建立資料庫後,另一臺也可以看到了。下面實在MasterB中建立的資料庫:

MariaDB [test_replica]> create database mydb;
Query OK, 1 row affected (0.000 sec)

如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製
在MasterA中檢視是否有mydb資料庫:
如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製
下面是在MasterA中建立資料庫:

MariaDB [(none)]> create database mydb_02;
Query OK, 1 row affected (0.000 sec)

在MasterB中檢視是否有mydb_02資料庫:
如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製
下面例項將MasterA資料庫中的test_replica庫備份,並匯入到MasterB的資料庫中,然後在MasterB中的資料庫中新增資料,檢視是否會同步:
如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製

[root@MasterA ~]# mysqldump -u root -p123456 test_replica > a.sql
[root@MasterA ~]# scp a.sql root@192.168.232.131:~

切換到MasterB作業系統,建立一個資料庫名稱為test_replica:

[root@MasterB ~]# mysql -u root -p123456 -e 'create database test_replica;'
[root@MasterB ~]# mysql -u root -p123456 -e 'show databases;'

如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製
將MasterA到處的資料匯入到MasterB系統中的test_replica庫中:

[root@MasterB ~]# mysql -u root -p123456 test_replica < a.sql

如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製
看到已經匯入了資料表。

下面在MasterB中,進入test_replica庫,向Admins表新增資料,然後在MasterA中檢視是否也存在同樣資料:

MariaDB [test_replica]> insert into Admins values ('user01','123');
Query OK, 1 row affected (0.002 sec)

如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製
在MasterA中檢視test_replica資料庫中的Admins表:

[root@MasterA ~]# mysql -u root -p123456 -e 'select * from test_replica.Admins;'
+--------+------+
| Aname  | Apwd |
+--------+------+
| admin  | 123  |
| user01 | 123  |
+--------+------+

如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製
可以看到資料存在。下面在MasterA中向Admins表新增資料,檢視MasterB資料庫中是否會同步:

MariaDB [test_replica]> insert into Admins values ('user02','321') ;
Query OK, 1 row affected (0.002 sec)

如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製
在MasterB中也可以看到剛剛建立的資訊:

[root@MasterB ~]# mysql -u root -p123456 -e 'select * from test_replica.Admins;'
+--------+------+
| Aname  | Apwd |
+--------+------+
| admin  | 123  |
| user01 | 123  |
| user02 | 321  |
+--------+------+

如何設定 MariaDB 主主複製如何設定 MariaDB 主主複製
這樣就完成啦。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2896392/,如需轉載,請註明出處,否則將追究法律責任。

相關文章