1. Tạo file YAML định nghĩa TiDBCluster cho môi trường đơn vùng
Tạo file cấu hình tidb-cluster.yaml tại thư mục /opt/tidb-deploy để định nghĩa các thành phần PD, TiKV và TiDB.
File này sẽ khai báo số lượng replica, tài nguyên CPU/RAM tối thiểu và phiên bản TiDB để Kubernetes có thể khởi tạo các Pod tương ứng.
File cấu hình nằm tại: /opt/tidb-deploy/tidb-cluster.yaml
cat > /opt/tidb-deploy/tidb-cluster.yaml
Kết quả mong đợi: File tidb-cluster.yaml được tạo thành công, nội dung chứa đầy đủ định nghĩa cho 3 PD, 3 TiKV và 2 TiDB.
2. Triển khai Pod TiDB và kiểm tra trạng thái
2.1. Áp dụng cấu hình lên Kubernetes
Sử dụng lệnh kubectl apply để gửi file YAML đã tạo lên Kubernetes cluster.
TiDB Operator sẽ nhận file này và bắt đầu quá trình khởi tạo các StatefulSet, Deployment và Service tương ứng.
kubectl apply -f /opt/tidb-deploy/tidb-cluster.yaml
Kết quả mong đợi: Xuất hiện thông báo tidbcluster.pingcap.com/basic-tidb created.
2.2. Theo dõi tiến trình khởi tạo
Quá trình khởi tạo TiDB Cluster mất từ 3 đến 10 phút do cần format disk, khởi động PD cluster và đồng bộ dữ liệu.
Sử dụng lệnh kubectl get pods với cờ -w để theo dõi trực tiếp trạng thái chuyển đổi từ ContainerCreating sang Running.
kubectl get pods -n default -l app.kubernetes.io/name=tidbcluster -w
Kết quả mong đợi: Bạn thấy các Pod có tên như basic-tidb-pd-0, basic-tidb-tikv-0, basic-tidb-tidb-0 chuyển sang trạng thái Running với trạng thái 2/2 hoặc 3/3.
2.3. Kiểm tra trạng thái Cluster
Sau khi các Pod đã chạy, cần kiểm tra xem TiDB Operator đã đồng bộ trạng thái cluster chưa.
Sử dụng lệnh kubectl describe hoặc kubectl get với loại tài nguyên tidbcluster để xem trạng thái tổng thể.
kubectl get tidbcluster basic-tidb -o wide
Kết quả mong đợi: Cột Phase hiển thị giá trị Running và các cột PD, TiKV, TiDB đều hiển thị số lượng replica mong đợi (ví dụ: 3/3, 3/3, 2/2).
3. Kết nối và kiểm tra cơ bản với MySQL client
3.1. Xác định địa chỉ Service của TiDB
TiDB sử dụng một Service LoadBalancer hoặc ClusterIP để định tuyến traffic đến các Pod TiDB.
Cần lấy địa chỉ IP hoặc tên Service để kết nối từ MySQL client.
kubectl get svc -l app.kubernetes.io/component=tidb
Kết quả mong đợi: Thấy Service có tên basic-tidb-tidb với trạng thái ClusterIP hoặc LoadBalancer và địa chỉ IP tương ứng.
3.2. Kết nối từ Pod Client (Kiểm tra nội bộ)
Để kiểm tra nhanh nhất mà không cần cài đặt client ngoài, hãy tạo một Pod tạm chứa MySQL client để kết nối vào TiDB.
Pod này sẽ nằm trong cùng namespace default để có thể giải quyết DNS nội bộ của Kubernetes.
kubectl run mysql-client --rm -it --image=mysql:8.0 --restart=Never -- mysql -h basic-tidb-tidb -u root
Kết quả mong đợi: Dòng lệnh chuyển sang prompt của MySQL mysql> mà không báo lỗi kết nối (Connection refused).
3.3. Thực thi lệnh kiểm tra cơ bản
Khi đã vào prompt MySQL, thực thi lệnh SHOW DATABASES; để kiểm tra database mặc định và SELECT VERSION(); để xác nhận phiên bản.
Nếu kết nối thành công, bạn sẽ thấy danh sách database và thông tin phiên bản TiDB.
SHOW DATABASES;
SELECT VERSION();
SELECT * FROM information_schema.tidb_servers_info;
Kết quả mong đợi:
- Lệnh SHOW DATABASES; trả về danh sách bao gồm mysql, information_schema, performance_schema, test.
- Lệnh SELECT VERSION(); trả về chuỗi chứa TiDB và phiên bản (ví dụ: 7.1.5).
- Lệnh SELECT * FROM information_schema.tidb_servers_info; trả về danh sách các node TiDB đang hoạt động (2 node trong cấu hình này).
Đóng kết nối bằng lệnh exit để hoàn tất bài thực hành.
exit
Kết quả mong đợi: Prompt quay lại shell Linux ban đầu, quá trình kiểm tra cơ bản hoàn tất.
Điều hướng series:
Mục lục: Series: Triển khai Database Multi-Cloud với TiDB và Ubuntu 24.04
« Phần 2: Cài đặt TiDB Operator và Kubernetes trên Ubuntu 24.04
Phần 4: Mở rộng TiDB sang Multi-Cloud: Cấu hình Cross-Region »