Cài đặt MySQL Replication Dễ Dàng Cho Người Mới Bắt Đầu

16/04/2026 P T P Chung 7 phút đọc 0 bình luận

Giới thiệu về MySQL Replication

MySQL Replication là tính năng cho phép dữ liệu từ một database server (gọi là master) được sao chép tự động sang một hoặc nhiều database server khác (gọi là slave). Điều này rất hữu ích trong việc phân phối tải, tăng tính sẵn sàng, hoặc tạo bản backup thời gian thực.

Đối với người mới bắt đầu, quá trình thiết lập có thể trông phức tạp, nhưng nếu làm theo từng bước một, nó sẽ trở nên rõ ràng và dễ thực hiện hơn. Bài viết này sẽ hướng dẫn chi tiết cách thiết lập một hệ thống replication đơn giản giữa hai server MySQL.


Chuẩn bị trước khi bắt đầu

Yêu cầu phần cứng và phần mềm

- Hai server chạy hệ điều hành Linux (Ubuntu/Debian hoặc CentOS). - MySQL hoặc MariaDB đã được cài đặt trên cả hai server. - Cả hai server cần có thể kết nối mạng với nhau. - Đảm bảo MySQL service đang chạy và có thể đăng nhập bằng tài khoản root.

Lưu ý về version

Nên sử dụng cùng một phiên bản MySQL trên cả master và slave để tránh lỗi không tương thích. Nếu sử dụng MariaDB, version cũng nên tương đồng.


Bước 1: Cấu hình server Master

Mở file cấu hình MySQL

Trên server master, mở file my.cnf (hoặc mysqld.cnf trên Ubuntu):

sudo nano /etc/mysql/my.cnf

Thêm các thiết lập replication

Tìm section [mysqld] và thêm các dòng sau:

[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=your_database_name

Trong đó: - server-id phải là một số duy nhất trong hệ thống replication. - log-bin bật binary log, cần thiết cho replication. - binlog-do-db chỉ định database nào sẽ được replicate (có thể bỏ qua nếu muốn replicate tất cả).

Lưu file và khởi động lại MySQL:

sudo systemctl restart mysql

Tạo tài khoản replication

Đăng nhập vào MySQL và tạo user dành riêng cho replication:

CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON . TO 'repl_user'@'%';
FLUSH PRIVILEGES;

Lấy vị trí binary log hiện tại:

SHOW MASTER STATUS;

Ghi lại giá trị FilePosition, chúng sẽ được dùng ở bước tiếp theo.


Bước 2: Cấu hình server Slave

Mở file cấu hình MySQL

Trên server slave, mở file my.cnf:

sudo nano /etc/mysql/my.cnf

Thêm các thiết lập replication

Tương tự như master, thêm vào section [mysqld]:

[mysqld]
server-id=2
relay-log=relay-bin

Lưu ý: server-id phải khác với master.

Quảng cáo

300x250 In-Content Advertisement

Khởi động lại MySQL:

sudo systemctl restart mysql

Kết nối slave với master

Đăng nhập vào MySQL trên slave và chạy lệnh:

CHANGE MASTER TO
    MASTER_HOST='master_ip_address',
    MASTER_USER='repl_user',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=107;

Thay thế các giá trị tương ứng với kết quả SHOW MASTER STATUS đã lưu ở bước trước.

Bắt đầu replication:

START SLAVE;

Kiểm tra trạng thái:

SHOW SLAVE STATUSG;

Nếu Slave_IO_RunningSlave_SQL_Running đều hiển thị Yes, replication đã hoạt động.


Bước 3: Kiểm tra và xác nhận

Tạo dữ liệu test trên master

Trên master, tạo một bảng test và insert dữ liệu:

CREATE DATABASE test_repl;
USE test_repl;
CREATE TABLE users (id INT, name VARCHAR(50));
INSERT INTO users VALUES (1, 'Alice');

Kiểm tra trên slave

Truy cập vào slave và chạy:

USE test_repl;
SELECT * FROM users;

Nếu dữ liệu xuất hiện giống hệt, replication đã hoạt động thành công.


Kết luận

Việc thiết lập MySQL Replication không quá phức tạp nếu làm đúng trình tự và cẩn thận trong từng bước. Replication giúp tăng tính dự phòng, cải thiện hiệu năng khi có nhiều kết nối đọc, và hỗ trợ phục hồi dữ liệu nhanh chóng.

Để hệ thống ổn định hơn, có thể cân nhắc thêm các biện pháp như sao lưu định kỳ, giám sát trạng thái replication, và xử lý kịch bản fail-over khi master gặp sự cố. Tuy nhiên, với cấu hình cơ bản này, bạn đã có nền tảng vững chắc để mở rộng sau này.

Quảng cáo

728x90 Bottom Advertisement

Thay thế bằng mã Google AdSense

Chia sẻ bài viết

Facebook Twitter

Bình luận

Chia sẻ ý kiến của bạn về bài viết này

Viết bình luận

Bình luận của bạn sẽ được kiểm duyệt trước khi hiển thị

Chưa có bình luận nào

Hãy là người đầu tiên bình luận về bài viết này!