[LT]Active/Passive MySQL High Availability

diephan

Moderator
1. MySQL Replication

MariaDB replication là phương pháp lưu trữ nhiều bản sao dữ liệu trên nhiều hệ thống, dữ liệu sẽ tự động được sao chép từ cơ sở dữ liệu này (Master) sang cơ sở dữ liệu khác (Slave). Nếu một máy chủ gặp sự cố, các máy khách vẫn có thể truy cập dữ liệu từ cơ sở dữ liệu máy chủ (Slave) khác.

Cách hoạt động:

Trên Master:
Các kết nối từ web app tới Master DB sẽ mở một session_thread khi có nhu cầu ghi dữ liệu, session_thread sẽ ghi các statement SQL vào một file binlog .
Master DB sẽ mở một dump_thread và gửi binlog tới cho I/O_thread mỗi khi I/O_thread từ Slave DB yêu cầu dữ liệu
Trên Slave:
Trên mỗi Slave DB sẽ mở một I/O_Thread kết nối tới Master DB thông qua network, giao thức TCP để yêu cầu binlog.
Sau khi dump_thread gửi binlog tới I/O_thead, I/O_thread sẽ có nhiệm vụ đọc binlog này và ghi vào relaylog.
Đồng thời trên Slave sẽ mở một SQL_thread, SQL_thread có nhiệm vụ đọc các event từ relaylog và apply các event đó vào Slave => quá trình replication hoàn thành.

1.jpg


Có hai cách để sao chép dữ liệu:
  • Master-Master Replication: Trong chế độ này, dữ liệu sẽ được sao chép từ một trong hai máy chủ. Nói cách khác, thực hiện đọc hoặc ghi từ một trong hai máy chủ. Vì vậy, bất cứ khi nào một máy chủ nhận được yêu cầu ghi, nó sẽ đồng bộ dữ liệu với máy chủ khác. Chế độ này sẽ rất hữu ích khi bạn muốn dự phòng tốt nhất.
  • Master-Slave Replication: Trong chế độ này, các thay đổi dữ liệu xảy ra trên máy chủ chính, trong khi máy chủ phụ tự động sao chép các thay đổi từ máy chủ chính. Chế độ này sẽ phù hợp nhất để sao lưu dữ liệu.
Các bước cấu hình replication: Active/Passive MySQL High Availability Pacemaker Cluster with MariaDB on CentOS 8
2.jpg


  • Các thông số Last_ErrorLast_SQL_Error là lỗi khi Slave DB thực thi các event đọc từ relay log.
  • Thông số Seconds_Behind_Master cho ta biết dữ liệu của Slave DB đang bị trễ (delay, lag) bao nhiêu giây so với Master DB,
  • Connect_Retry cho biết thời gian tính bằng giây giữa các lần thử lại để kết nối. Giá trị mặc định là 60

Tham khảo: show slave status

2. High Availability Cluster

Pacemaker:
là phần mềm quản lí tài nguyên mã nguồn mở chịu trách nhiệm cho tất cả các hoạt động liên quan đến cụm, chẳng hạn như giám sát thành viên nhóm, quản lý các dịch vụ và tài nguyên
Corosync: là khung được Pacemaker sử dụng để xử lý giao tiếp giữa các nút cụm.
Dưới đây là một số yêu cầu và giới hạn đối với Pacemaker

Số lượng node:
  • Tối đa 16 node trên mỗi cụm
  • Tối thiểu 3 node
  • Cluster 2 node có thể cấu hình được nhưng không được khuyến khích
Tham khảo: pacemaker

- Các mô hình triển khai pacemaker
Active/ Active: được tạo thành ít nhất từ 2 node, cả 2 đều cùng chạy đồng thời một loại dịch vụ. Mục đích chính của cụm này là để cân bằng tải. Cân bằng tải phân phối khối lượng công việc trên tất cả các node để ngăn bất kỳ node đơn lẻ nào bị quá tải.
1.jpg


Active/Passive: được tạo thành ít nhất từ 2 node, tuy nhiên các node sẽ không cùng hoạt động, ví dụ trong trường hợp 2 node, node đầu tiên đã hoạt động (active) thì node thứ 2 sẽ ở chế độ chờ (standby), mục đích của cụm này là để dự phòng
2.jpg

