Blog

Cấu Hình Master-Slave Replication MySQL Trên Linux Chi Tiết

    MySQL Master-Slave Replication là một kỹ thuật rất quan trọng trong việc tối ưu hóa hệ thống cơ sở dữ liệu MySQL. Nó giúp tăng tính sẵn sàng (availability), khả năng mở rộng (scalability) và bảo mật (security) cho hệ thống. Cấu hình Master-Slave Replication MySQL cho phép bạn sao chép dữ liệu từ một máy chủ (Master) đến một hoặc nhiều máy chủ khác (Slave). Điều này rất hữu ích trong các tình huống cần phân phối tải, sao lưu dữ liệu hoặc khôi phục sau thảm họa.

    Trong bài viết này, Gdata sẽ hướng dẫn bạn thực hiện cấu hình Master-Slave Replication cho MySQL trên hệ điều hành Linux. Cùng tìm hiểu bài viết ngay thôi nào!

    Hướng dẫn cấu hình Master-Slave Replication

    Giới thiệu về Master-Slave Replication

    Trong MySQL, Master-Slave Replication là mô hình sao chép dữ liệu theo cơ chế đồng bộ một chiều. Cụ thể, một máy chủ MySQL sẽ hoạt động như Master và các máy chủ MySQL khác sẽ là Slave. Mọi thay đổi dữ liệu trên Master sẽ tự động được sao chép đến Slave. Mô hình này giúp tăng cường khả năng chịu tải và bảo mật cho hệ thống.

    – Master: Chứa cơ sở dữ liệu chính và xử lý mọi truy vấn ghi (INSERT, UPDATE, DELETE).

    – Slave: Sao chép và lưu trữ bản sao dữ liệu từ Master, xử lý các truy vấn đọc (SELECT).

    Yêu cầu trước khi cấu hình Master-Slave Replication

    Trước khi bắt đầu cấu hình Master-Slave Replication, bạn cần chuẩn bị một số điều kiện sau:

    • Hai máy chủ MySQL hoạt động trên hệ điều hành Linux.
    • Cả hai máy chủ đều có địa chỉ IP cố định.
    • Quản trị viên có quyền truy cập root hoặc quyền quản lý MySQL trên cả Master và Slave.
    • Phải đảm bảo rằng các cổng cần thiết giữa Master và Slave được mở (thường là cổng 3306 cho MySQL).

    Cài đặt MySQL trước khi cấu hình Master-Slave Replication

    Trước tiên, bạn cần cài đặt MySQL trên cả Master và Slave. Nếu bạn chưa cài MySQL, bạn có thể thực hiện theo các bước sau:

    Bước 1: Cài đặt MySQL trên máy chủ Master

    1. Cập nhật hệ thống:

    sudo apt update

    2. Cài đặt MySQL Server:

    sudo apt install mysql-server

    3. Khởi động dịch vụ MySQL:

    sudo systemctl start mysql

    4. Kiểm tra trạng thái MySQL:

    sudo systemctl status mysql

    5. Đảm bảo MySQL tự động khởi động khi reboot:

    sudo systemctl enable mysql

    Bước 2: Cài đặt MySQL trên máy chủ Slave

    Lặp lại các bước trên để cài đặt MySQL trên máy chủ Slave.

    Bước 3: Cấu hình máy chủ Master

    1. Sửa file cấu hình MySQL

    Mở file cấu hình my.cnf để cấu hình Master.

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

    2. Thêm hoặc sửa các dòng cấu hình sau:

    Kích hoạt binary logging (logs ghi lại tất cả các thay đổi dữ liệu):

    log_bin = /var/log/mysql/mysql-bin.log
    server_id = 1
    bind-address = 0.0.0.0
    binlog_do_db = <Tên cơ sở dữ liệu cần sao chép>
    Trong đó: 
      • log_bin: Bật chế độ ghi log vào file binary.
      • server_id: Mã định danh duy nhất của máy chủ, phải khác biệt giữa Master và Slave.
      • bind-address: Chỉ định MySQL lắng nghe trên mọi địa chỉ IP.
      • binlog_do_db: Chỉ sao chép cơ sở dữ liệu này từ Master.

    3. Khởi động lại MySQL

    Sau khi sửa file cấu hình, khởi động lại MySQL để áp dụng các thay đổi:

    sudo systemctl restart mysql

    4. Tạo tài khoản replication

    Để Slave có thể sao chép dữ liệu từ Master, bạn cần tạo tài khoản replication.

      • Đăng nhập vào MySQL:
        sudo mysql -u root -p
      • Tạo tài khoản replication:
        CREATE USER 'replication_user'@'%' IDENTIFIED BY 'your_password';
        GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
        FLUSH PRIVILEGES;
      • Kiểm tra trạng thái của Master:
        SHOW MASTER STATUS;

        Lưu lại giá trị của FilePosition, bạn sẽ cần chúng khi cấu hình Slave.

    Bước 4: Cấu hình máy chủ Slave

    1. Sửa file cấu hình MySQL trên Slave

    Mở file cấu hình my.cnf và thay đổi một số tham số.

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

    2. Cập nhật các dòng cấu hình sau:

    Thêm dòng sau để chỉ định server_id cho Slave:

    server_id = 2
    bind-address = 0.0.0.0

    Lưu ý: server_id của Slave phải khác Master.

    3. Khởi động lại MySQL trên Slave:

    sudo systemctl restart mysql

    Bước 5: Thiết lập kết nối tới Master

    1. Đăng nhập vào MySQL trên Slave:

    sudo mysql -u root -p

    2. Thiết lập Slave sao chép từ Master:

    CHANGE MASTER TO
    MASTER_HOST = 'IP_Master',
    MASTER_USER = 'replication_user',
    MASTER_PASSWORD = 'your_password',
    MASTER_LOG_FILE = 'mysql-bin.000001',
    MASTER_LOG_POS = 154;

    Thay IP_Master, your_password, mysql-bin.000001, và 154 với các giá trị bạn đã lưu từ bước trước khi cấu hình Master.

    Bước 6: Khởi động quá trình sao chép

    1. Khởi động quá sao chép bằng lệnh:

    START SLAVE;

    2. Kiểm tra trạng thái Slave:

    SHOW SLAVE STATUS\G

    Nếu tất cả các trường Slave_IO_RunningSlave_SQL_Running đều có giá trị Yes, việc sao chép đã thành công.

    Bước 7: Kiểm tra hoạt động Replication

    1. Kiểm tra dữ liệu trên Slave

    Bạn có thể kiểm tra xem dữ liệu có được sao chép từ Master sang Slave hay không bằng cách truy vấn dữ liệu trên Slave.

    SELECT * FROM <Tên cơ sở dữ liệu>;

    2. Kiểm tra trạng thái sao chép

    SHOW SLAVE STATUS\G

    Lưu ý: Các giá trị Slave_IO_RunningSlave_SQL_Running phải là Yes để đảm bảo rằng quá trình replication đang hoạt động bình thường.

    Lợi ích khi cấu hình Master-Slave Replication

    Vậy tại sao nên thực hiện cấu hình Master-Slave Replication? Dưới đây là những lợi ích tiêu biểu:

    • Tăng cường khả năng chịu tải: Việc phân chia các truy vấn đọc giữa các Slave giúp giảm tải cho Master.
    • Sao lưu và khôi phục dễ dàng hơn: Slave có thể hoạt động như một bản sao lưu dữ liệu, giảm thiểu rủi ro mất dữ liệu.
    • Tính sẵn sàng cao: Nếu Master gặp sự cố, bạn có thể chuyển đổi một Slave thành Master để tiếp tục cung cấp dịch vụ.

    Lưu ý khi cấu hình Master-Slave Replication

    Bạn cũng cần chú ỹ những việc sau khi thực hiện cấu hình Master-Slave Replication:

    • Cài đặt mật khẩu: Cần sử dụng mật khẩu mạnh cho tài khoản replication.
    • Băng thông mạng: Việc sao chép dữ liệu giữa các máy chủ sẽ yêu cầu một kết nối mạng ổn định và đủ băng thông.
    • Giám sát quá trình replication: Theo dõi trạng thái sao chép thường xuyên để phát hiện các lỗi kịp thời.

    Kết luận

    Cấu hình Master-Slave Replication MySQL trên Linux không phải là một quá trình phức tạp. Tuy nhiên, bạn cần sự cẩn thận và chính xác trong từng bước cấu hình. Bằng cách thực hiện replication, bạn không chỉ tối ưu hóa hiệu suất và khả năng mở rộng cho hệ thống MySQL; mà bạn còn tạo ra một chiến lược sao lưu và khôi phục dữ liệu hiệu quả. Hãy chắc chắn rằng bạn luôn theo dõi trạng thái của hệ thống để đảm bảo rằng quá trình replication đang hoạt động trơn tru.

    Thông tin liên hệ Gdata

    Nếu bạn còn có bất kỳ thắc mắc nào khi cấu hình Master-Slave Replication. Đừng ngần ngại mà hãy liên hệ ngay với đội ngũ nhân sự của Gdata để nhận được hỗ trợ nhanh chóng và chính xác nhất!

    Hotline: 0904 299 668

    Tổng đài: 1800 4814 – Phím 2

    Email: [email protected]

    Website: www.gdata.com.vn

    Facebook: https://www.facebook.com/gdata.com.vn 

    CÔNG TY CP DỮ LIỆU TOÀN CẦU

    Địa chỉ: Tầng 03 Tòa Lạc Hồng/ 27 Lê Văn Lương, Thanh Xuân, Hà Nội

    ĐĂNG KÝ 0904 299 668 1800 4814