Giới thiệu: Kiến trúc MySQL có sẵn cao là yếu tố then chốt để đảm bảo tính liên tục của dịch vụ cơ sở dữ liệu, đóng vai trò quan trọng đối với sự liên tục kinh doanh và trải nghiệm người dùng. Tài liệu này cung cấp một loạt các phương pháp thiết lập và quản lý kiến trúc MySQL có sẵn cao, bao gồm sao chép chủ-từ, sao chép đa chủ, công nghệ cụm, cụm Galera, chuyển đổi lỗi, tách đọc viết, InnoDB Cluster, chiến lược sao lưu và khôi phục, tối ưu hóa hiệu suất, biện pháp bảo mật, giám sát và cảnh báo, cũng như bảo trì và cập nhật cơ sở dữ liệu.
-
Tổng quan về MySQL có sẵn cao Trong xã hội thông tin hiện đại, dữ liệu giữ vai trò vô cùng quan trọng. Cơ sở dữ liệu, làm thành phần lõi của hệ thống thông tin, cần phải có tính sẵn sàng cao để đảm bảo hoạt động kinh doanh không bị gián đoạn. MySQL, một trong những cơ sở dữ liệu mã nguồn mở được sử dụng rộng rãi nhất thế giới, có nhiều cách thực hiện tính sẵn sàng cao. Chương này sẽ trình bày khái niệm MySQL có sẵn cao, tầm quan trọng của nó trong các trường hợp kinh doanh khác nhau và các hướng tiếp cận cơ bản để xây dựng kiến trúc có sẵn cao. Chúng ta sẽ đi sâu vào các kỹ thuật khác nhau để đạt được điều này, bao gồm sao chép chủ-từ, sao chép đa chủ, công nghệ cụm, chuyển đổi lỗi tự động và tách đọc viết.
-
Công nghệ sao chép chủ-từ trong MySQL Trong quản trị cơ sở dữ liệu, độ tin cậy và khả dụng của dữ liệu là rất quan trọng. MySQL cung cấp công nghệ sao chép chủ-từ là một đặc điểm quan trọng để đạt được tính sẵn sàng cao. Chương này sẽ khám phá chi tiết về kiến thức cơ bản, ứng dụng nâng cao và các chiến lược tối ưu hóa cho sao chép chủ-từ trong MySQL.
2.1 Nền tảng sao chép chủ-từ
2.1.1 Nguyên lý hoạt động của sao chép
Sao chép (Replication) trong MySQL là cơ chế phân phối dữ liệu từ một máy chủ MySQL (gọi là "chủ") đến một hoặc nhiều máy chủ MySQL khác (gọi là "từ"). Quá trình này là bất đồng bộ, nghĩa là thay đổi trên máy chủ chính sẽ xuất hiện sau đó trên máy chủ phụ.
Các thành phần cốt lõi trong quá trình sao chép bao gồm:
- Nhật ký nhị phân (Binary Log): Ghi lại tất cả các sự kiện DDL và DML, nhưng không bao gồm các truy vấn SELECT và SHOW.
- Luồng I/O: Trực thuộc máy chủ phụ, dùng để đọc các sự kiện từ nhật ký nhị phân của máy chủ chính.
- Luồng SQL: Trực thuộc máy chủ phụ, dùng để thực thi các sự kiện đã đọc bởi luồng I/O.
Quy trình cơ bản hoạt động như sau:
- Các hoạt động trên máy chủ chính được ghi lại trong nhật ký nhị phân.
- Luồng I/O của máy chủ phụ kết nối đến máy chủ chính và yêu cầu các sự kiện từ vị trí chỉ định trong tập tin nhật ký.
- Máy chủ chính nhận yêu cầu và gửi nhật ký nhị phân qua luồng
binlog dump. - Luồng I/O của máy chủ phụ đọc và lưu trữ các sự kiện vào nhật ký trung gian (Relay Log).
- Luồng SQL của máy chủ phụ đọc nhật ký trung gian và tái tạo các sự kiện trên chính nó.
2.1.2 Bước cấu hình sao chép chủ-từ
Để cấu hình sao chép chủ-từ, cần thực hiện các bước sau trên cả máy chủ chính và máy chủ phụ:
Cấu hình máy chủ chính:
- Chỉnh sửa tập tin cấu hình của máy chủ chính, đảm bảo các tham số sau được thiết lập:
[mysqld]
server-id=1
log_bin=mysql-bin
binlog_do_db=tên_cơ_sở_dữ_liệu_canh_sao_chep
- Tạo tài khoản dành riêng cho sao chép:
CREATE USER 'replica'@'%' IDENTIFIED BY 'matkhau';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
FLUSH PRIVILEGES;
- Xem tên tập tin nhật ký nhị phân và vị trí:
SHOW MASTER STATUS;
- Khởi động lại dịch vụ MySQL của máy chủ chính để áp dụng cấu hình.
Cấu hình máy chủ phụ:
- Chỉnh sửa tập tin cấu hình của máy chủ phụ, thêm nội dung sau:
[mysqld]
server-id=2
relay-log=relay-bin
read-only=1
- Dừng dịch vụ MySQL của máy chủ phụ và đảm bảo nội dung đã được thêm vào tập tin cấu hình.
- Khởi động lại dịch vụ MySQL của máy chủ phụ.
- Kết nối đến máy chủ phụ và cấu hình thông tin máy chủ chính:
CHANGE MASTER TO
MASTER_HOST='dia_chi_ip_chu',
MASTER_USER='replica',
MASTER_PASSWORD='matkhau',
MASTER_LOG_FILE='ten_tap_tin_nhat_ky',
MASTER_LOG_POS=vi_tri_nhat_ky;
- Bắt đầu quá trình sao chép trên máy chủ phụ:
START SLAVE;
- Kiểm tra trạng thái sao chép trên máy chủ phụ:
SHOW SLAVE STATUS\G
- Công nghệ sao chép đa chủ trong MySQL Khi xây dựng các hệ thống cơ sở dữ liệu lớn, mô hình sao chép đơn điểm truyền thống có thể không đáp ứng đủ nhu cầu, vì tải ghi không thể phân tán hiệu quả lên nhiều máy chủ cơ sở dữ liệu. Lúc này, công nghệ sao chép đa chủ trở thành yếu tố then chốt trong thiết kế hệ thống, cho phép nhiều nút chấp nhận hoạt động ghi, giúp tăng cường tính sẵn sàng cao và khả năng mở rộng.
3.1 Nguyên lý và cấu hình sao chép đa chủ
3.1.1 Cơ chế hoạt động của sao chép đa chủ
Trong kiến trúc sao chép đa chủ (hay còn gọi là sao chép đa nguồn), có thể có nhiều nút chủ (masters), mỗi nút chủ đều có thể chấp nhận hoạt động ghi và sao chép thay đổi đến một hoặc nhiều nút phụ (slaves). Lợi thế chính của kiến trúc này là giảm áp lực ghi trên một nút chủ duy nhất và phân tán các hoạt động đọc/ghi thông qua nhiều nút chủ để cân bằng tải.
Công việc cấu hình sao chép đa chủ cơ bản bao gồm:
- Cấu hình từng nút chủ: Đặt server-id duy nhất cho mỗi nút chủ và bật chức năng log_bin.
[mysqld]
server-id=1
log_bin=mysql-bin
- Cấu hình từng nút phụ: Đặt server-id duy nhất cho mỗi nút phụ và chỉ định nút chủ mà nó sẽ sao chép.
CHANGE MASTER TO
MASTER_HOST='ip_chu_1',
MASTER_USER='nguoi_dung_replica',
MASTER_PASSWORD='mat_khau_replica',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
- Bắt đầu quá trình sao chép: Thực thi lệnh START SLAVE trên nút phụ.
START SLAVE;
- Kiểm tra trạng thái sao chép: Sử dụng lệnh SHOW SLAVE STATUS để kiểm tra tình trạng sao chép.
SHOW SLAVE STATUS\G
- Công nghệ cụm MySQL
4.1 Cơ sở của công nghệ cụm
4.1.1 Khái niệm và lợi ích của cụm
Cụm là công nghệ kết nối nhiều máy tính làm việc cùng nhau, cung cấp hiệu năng và khả dụng cao hơn so với một máy chủ đơn lẻ. Trong lĩnh vực cơ sở dữ liệu, cụm MySQL chủ yếu phân phối dữ liệu và tải, thực hiện chuyển đổi lỗi, tách đọc-viết để cải thiện hiệu suất tổng thể và độ tin cậy của hệ thống.
Lợi ích của cụm bao gồm:
- Tính sẵn sàng cao: Khi một nút trong hệ thống gặp sự cố, dịch vụ có thể nhanh chóng chuyển sang các nút bình thường khác.
- Khả năng mở rộng ngang hàng: Thêm nhiều nút máy chủ để nâng cao khả năng xử lý mà không cần dừng hệ thống.
- Phân phối tải: Hiệu quả phân bổ yêu cầu dữ liệu, tránh tải cao ở một điểm duy nhất.
4.1.2 Loại cụm và đặc điểm
MySQL cụm chia thành các loại khác nhau dựa trên ứng dụng và nhu cầu:
- MySQL Replication Cluster: Sử dụng sao chép chủ-từ để tách đọc-viết, cải thiện hiệu suất truy vấn.
- MySQL Cluster (NDB): Giải pháp có sẵn cao từ MySQL, cung cấp sao chép thời gian thực mà không cần lưu trữ chia sẻ.