Xác định yêu cầu phần cứng tối thiểu cho ClickHouse
ClickHouse là database chuyên xử lý dữ liệu khối lượng lớn (OLAP) theo chiều dọc, do đó nó có yêu cầu phần cứng khác biệt so với các RDBMS truyền thống như MySQL hay PostgreSQL.
Yêu cầu tối thiểu để ClickHouse hoạt động ổn định trong môi trường production cho dữ liệu real-time:
- CPU: Tối thiểu 4 nhân (Cores), kiến trúc x86_64. ClickHouse tận dụng tối đa đa luồng (Multi-threading) để thực thi truy vấn song song.
- RAM: Tối thiểu 8 GB. ClickHouse sử dụng bộ nhớ để cache các chỉ mục (index) và thực thi các phép tính trên dữ liệu lớn. Với dữ liệu thực tế, nên cấp 16 GB trở lên.
- Disk I/O: Đây là yếu tố quan trọng nhất. Bắt buộc sử dụng SSD (NVMe là tối ưu nhất). ClickHouse thực hiện rất nhiều phép đọc/ghi ngẫu nhiên (random I/O) khi xây dựng index và merge phần tử. HDD cơ học sẽ gây nghẽn cổ chai nghiêm trọng.
- Hệ điều hành: Linux (Ubuntu 24.04 LTS), Kernel tối thiểu 5.15 để tận dụng các tính năng I/O scheduler mới.
Trước khi cài đặt, hãy chạy lệnh kiểm tra cấu hình phần cứng hiện tại của server để đảm bảo đáp ứng:
lscpu | grep "Model name" && free -h && lsblk -o NAME,SIZE,TYPE,FSTYPE
Kết quả mong đợi: Bạn thấy thông tin CPU là dòng x86_64, RAM >= 8GB, và ổ đĩa chính (thường là /dev/nvme0n1 hoặc /dev/sda) là loại SSD/NVMe.
Tải và cài đặt Ubuntu 24.04 LTS với cấu hình Disk Partition tối ưu
1. Chuẩn bị Image và Boot Installer
Tải bản Ubuntu Server 24.04 LTS (64-bit) từ trang chủ chính thức. Lưu ý chọn bản "Minimal" hoặc "Server" để giảm thiểu các gói không cần thiết, giúp hệ thống nhẹ hơn cho việc chạy database.
Khởi động server với USB/ISO đã tạo. Trong quá trình cài đặt (Installation), khi đến màn hình "Storage configuration", hãy chọn Custom storage layout (Cài đặt phân vùng tùy chỉnh) thay vì "Use entire disk".
2. Cấu hình phân vùng (Partitioning) tối ưu cho ClickHouse
ClickHouse lưu trữ dữ liệu theo file hệ thống. Việc tách riêng phân vùng dữ liệu (/var/lib/clickhouse) khỏi phân vùng hệ thống (/) giúp tăng tính bảo mật và dễ dàng mở rộng dung lượng hoặc backup mà không làm ảnh hưởng OS.
Tạo cấu trúc phân vùng như sau trong màn hình cài đặt:
- Swap: 4 GB - 8 GB (Tùy vào RAM vật lý, ClickHouse không thích bị swap ra đĩa quá nhiều, nhưng cần một lượng nhỏ để tránh OOM Kill).
- / (Root): 50 GB, hệ thống file ext4. Chứa hệ điều hành và các gói cài đặt.
- /var/lib/clickhouse: Dành toàn bộ dung lượng còn lại của SSD, hệ thống file ext4 (hoặc XFS nếu dữ liệu > 10TB). Đây là nơi lưu trữ dữ liệu thực tế.
- /var/log: 20 GB, hệ thống file ext4. Tách riêng để log không làm đầy root partition khi có sự cố.
Điểm quan trọng khi mount phân vùng /var/lib/clickhouse: Trong cài đặt Ubuntu 24.04, khi tạo partition, hãy đặt mount point là /var/lib/clickhouse và đảm bảo filesystem type là ext4 với các tham số mount tối ưu (không cần chỉnh sửa sâu trong installer, nhưng cần lưu ý).
Sau khi hoàn tất cài đặt, hãy vào server đã boot lên để verify cấu trúc phân vùng:
df -hT | grep -E "^/dev|clickhouse"
Kết quả mong đợi: Bạn thấy dòng phân vùng /var/lib/clickhouse với kích thước lớn (bằng dung lượng SSD trừ đi root và swap) và type là ext4.
Cập nhật hệ thống và cài đặt các gói phụ thuộc cần thiết
1. Cập nhật toàn bộ hệ thống (System Update)
Ubuntu 24.04 LTS mới phát hành, cần cập nhật kernel và các gói bảo mật mới nhất trước khi cài đặt bất kỳ phần mềm server nào. Điều này đảm bảo tính tương thích với ClickHouse.
sudo apt update && sudo apt upgrade -y && sudo apt dist-upgrade -y
Kết quả mong đợi: Quá trình chạy xong mà không có lỗi (Errors), hệ thống có thể yêu cầu restart nếu có cập nhật kernel.
2. Cài đặt các công cụ dòng lệnh (CLI Tools)
Để triển khai ClickHouse sau này, bạn cần các công cụ để tải file cài đặt, giải nén archive, và parse JSON từ API của ClickHouse. Các gói cần thiết là: curl, unzip, jq, wget.
sudo apt install -y curl unzip jq wget gnupg2 lsb-release
Kết quả mong đợi: Các gói được cài đặt thành công, không có cảnh báo về dependency.
3. Cấu hình tối ưu hóa I/O Scheduler (Quan trọng)
Mặc định Ubuntu có thể sử dụng I/O scheduler không tối ưu cho workload của ClickHouse. ClickHouse hoạt động tốt nhất với scheduler none hoặc mq-deadline trên NVMe/SSD hiện đại để giảm độ trễ (latency).
Thay đổi I/O scheduler cho ổ đĩa dữ liệu (giả sử là /dev/nvme0n1). Thay thế nvme0n1 bằng tên thiết bị thực tế của bạn:
echo "none" | sudo tee /sys/block/nvme0n1/queue/scheduler
Kết quả mong đợi: Lệnh chạy thành công, không có lỗi. Để kiểm tra:
cat /sys/block/nvme0n1/queue/scheduler
Kết quả mong đợi: Bạn thấy [none] được bao trong dấu vuông, ví dụ: [none] mq-deadline kyber bfq.
4. Verify toàn bộ môi trường
Chạy lệnh tổng hợp để kiểm tra xem server đã sẵn sàng cho phần 2 (cài đặt ClickHouse) chưa:
echo "OS Version:" && lsb_release -d && echo "Disk Mount:" && df -h /var/lib/clickhouse && echo "Required Tools:" && which curl unzip jq && echo "IO Scheduler:" && cat /sys/block/nvme0n1/queue/scheduler
Kết quả mong đợi:
- OS Version: Ubuntu 24.04.1 LTS (hoặc bản mới hơn).
- Disk Mount: Phân vùng /var/lib/clickhouse đã được mount với dung lượng lớn.
- Required Tools: Đường dẫn đầy đủ của curl, unzip, jq được hiển thị (ví dụ: /usr/bin/curl).
- IO Scheduler: Hiện thị [none].
Điều hướng series:
Mục lục: Series: Triển khai Database Real-time với ClickHouse trên Ubuntu 24.04
Phần 2: Cài đặt ClickHouse Server và Client trên Ubuntu 24.04 »