Hướng Dẫn Cài Đặt Percona XtraDB Cluster Trên Ubuntu/Debian Chi Tiết

Percona XtraDB Cluster (PXC) là giải pháp clustering cao cấp cho MySQL, đảm bảo high-availability, chống downtime và mất dữ liệu, có khả năng mở rộng tuyến tính. Trong bài viết này, chúng ta sẽ đi chi tiết từ khái niệm đến cách cài đặt và vận hành một cluster hoàn chỉnh.

Percona XtraDB Cluster Là Gì?

Percona XtraDB Cluster là giải pháp database clustering mã nguồn mở, kết hợp:

  • Percona Server for MySQL với XtraDB storage engine
  • Galera Library cho write-set replication (đồng bộ hóa các thành phần)
  • Percona XtraBackup làm phương thức truyền dữ liệu mặc định (SST)

Tính năng nổi bật

  • Replication đồng bộ – Dữ liệu được ghi vào tất cả các node cùng lúc, hoặc không ghi nếu bất kỳ node nào thất bại
  • Multi-master replication – Bất kỳ node nào cũng có thể kích hoạt cập nhật dữ liệu
  • Parallel replication – Nhiều thread thực hiện replication ở mức row
  • Tự động thêm node – Node mới được thêm vào sẽ tự động đồng bộ
  • Tính nhất quán dữ liệu – Không còn tình trạng các node không đồng bộ
  • Mã hóa SSL tự động – Bảo mật dữ liệu khi truyền giữa các node

Kiến trúc Cluster

Cluster gồm các node, mỗi node chứa cùng bộ dữ liệu và được đồng bộ nhau. Cấu hình khuyến nghị là ít nhất 3 node, tuy nhiên 2 node vẫn hoạt động được.

Những lưu ý quan trọng

  • Node mới cần copy toàn bộ dataset (chi phí cho CSDL lớn)
  • Không lý tưởng cho việc scale ghi – ghi phải truyền tới tất cả các node
  • Dữ liệu được nhân bản trên các node

Hướng Dẫn Cài Đặt Chi Tiết

Bước 1: Cập Nhật Hệ Thống

sudo apt update
sudo apt upgrade -y

Bước 2: Cài Đặt Các Gói Phụ Thuộc

sudo apt install -y wget gnupg2 lsb-release curl

Bước 3: Tải Và Cài Đặt Percona Repository

wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
sudo dpkg -i percona-release_latest.generic_all.deb

Bước 4: Kích Hoạt Repository PXC 8.0

sudo apt update
sudo percona-release setup pxc80

Bước 5: Cài Đặt Percona XtraDB Cluster

sudo apt install -y percona-xtradb-cluster

Trong quá trình cài đặt, bạn sẽ được yêu cầu đặt root password cho database.

Tùy chọn: Cài Đặt Phiên Bản Đầy Đủ

Nếu cần thêm công cụ debug, cài đặt phiên bản đầy đủ:

sudo apt install -y percona-xtradb-cluster-full

Cấu Hình Cơ Bản

Cấu Hình Node trong File Config

Mở file cấu hình tại /etc/mysql/mysql.conf.d/pxc.cnf hoặc /etc/my.cnf:

[mysqld]
# Node identification
server-id=1
pxc-node-name=pxc1

# Cluster communication
wsrep_provider=/usr/lib/galera3/libgalera_smm.so
wsrep_cluster_name=my_cluster
wsrep_cluster_address=gcomm://192.168.1.101,192.168.1.102,192.168.1.103

# Replication settings
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sstuser:password

# Performance settings
innodb_buffer_pool_size=256M
innodb_log_file_size=64M

# PXC specific
pxc_encrypt_cluster_traffic=ON

Các Tham Số Quan Trọng

Tham sốMô tả
wsrep_cluster_addressĐịa chỉ các node trong cluster
wsrep_cluster_nameTên cluster
wsrep_sst_methodPhương thức State Snapshot Transfer (xtrabackup-v2, clone, rsync)
wsrep_sst_authCredentials cho SST (cần tạo trước)
pxc-node-nameTên duy nhất cho node
innodb_buffer_pool_sizeBộ đệm cho InnoDB (khuyến nghị 50-80% RAM)

Tạo User Cho SST

Đăng nhập MySQL và tạo user cho State Snapshot Transfer:

mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
mysql> FLUSH PRIVILEGES;

Khởi Động Và Kiểm Tra Cluster

Bước 1: Khởi Động Node Đầu Tiên (Bootstrap)

sudo systemctl start mysql@bootstrap

Quan trọng: Node được khởi động với mysql@bootstrap phải được dùng bằng cú pháp cùng tên.

Bước 2: Kiểm Tra Trạng Thái

mysql> show status like 'wsrep%';

Các chỉ số quan trọng cần kiểm tra:

VariableGiá trị mong muốnMô tả
wsrep_cluster_size1 (lúc đầu)Số node trong cluster
wsrep_cluster_statusPrimaryTrạng thái cluster (Primary = bình thường)
wsrep_local_state_commentSyncedTrạng thái đồng bộ của node
wsrep_readyONNode sẵn sàng xử lý query

