Phần 1: Giới thiệu qua về MySQL Replication (sao chép).

MySQL Replication, hay còn gọi là sao chép MySQL, là một tính năng của hệ quản trị cơ sở dữ liệu MySQL cho phép dữ liệu từ một máy chủ MySQL (gọi là máy chủ Master) được sao chép đến một hoặc nhiều máy chủ khác (gọi là máy chủ Slave). Mục tiêu của quá trình này thường là để cải thiện hiệu suất, có sẵn sàng và cung cấp dự phòng dữ liệu.

Cách hoạt động của MySQL Replication:

1. Master Server: Máy chủ chứa dữ liệu gốc mà bạn muốn sao chép. Khi có bất kỳ thay đổi dữ liệu nào trên Master (thêm, sửa, xóa), các sự kiện này được ghi vào các bản ghi nhật ký (binary logs).

2. Slave Server: Máy chủ nhận bản sao của dữ liệu từ Master. Các sự kiện được đọc từ binary logs của Master và được áp dụng vào cơ sở dữ liệu của Slave.

3. Sự Đồng Bộ Hóa (Replication): Dữ liệu trên Slave được đồng bộ hóa với dữ liệu trên Master. Các thay đổi dữ liệu trên Master được tái tạo trên Slave, giữ cho cả hai máy chủ đồng bộ.

Lợi ích của MySQL Replication bao gồm:

– Hiệu suất: Các Slave có thể giúp giảm tải cho Master bằng cách chia sẻ công việc đọc và ghi.
– Dự phòng dữ liệu: Nếu Master gặp sự cố, bạn có thể chuyển giao ngay lập tức sang một Slave để duy trì sự liên tục của hệ thống.
– Định kỳ sao lưu: Bạn có thể sử dụng một Slave để thực hiện sao lưu dữ liệu mà không gây ảnh hưởng đến hoạt động của Master.

Tính năng này cực kỳ hữu ích trong môi trường sản xuất và là một phần quan trọng của chiến lược quản lý cơ sở dữ liệu.

Phần 2: Setup MySQL Replication (sao chép) dạng Master-Slave.

Yêu cầu: Cùng phiên bản MySQLMình sẽ Lab bằng 2 máy chủ như sau:Master: 103.159.X.ASlave: 103.124.X.BBước 1: Trên Master  tạo 1 user cho việc replication trên master.Dùng lệnh: mysql -u root -p đăng nhập vào MySQL tạo 1 user như sau.CREATE USER 'replica'@'103.124.X.B' IDENTIFIED BY 'vanlam304';GRANT REPLICATION SLAVE ON *.* TO 'replica'@'103.124.A.B';Có nghĩa là:
  1. CREATE USER ‘replica’@’103.124.X.B’ IDENTIFIED BY ‘vanlam304’;
    • Tạo một người dùng mới có tên là ‘replica’ và có địa chỉ IP là ‘103.124.X,B’.
    • Người dùng này được xác định bằng mật khẩu ‘vanlam304’.
  2. GRANT REPLICATION SLAVE ON . TO ‘replica’@’103.124.X.B’;
    • Cấp quyền REPLICATION SLAVE cho người dùng ‘replica’ khi kết nối từ địa chỉ IP ‘103.124.X.B’.
    • Quyền này cho phép người dùng đó thực hiện các thao tác sao chép dữ liệu từ máy chủ Master khi thiết lập replication.
Bước 2: Thêm vào file my.cnf 2 dòng sau:vi /etc/my.cnfbind-address     = 103.159.X.A (IP của master)server-id=1log-bin=mysql-binBước 3: Khởi động lại vào MySSQL check status master thì hiện thông số sau, lưu lại.            File: mysql-bin.000001        Position: 382    Binlog_Do_DB:Binlog_Ignore_DB:VD: Bước 4: Ở Slave.Cấu hình máy chủ Slave vi /etc/my.cnfThêm vào:bind-address     = 103.124.X.B( IP máy slave)server-id=(số mấy cũng được khác id của master là được)log_bin          = mysql-binVí dụ: bind-address     = 103.124.1.1server-id        = 2log_bin          = mysql-binBước 5: Khởi động lại MariaDB,Truy cập: mysql -u root -pTắt Slave trước: mysql> STOP SLAVE;Sau đó, setup change slave chạy như sau:CHANGE MASTER TOMASTER_HOST='103.159.X.A',MASTER_USER='replica',MASTER_PASSWORD='vanlam304',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=382;Khởi động slave và kiểm tra trạng thái kết nối Master-Slavestart slave;show slave status\G;Có 2 chữ Yes màu xanh là cool.Slave_IO_Running: YesSlave_SQL_Running: YesCùng kiểm chứng kết quả nhé.Thêm 1 database nào đó trên masterThì Slave sẽ theo log đó mà sao tự động chép tương tự thành: 

Rất nhanh thôi mình sẽ cập nhật một bài viết mới về Master – Master để bù đắp những phần mà Master – Slave chưa thể làm được.
Chúc các bạn may mắn!!!!!!


Tuấn Nguyễn

591 Blog posts

Comments
Popular Posts