如何設定 MariaDB 主主複製
OS: 8.5
MariaDB: MariaDB 10.3.28
兩臺主機名稱如下:
- Hostname: MasterA ,IP:192.168.232.130
- Hostname: MasterB ,IP:192.168.232.131
使用下面 在兩天伺服器中安裝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
編輯/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
儲存配置,並重啟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)
修改MasterB節點的mariadb-server.cnf配置檔案:
[root@MasterB ~]# vim /etc/my.cnf.d/mariadb-server.cnf
在mysqld部分下面新增server-id,log-bin 和 log-basename
儲存配置,並重啟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)
首先進入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)]>
在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)
檢視slave狀態是否有報錯:
看到上圖中,
Slave_IO_Running
和
Slave_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)
在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)
檢視slave狀態是否有報錯:
看到上圖中,
Slave_IO_Running
和
Slave_SQL_Running
都為yes,
Last_Error
沒有錯誤資訊。
任意一臺資料庫,建立資料庫後,另一臺也可以看到了。下面實在MasterB中建立的資料庫:
MariaDB [test_replica]> create database mydb; Query OK, 1 row affected (0.000 sec)
在MasterA中檢視是否有mydb資料庫:
下面是在MasterA中建立資料庫:
MariaDB [(none)]> create database mydb_02; Query OK, 1 row affected (0.000 sec)
在MasterB中檢視是否有mydb_02資料庫:
下面例項將MasterA資料庫中的test_replica庫備份,並匯入到MasterB的資料庫中,然後在MasterB中的資料庫中新增資料,檢視是否會同步:
[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;'
將MasterA到處的資料匯入到MasterB系統中的test_replica庫中:
[root@MasterB ~]# mysql -u root -p123456 test_replica < a.sql
看到已經匯入了資料表。
下面在MasterB中,進入test_replica庫,向Admins表新增資料,然後在MasterA中檢視是否也存在同樣資料:
MariaDB [test_replica]> insert into Admins values ('user01','123'); Query OK, 1 row affected (0.002 sec)
在MasterA中檢視test_replica資料庫中的Admins表:
[root@MasterA ~]# mysql -u root -p123456 -e 'select * from test_replica.Admins;' +--------+------+ | Aname | Apwd | +--------+------+ | admin | 123 | | user01 | 123 | +--------+------+
可以看到資料存在。下面在MasterA中向Admins表新增資料,檢視MasterB資料庫中是否會同步:
MariaDB [test_replica]> insert into Admins values ('user02','321') ; Query OK, 1 row affected (0.002 sec)
在MasterB中也可以看到剛剛建立的資訊:
[root@MasterB ~]# mysql -u root -p123456 -e 'select * from test_replica.Admins;' +--------+------+ | Aname | Apwd | +--------+------+ | admin | 123 | | user01 | 123 | | user02 | 321 | +--------+------+
這樣就完成啦。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2896392/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mysql(Mariadb)資料庫主從複製MySql資料庫
- CentOS 7 named設定主從複製CentOS
- mysql5.7主從複製,主主複製MySql
- MariaDB系列之三:基於日誌(binlog)主主複製(Master-Master)AST
- Windows 環境下,MySQL 的主從複製和主主複製WindowsMySql
- windows環境下,Mysql的主從複製和主主複製WindowsMySql
- mysql資料庫的主從複製和主主複製實踐MySql資料庫
- 主從複製
- MySQL叢集之 主從複製 主主複製 一主多從 多主一叢 實現方式MySql
- mysql複製--主從複製配置MySql
- Redis:主從複製Redis
- Redis - 主從複製Redis
- MySQL主從複製MySql
- Redis主從複製Redis
- MySQL主從複製之GTID複製MySql
- 主從複製是啥或者主從複製的原理是什麼?
- mysql主從複製(一):一主多從MySql
- MySQL進階:主主複製+Keepalived高可用MySql
- MySQL主從複製之半同步複製MySql
- MySQL主從複製之非同步複製MySql非同步
- MySQL主從複製原理MySql
- MySQL的主從複製MySql
- redis系列:主從複製Redis
- PostgreSQL 主從複製方案SQL
- mysql--主從複製MySql
- Redis 主從複製原理Redis
- mysql 8.4 主從複製MySql
- redis(14)主從複製Redis
- Redis 主從複製(Replication)Redis
- mysql主從複製搭建MySql
- PostgreSQL如何設定主鍵序列?SQL
- Mysql實現主從複製(一主雙從)MySql
- mysql5.6主主複製及keepalived 高可用MySql
- MySQL8.0輕鬆搞定GTID主主複製MySql
- MySQL 主從複製之多執行緒複製MySql執行緒
- Mysql 8.4.0 結合 Docker 搭建GTID主從複製,以及傳統主從複製MySqlDocker
- Redis主從複製流程概述Redis
- windows 下mysql主從複製WindowsMySql