Yêu cầu tiên quyết:
- Một máy chủ Linux đã cài đặt Docker (phiên bản 20.10 trở lên được khuyến nghị).
- Kết nối mạng ổn định tới Docker Hub.
Thực hiện kéo ảnh nền OceanBase Community Edition mới nhất:
docker pull oceanbase/oceanbase-ce:4.2.2
Kiểm tra ảnh vừa tải về:
$ docker images | grep oceanbase
oceanbase/oceanbase-ce 4.2.2 a7f1c9e8b5d2 3 weeks ago 651MB
Tạo thư mục lưu trữ dữ liệu cục bộ và khởi chạy container với cấu hình tối giản:
mkdir -p ~/ob-data
docker run -d \
--name ob-server \
-p 2881:2881 \
-v ~/ob-data:/store \
-e MODE=mini \
-e OB_ROOT_PASSWORD=obroot123 \
oceanbase/oceanbase-ce:4.2.2
Quan sát trạng thái khởi động qua nhật ký container:
docker logs -f ob-server 2>&1 | grep -E "(boot success|Connect to observer|init finished)"
Khi xuất hiện dòng boot success!, dịch vụ đã sẵn sàng phục vụ.
Kết nối cơ sở dữ liệu
Ảnh Docker tích hợp sẵn công cụ obclient — trình khách tương thích MySQL dành riêng cho OceanBase. Sử dụng lệnh sau để truy cập tenant mặc định test:
docker exec -it ob-server obclient -h127.0.0.1 -P2881 -uroot@test -A -Doceanbase
Kết quả mẫu:
Welcome to the OceanBase Monitor. Commands end with ; or \g.
Your OceanBase connection id is 3221501947
Server version: OceanBase_CE 4.2.2.0 (r100010012024022719...)
obclient [oceanbase]> SELECT tenant_name, status FROM oceanbase.__all_tenant;
+-------------+--------+
| tenant_name | status |
+-------------+--------+
| sys | ACTIVE |
| test | ACTIVE |
+-------------+--------+
Cũng có thể dùng mysql chuẩn (phiên bản ≥ 5.7) nếu đã cài đặt bên ngoài:
mysql -h127.0.0.1 -P2881 -uroot@test -pobroot123
Quản lý cụm qua OBD trong container
OBD (OceanBase Deployer) được nhúng sẵn để kiểm soát vòng đời cụm. Kiểm tra cấu hình hiện tại:
docker exec ob-server obd cluster list
Kết quả trả về tên cụm mặc định obcluster. Xem chi tiết kiến trúc:
docker exec ob-server obd cluster display obcluster
Đầu ra sẽ liệt kê hai thành phần đang hoạt động: observer (lõi xử lý dữ liệu) và obagent (thành phần giám sát).
Tạo tenant tùy chỉnh
Trước khi tạo tenant mới, cần định nghĩa đơn vị tài nguyên (resource unit), sau đó gắn vào resource pool:
CREATE RESOURCE UNIT dev_unit MAX_CPU=1, MEMORY_SIZE='1G', LOG_DISK_SIZE='1G';
CREATE RESOURCE POOL dev_pool UNIT='dev_unit', UNIT_NUM=1;
CREATE TENANT dev_tenant
RESOURCE_POOL_LIST=('dev_pool')
SET ob_tcp_invited_nodes='%';
Lưu ý: Chỉ tài khoản root@sys có đặc quyền thực thi các lệnh này. Sau khi tạo xong, kết nối vào tenant mới:
docker exec -it ob-server obclient -h127.0.0.1 -P2881 -uroot@dev_tenant -pobroot123
Thử nghiệm thao tác dữ liệu cơ bản:
CREATE DATABASE appdb;
USE appdb;
CREATE TABLE users (
id BIGINT PRIMARY KEY,
username VARCHAR(64),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO users(id, username) VALUES (1001, 'alice');
SELECT * FROM users;
Các câu lệnh SQL tuân thủ chuẩn MySQL 5.7, hỗ trợ đầy đủ tính năng như transaction ACID, partitioning và replication nội bộ.