Bước 3: Thêm Node Khác

Sau khi node đầu tiên hoạt động, các node khác có thể khởi động bình thường:

sudo systemctl start mysql

Bước 4: Kiểm Tra Cluster Toàn Phần

mysql> show status like 'wsrep_cluster_size';
mysql> show status like 'wsrep_incoming_addresses';

Các Lệnh Quản Lý Cluster

Khởi Động/Dừng Node

# Khởi động node đầu tiên (bootstrap)
sudo systemctl start mysql@bootstrap

# Dừng node bootstrap
sudo systemctl stop mysql@bootstrap

# Khởi động node thông thường
sudo systemctl start mysql

# Dừng node
sudo systemctl stop mysql

# Restart node
sudo systemctl restart mysql

Kiểm Tra Trạng Thái

# Xem tất cả wsrep status
SHOW STATUS LIKE 'wsrep%';

# Xem các biến quan trọng
SHOW STATUS LIKE 'wsrep_cluster_size';
SHOW STATUS LIKE 'wsrep_cluster_status';
SHOW STATUS LIKE 'wsrep_ready';
SHOW STATUS LIKE 'wsrep_local_state_comment';
SHOW STATUS LIKE 'wsrep_incoming_addresses';

# Từ command line
mysqladmin -u root -p status
mysqladmin -u root -p variables | grep wsrep

Kiểm Tra Log

# Xem log realtime
sudo journalctl -u mysql -f

# Xem error log
sudo cat /var/log/mysql/error.log

Quản Lý User Replication

# Tạo user cho replication
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

# Kiểm tra user kết nối
SHOW PROCESSLIST;

Những Lưu Ý Quan Trọng Khi Vận Hành

  • Cluster tối thiểu 3 node để đảm bảo high-availability thực sự
  • Không nên shutdown tất cả node cùng lúc – có thể mất dữ liệu
  • Dùng mysql@bootstrap chỉ khi khởi động cluster lần đầu hoặc sau khi tất cả node đã dừng
  • Backup trước khi thay đổi cấu hình
  • Theo dõi wsrep_cluster_size thường xuyên để đảm bảo tất cả node đang hoạt động

So Sánh PXC Với MySQL Replication Truyền Thống

Tiêu chíPercona XtraDB ClusterMySQL Replication
ReplicationĐồng bộ (Synchronous)Bất đồng bộ (Asynchronous)
Conflict ResolutionTự độngThủ công
Data ConsistencyNhất quán caoCó thể khác nhau
FailoverTự động, không downtimeCần手动 xử lý
Write ScalabilityHạn chế (ghi phải đến tất cả)Tốt hơn
Độ phức tạpCao hơnĐơn giản hơn

Kết Luận

Percona XtraDB Cluster là giải pháp high-availability mạnh mẽ cho MySQL, phù hợp cho các ứng dụng yêu cầu uptime cao và dữ liệu nhất quán. Tuy nhiên, việc triển khai đòi hỏi hiểu biết về Galera cluster và các tham số cấu hình.

Nếu bạn cần một giải pháp đơn giản hơn với replication bất đồng bộ, có thể cân nhắc MySQL Group Replication hoặc MariaDB Galera Cluster.

Câu Hỏi Thường Gặp (FAQ)

Percona XtraDB Cluster cần tối thiểu bao nhiêu node?

Khuyến nghị tối thiểu 3 node để đảm bảo high-availability thực sự. Tuy nhiên, 2 node vẫn hoạt động được nhưng không đảm bảo failover nếu một node bị lỗi.

Sự khác nhau giữa SST và IST trong PXC?

SST (State Snapshot Transfer) là truyền toàn bộ dữ liệu từ một node sang node mới. IST (Incremental State Transfer) chỉ truyền các thay đổi增量, nhanh hơn nhưng chỉ áp dụng khi node cần join lại cluster.

Có thể dùng PXC cho ứng dụng write-heavy không?

PXC không lý tưởng cho write-heavy vì mỗi ghi phải được truyền đến tất cả các node. Với workload write-intensive, nên cân nhắc sharding hoặc các giải pháp có thể scale writes.

Làm sao để backup dữ liệu trên PXC?

Sử dụng Percona XtraBackup để backup từ bất kỳ node nào. Khuyến nghị backup từ node không phải donor để tránh ảnh hưởng đến cluster.

Cluster bị split-brain xử lý thế nào?

Galera library xử lý split-brain bằng cách chỉ cho phép partition có đa số node hoạt động. Nếu cluster bị chia đôi, partition nhỏ hơn sẽ không chấp nhận ghi.

Chào các bạn mình là Quốc Hùng , mình sinh ra thuộc cung song tử ,song tử luôn khẳng định chính mình ,luôn luôn phấn đấu vượt lên phía trước ,mình sinh ra và lớn lên tại vùng đất võ cổ truyền ,đam mê của mình là coder ,ngày đi học tối về viết blog ...