N+1: Cung cấp một node bổ sung duy nhất được đưa trực tuyến để đảm nhận vai trò của node đã bị lỗi. Khi một máy chủ bị lỗi, nhóm dịch vụ ứng dụng sẽ khởi động lại trên node bổ sung. Sau khi máy chủ được sửa chữa, nó sẽ trở thành node phụ . Bất kỳ máy chủ nào cũng có thể cung cấp dự phòng cho bất kỳ máy chủ nào khác.
3.jpg

N+M: Trong trường hợp một cụm duy nhất đang quản lý nhiều dịch vụ, chỉ có một node chuyển đổi dự phòng chuyên dụng có thể không cung cấp đủ dự phòng. Trong những trường hợp như vậy cần nhiều hơn một (M) máy chủ dự phòng.
4.jpg

N to 1: Cho phép node dự phòng tạm thời chuyển đổi trở thành node hoạt động, cho đến khi nút gốc có thể được khôi phục hoặc đưa trở lại trực tuyến.
5.jpg

N to M: cụm N to N phân phối lại các dịch vụ, phiên bản từ nút bị lỗi trong số các nút hoạt động còn lại.
6.jpg


Để duy trì tính toàn vẹn và sẵn có của cluster, pacemaker sử dụng quorum để ngắn ngừa sự mất mát dữ liệu. Một cluster có quorum khi có hơn một nửa số lượng các node đang có trạng thái online. Để giảm thiểu nguy cơ mất mát dữ liệu, mặc định pacemaker sẽ ngừng tất cả các resource nếu cluster không có quorum

Công thức tính quorum(số node tối thiểu): (Số node hoạt động) > (tổng số node của cụm) / 2
=> với cluster 2 node, khi một node bị faild thì cả cluster sẽ ngừng hoạt động, do đó khi cấu hình cluster 2 node cần tắt puorum.

Cách cài đặt và cấu hình: Active/Passive MySQL High Availability Pacemaker Cluster with MariaDB on CentOS 8

Để di chuyển vai trò node chính sang node khác:
pcs resource move resource_name des_node
4.jpg

3. Phân quyền user trong MySQL MariaDB
- Kiểm tra có bao nhiêu user trong MariaDB
select user from mysql.user;
5.jpg

- Kiểm tra IP được phân quyền truy cập từ user svuit01

select host from mysql.user where user = 'svuit01';
7.jpg


% có nghĩa svuit01 được truy cập từ mọi IP, như vậy rất là không an toàn

Xóa user svuit01
DELETE FROM mysql.user WHERE user='svuit01';
FLUSH PRIVILEGES;
8.jpg

Tạo một user mới, chỉ cho một IP nhất định truy cập vào
create user 'svuit02'@'10.123.10.121' identified by 'xxxxxxxxxxxx';
10.jpg

Các quyền trong database
Dưới đây là danh sách các quyền mà người dùng có dùng trong mysql

PrivilegeMeaning
ALL [PRIVILEGES]tất cả các đặc quyền đơn giản ngoại trừ GRANT OPTION
ALTERCho phép sử dụng ALTER TABLE
CREATECho phép sử dụng CREATE TABLE
CREATE TEMPORARY TABLESCho phép sử dụng CREATE TEMPORARY TABLE
DELETECho phép sử dụng DELETE
DROPCho phép sử dụng DROP TABLE
EXECUTENot implemented
FILEEnables use of SELECT … INTO OUTFILE and LOAD DATA INFILE
INDEXEnables use of CREATE INDEX and DROP INDEX
INSERTEnables use of INSERT
LOCK TABLESEnables use of LOCK TABLES on tables for which you have the SELECT privilege
PROCESSEnables the user to see all processes with SHOW PROCESSLIST
REFERENCESNot implemented
RELOADCho phép sử dụng FLUSH
REPLICATION CLIENTCho phép user hỏi slave hoặc master servers ở đâu
REPLICATION SLAVECần thiếtcho replication slaves (để đọc binary log events từ master)
SELECTCho phép sử dụng SELECT
SHOW DATABASESSHOW DATABASES shows all databases
SHUTDOWNCho phép sử dụng MySQLadmin shutdown
SUPERCho phép sử dụng CHANGE MASTER, KILL, PURGE MASTER LOGS, và SET GLOBAL statements, lệnh gỡ lỗi MySQLadmin; cho phép kết nối (một lần) ngay cả khi đạt đến max_connections
UPDATECho phép sử dụngUPDATE
USAGEKhông cung cấp đặc quyền nào
GRANT OPTIONCho phép cấp hoặc xoá các đặc quyền của người dùng khác

Gán quyền cho user mới trong một database

9.jpg
 

Attachments

Last edited:
Top