[MariaDB Replication] Hướng dẫn cấu hình MariaDB Replication

30/12/2020

MySQL Replication là một kỹ thuật trong MySQL cho phép dữ liệu từ một Server CSDL MySQL (master) được nhân bản đến một hoặc nhiều Server MySQL khác (slave). Ở bài này mình sẽ hướng dẫn các bạn cấu hình mysql replication với 1 master và 2 slave. Điều kiện tiên quyết là máy của bạn đã được cài đặt MariaDB. Nếu máy của bạn chưa cài đặt MariaDB thì có thể xem chi tiết cách cài đặt tại đây.

Mục lục

  1. Mô hình chuẩn bị
  2. IP planning
  3. Cấu hình trên master
  4. Cấu hình trên slave 1
  5. Cấu hình thêm slave vào hệ thống
  6. Kiểm tra.

1. Mô hình chuẩn bị.

2. IP Planning.

3. Cấu hình trên Master.

  • Cấu hình firewall, cho phép lắng nghe port 3306
firewall-cmd --add-port=3306/tcp --zone=public --permanent
  • Reload xác nhận cấu hình.
firewall-cmd --reload
  • Chỉnh sửa file /etc/my.cnf
vi /etc/my.cnf
  • Trong phần [mariadb] thêm các dòng sau:
 [mariadb]   server-id=1   log-bin=master   binlog-format=row   binlog-do-db=replica_db
  • Trong đó :
    • server_id là tùy chọn được sử dụng trong replication cho phép master server và slave server có thể nhận dạng lẫn nhau. Server_id Với mỗi server là khác nhau, nhận giá trị từ 1 đến 4294967295(mariadb >=10.2.2) và 0 đến 4294967295(mariadb =<10.2.1)
    • log-bin hay log-basename là tên cơ sở nhật ký nhị phân để tạo tên tệp nhật ký nhị phân. binlog-format là định dạng dữ liệu được lưu trong file bin log.
    • binlog-do-db là tùy chọn để nhận biết cơ sở dữ liệu nào sẽ được replication. Nếu muốn replication nhiều CSDL, bạn phải viết lại tùy chọn binlog-do-db nhiều lần. Hiện tại không có option cho phép chọn toàn bộ CSDL để replica mà bạn phải ghi tất cả CSDL muốn replica ra theo option này.
  • Restart lại dịch vụ mariadb để nhận cấu hình mới.
systemctl restart mariadb
  • Sử dụng root user đăng nhập vào MariaDB.
mysql -u root -p
  • Tạo CSDL có tên là replica_db.
create database replica_db;
  • Tạo Slave user, password và gán quyền cho user đó. Ví dụ sử dụng username là slave_user và password là abc@123.
> create user 'slave_user'@'%' identified by 'abc@123'; > stop slave; Query OK, 0 rows affected, 1 warning (0.062 sec) > GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'abc@123'; Query OK, 0 rows affected (0.061 sec) 
  • Xác nhận lại các thay đổi với câu lệnh:
FLUSH PRIVILEGES;
  • Sử dụng câu lệnh dưới đây để chắc chắn rằng không có bất cứ điều gì được ghi vào master database trong quá trình replication dữ liệu. Ghi nhớ filename and position của binary log để có thể thực hiện cấu hình trên slave.
FLUSH TABLES WITH READ LOCK;
  • Tiến hành backup CSDL trên master server và chuyển nó đến slave server.
mysqldump --all-databases --user=root --password --master-data > masterdatabase.sql Enter password: ls masterdatabase.sql 
  • Đăng nhập vào MariaDB với root user và thực hiện unlock table bằng lệnh:
UNLOCK TABLES;
  • Copy masterdatabase.sql file tới Slave server 1.
scp masterdatabase.sql root@10.10.22.101:/root/masterdatabase.sql ls masterdatabase.sql
  • Sử dụng câu lệnh dưới để kiểm tra trạng thái của master.
