Thiết lập một bản sao MASTER-TO-MASTER giữa hai máy chủ MARIADB

Master-to-master là một loại quy trình sao chép cho phép dữ liệu được lưu trữ bởi một nhóm máy tính / máy chủ có thể được cập nhật bởi bất kỳ thành viên nào trong nhóm.

1. Điều kiện:

  • 2 máy chủ với máy chủ MariaDB được cài đặt sẵn
  • Cơ sở dữ liệu mẫu
  • Quyền truy cập gốc vào máy chủ
  • Máy khách SSH

Các máy chủ mà tôi có có thông tin sau. Bạn sẽ có một ip máy chủ khác

   server_a (192.168.0.12) 
   server_b (192.168.0.15)

2. Định cấu hình SERVER_A

sudo nano /etc/my.cnf

Và dưới [mysqld] phần bạn phải thêm thông tin sau.

log-bin
server_id=1
replicate-do-db=replicate
bind-address=192.168.0.12

Tiếp theo, khởi động lại máy chủ sql của chúng tôi.

systemctl restart mariadb

Đăng nhập vào máy chủ MariaDB với tư cách người dùng gốc và tạo người dùng chính với các khoản trợ cấp cần thiết. Xin lưu ý rằng bạn phải cung cấp các thông tin chi tiết sau cho tên_người_dùng_tên & mật_mục_tạo_cách .

CREATE USER ‘$master_username’@’%’ IDENTIFIED BY ‘$master_password’;
GRANT REPLICATION SLAVE ON *.* TO ‘$master_username’@’%’;
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
Lệnh ‘HIỂN THỊ TRẠNG THÁI MASTER’ sẽ trả về cho bạn nhật ký nhị phân hiện tại, đây là vị trí chính xác cho biết vị trí chính khác sẽ bắt đầu sao chép từ đó.

+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB|
+——————+———-+————–+——————+
| mariadb-bin.000001 | 626 | | |
+——————+———-+————–+——————+
1 row in set (0.00 sec)
Hãy ghi lại vị trí và hồ sơ . Bạn sẽ cần thông tin này sau này.

3. Định cấu hình SERVER_B

Đảm bảo sao chép cùng một cơ sở dữ liệu mẫu từ server_a sang máy chủ này trước khi tiếp tục sao chép.

sudo nano /etc/my.cnf

Và dưới [mysqld] phần bạn phải thêm thông tin sau.

log-bin
server_id=2
replicate-do-db=replicate
bind-address=192.168.0.15

Tiếp theo, khởi động lại máy chủ sql của chúng tôi.

systemctl restart mariadb

Đăng nhập vào máy chủ MariaDB với tư cách người dùng gốc và tạo người dùng chính với các khoản trợ cấp cần thiết. Xin lưu ý rằng bạn phải cung cấp các thông tin chi tiết sau cho tên_người_dùng_tên & mật_mục_tạo_cách .

CREATE USER '$master_username'@'%' IDENTIFIED BY '$master_password';
GRANT REPLICATION SLAVE ON *.* TO '$master_username'@'%';
FLUSH PRIVILEGES;

Bước nest bao gồm việc lấy thông tin chúng ta có từ server_a và đưa những thông tin này vào máy chủ này. sau đây nên được đánh máy.

SLAVE STOP;
CHANGE MASTER TO MASTER_HOST = '192.168.0.12', MASTER_USER = '$master_username', MASTER_PASSWORD = '$master_password', MASTER_LOG_FILE = 'mariadb-bin.000001', MASTER_LOG_POS = 626;
SLAVE START;

Điều cuối cùng chúng ta nên làm trên server_b để hoàn tất quá trình nhân bản là lấy thông tin trên tệp nhật ký chính và vị trí để chúng ta có thể nhập vào server_a.

SHOW MASTER STATUS;

Lệnh ‘HIỂN THỊ TRẠNG THÁI MASTER’ sẽ trả về cho bạn nhật ký nhị phân hiện tại, đây là vị trí chính xác cho biết vị trí chính khác sẽ bắt đầu sao chép từ đó.

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB|
+------------------+----------+--------------+------------------+
| mariadb-bin.000002 |      635 |            |                 |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

Hãy ghi lại vị trí và hồ sơ . Bạn sẽ cần thông tin này ở bước cuối cùng.

4. Hoàn thành nhân rộng trên SERVER_A

Chúng ta sẽ cần hoàn tất quá trình nhân bản cho server_a, vì vậy chúng ta phải đăng nhập vào máy chủ mariadb và nhập thông tin chúng ta vừa nhận được từ server_b.

SLAVE STOP;
CHANGE MASTER TO MASTER_HOST = '192.168.0.15', MASTER_USER = '$master_username', MASTER_PASSWORD = '$master_password', MASTER_LOG_FILE = 'mariadb-bin.000002', MASTER_LOG_POS = 635;
SLAVE START;

5. Kiểm tra bản sao MASTER-TO-MASTER

Bây giờ tất cả cấu hình đã hoàn tất, chúng tôi sẽ cần kiểm tra xem thiết lập của chúng tôi có hoạt động hay không. Trong khi bên trong server_a, hãy đăng nhập vào máy chủ MariaDB và tạo một bảng mới trong replicate.db.

CREATE TABLE replicate.sample (`name` varchar(18));

Đăng nhập vào server_b, bạn sẽ có thể xem bảng ‘mẫu’ mới trên cơ sở dữ liệu bản sao.

SHOW TABLES IN replicate;

Bạn sẽ thấy thông tin sau:

+---------------------+
| Tables_in_replicate |
+---------------------+
| sample              |
+---------------------+
1 row in set (0.00 sec)

Để kiểm tra xem bản sao có hoạt động từ server_b đến server_a hay không, hãy thực hiện các lệnh sql tương tự và kiểm tra xem bảng có tồn tại trong máy chủ khác hay không.

Leave a Reply