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.
Có hai cách để sao chép dữ liệu:
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:
- 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.
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
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.
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.
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.
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.
Để 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:
3. Phân quyền user trong MySQL MariaDB
- Kiểm tra có bao nhiêu user trong MariaDB
- Kiểm tra IP được phân quyền truy cập từ user svuit01
% 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
Tạo một user mới, chỉ cho một IP nhất định truy cập vào
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
Gán quyền cho user mới trong một database
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.

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 thông số Last_Error và Last_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
- 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.

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

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.

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.

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.

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.

Để 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

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

- Kiểm tra IP được phân quyền truy cập từ user svuit01
select host from mysql.user where user = 'svuit01';

% 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;

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';

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
Privilege | Meaning |
ALL [PRIVILEGES] | tất cả các đặc quyền đơn giản ngoại trừ GRANT OPTION |
ALTER | Cho phép sử dụng ALTER TABLE |
CREATE | Cho phép sử dụng CREATE TABLE |
CREATE TEMPORARY TABLES | Cho phép sử dụng CREATE TEMPORARY TABLE |
DELETE | Cho phép sử dụng DELETE |
DROP | Cho phép sử dụng DROP TABLE |
EXECUTE | Not implemented |
FILE | Enables use of SELECT … INTO OUTFILE and LOAD DATA INFILE |
INDEX | Enables use of CREATE INDEX and DROP INDEX |
INSERT | Enables use of INSERT |
LOCK TABLES | Enables use of LOCK TABLES on tables for which you have the SELECT privilege |
PROCESS | Enables the user to see all processes with SHOW PROCESSLIST |
REFERENCES | Not implemented |
RELOAD | Cho phép sử dụng FLUSH |
REPLICATION CLIENT | Cho phép user hỏi slave hoặc master servers ở đâu |
REPLICATION SLAVE | Cần thiếtcho replication slaves (để đọc binary log events từ master) |
SELECT | Cho phép sử dụng SELECT |
SHOW DATABASES | SHOW DATABASES shows all databases |
SHUTDOWN | Cho phép sử dụng MySQLadmin shutdown |
SUPER | Cho 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 |
UPDATE | Cho phép sử dụngUPDATE |
USAGE | Không cung cấp đặc quyền nào |
GRANT OPTION | Cho 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

Đính kèm
Sửa lần cuối:
Bài viết liên quan