show master status;   +--------------------+----------+--------------+------------------+   | File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |   +--------------------+----------+--------------+------------------+   | mariadb-bin.000001 |     939 | replica_db   |                  |   +--------------------+----------+--------------+------------------+   1 row in set (0.058 sec)

4. Cấu hình trên Slave1

  • Cấu hình firewall, cho phép lắng nghe port 3306.
firewall-cmd --add-port=3306/tcp --zone=public --permanent
  • Reload xác nhận lại cấu hình.
firewall-cmd --reload
  • Chỉnh sửa /etc/my.cnf .
vi /etc/my.cnf.d/mariadb-server.cnf

Sau đó thêm vào các dòng sau:

[mariadb] server-id = 2 replicate-do-db=replica_db
  • Import CSDL master. Enter password của root user trong Mariadb.
mysql -u root -p < /root/masterdatabase.sql    Enter password:
  • Restart MariaDB service để tiếp nhận thay đổi.
systemctl restart mariadb
  • Sử dụng root user đăng nhập vào MariaDB Server.
mysql -u root -p
  • Hướng dẫn Slave tìm file Master Log file và Start Slave.
> STOP SLAVE; > CHANGE MASTER TO MASTER_HOST='10.10.22.100', MASTER_USER='slave_user', MASTER_PASSWORD='abc@123', MASTER_LOG_FILE='master.000001', MASTER_LOG_POS=939; Query OK, 0 rows affected (0.051 sec) > START SLAVE; Query OK, 0 rows affected (0.044 sec)
  • Kiểm tra trạng thái của Slave, sử dụng lệnh:
show slave statusG;

5. Cấu hình thêm Slave vào hệ thống.

5.1 Cấu hình trên Master.

  • Bật tính năng read only để không ghi thêm dữ liệu mới vào CSDL và tắt replication:
stop slave; flush table with read lock;  
  • Tiến hành backup CSDL trên master server và chuyển nó đến slave server.
mysqldump --all-databases --user=root --password --master-data > masterdatabase.sql Enter password: ls anaconda-ks.cfg  masterdatabase.sql  
  • Đăng nhập vào MariaDB với root user và thực hiện unlock table bằng lệnh sau.
> UNLOCK TABLES;
  • Copy masterdatabase.sql file tới Slave server.
scp masterdatabase.sql root@10.10.22.102:/root/masterdatabase.sql

5.2 Cấu hình trên Slave 2.

Các bạn thực hiện cấu hình tương tự như ở slave 1.

Lưu ý : phần chỉnh sửa trong file /etc/my.cnf ở mục server-id bạn phải đặt id khác với id của master và slave 1.

6. Kiểm tra.

Sử dụng tài khoản root đăng nhập vào mysql. Sau đó tạo và insert thông tin vào các bảng trên master. Đăng nhập vào các slave để kiểm tra thông tin đã được đồng bộ từ master qua slave hay chưa.

  • Ở bài này mình sẽ tạo bảng SV và insert các thông tin vào bảng trên máy master như hình dưới đây :
  • Sau đó sử dụng tài khoản root đăng nhập vào mariadb để kiểm tra thông tin từ máy master đã được đồng bộ qua các máy slave chưa.

Sử dụng câu lệnh show tables để hiển thị các bảng.

Như vậy là các thông tin ở máy Master đã được đồng bộ qua máy Slave.

Chúc các bạn thành công.

ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

How to Install and Configure iSCSI Storage Server on CentOS 7

Internet Small Computer Systems Interface or iSCSI in short is used to share block devices on the network. It provides...
28/12/2020

Hướng dẫn sử dụng Wireshark cơ bản

Wireshark là một chương trình phần mềm phân tích giao thức mạng nguồn mở do Gerald Combs khởi xướng...
30/12/2020

Jitsi [Part 2] – Hướng dẫn cài đặt Jitsi Meet trên Ubuntu 18.04 LTS

Jitsi hiện đang là một trong số những công cụ hội nghị truyền hình mã nguồn mở được sử...
30/12/2020