Hướng dẫn mariadb to mysql replication - sao chép mariadb sang mysql

Hướng dẫn mariadb to mysql replication - sao chép mariadb sang mysql

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ị.

Hướng dẫn mariadb to mysql replication - sao chép mariadb sang mysql

2. IP Planning.

Hướng dẫn mariadb to mysql replication - sao chép mariadb sang mysql

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 
    vi /etc/my.cnf
    7
vi /etc/my.cnf
  • Trong phần 
    vi /etc/my.cnf
    8 thêm các dòng sau:
 [mariadb]
  server-id=1
  log-bin=master
  binlog-format=row
  binlog-do-db=replica_db
  • Trong đó :
    • vi /etc/my.cnf
      9 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 =
    •  [mariadb]
        server-id=1
        log-bin=master
        binlog-format=row
        binlog-do-db=replica_db
      0 hay 
       [mariadb]
        server-id=1
        log-bin=master
        binlog-format=row
        binlog-do-db=replica_db
      1 là tên cơ sở nhật ký nhị phân để tạo tên tệp nhật ký nhị phân. 
       [mariadb]
        server-id=1
        log-bin=master
        binlog-format=row
        binlog-do-db=replica_db
      2 là định dạng dữ liệu được lưu trong file bin log.
    •  [mariadb]
        server-id=1
        log-bin=master
        binlog-format=row
        binlog-do-db=replica_db
      3 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à 
     [mariadb]
      server-id=1
      log-bin=master
      binlog-format=row
      binlog-do-db=replica_db
    4.
create database replica_db;
  • Tạo Slave user, password và gán quyền cho user đó. Ví dụ sử dụng username là 
     [mariadb]
      server-id=1
      log-bin=master
      binlog-format=row
      binlog-do-db=replica_db
    5 và password là 
     [mariadb]
      server-id=1
      log-bin=master
      binlog-format=row
      binlog-do-db=replica_db
    6.
> 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ớ 
     [mariadb]
      server-id=1
      log-bin=master
      binlog-format=row
      binlog-do-db=replica_db
    7 and 
     [mariadb]
      server-id=1
      log-bin=master
      binlog-format=row
      binlog-do-db=replica_db
    8 của 
     [mariadb]
      server-id=1
      log-bin=master
      binlog-format=row
      binlog-do-db=replica_db
    9 để có thể thực hiện cấu hình trên slave.
FLUSH TABLES WITH READ LOCK;
  • Tiến hành 
    systemctl restart mariadb
    0 CSDL trên master server và chuyển nó đến slave server.
firewall-cmd --reload
0
  • Đăng nhập vào MariaDB với root user và thực hiện unlock table bằng lệnh:
firewall-cmd --reload
1
  • Copy 
    systemctl restart mariadb
    1 file tới Slave server 1.
firewall-cmd --reload
2
  • Sử dụng câu lệnh dưới để kiểm tra trạng thái của master.
firewall-cmd --reload
3

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 .
firewall-cmd --reload
6

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

firewall-cmd --reload
7
  • Import CSDL master. Enter password của root user trong Mariadb.
firewall-cmd --reload
8
  • 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.
vi /etc/my.cnf
1
  • Kiểm tra trạng thái của Slave, sử dụng lệnh:
vi /etc/my.cnf
2Slave status.
Hướng dẫn mariadb to mysql replication - sao chép mariadb sang mysql
Slave status.

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:
vi /etc/my.cnf
3
  • Tiến hành backup CSDL trên master server và chuyển nó đến slave server.
vi /etc/my.cnf
4
  • Đăng nhập vào MariaDB với root user và thực hiện unlock table bằng lệnh sau.
vi /etc/my.cnf
5
  • Copy masterdatabase.sql file tới Slave server.
vi /etc/my.cnf
6

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

systemctl restart mariadb
2 ở mục server-id bạn phải đặt id khác với id của master và slave 1. phần chỉnh sửa trong file
systemctl restart mariadb
2 ở 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 :
Hướng dẫn mariadb to mysql replication - sao chép mariadb sang mysql
Create table SV . Insert thông tin vào bảng SV. In ra thông tin của bảng SV vừa tạo.
Hướng dẫn mariadb to mysql replication - sao chép mariadb sang mysql
Insert thông tin vào bảng SV.
Hướng dẫn mariadb to mysql replication - sao chép mariadb sang mysql
In ra thông tin của bảng SV vừa tạo.
  • 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

systemctl restart mariadb
3 để hiển thị các bảng.

Hướng dẫn mariadb to mysql replication - sao chép mariadb sang mysql
Bảng SV được đồng bộ từ máy master.Thông tin của bảng SV.
Hướng dẫn mariadb to mysql replication - sao chép mariadb sang mysql
Thông tin của bảng SV.

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.