Apache Derby Bài 23: Cấu hình cổng kết nối, địa chỉ máy chủ và tùy chọn logging
1. Các phương pháp cấu hình máy chủ Derby
Khi vận hành Apache Derby ở chế độ Network Server, cấu hình mặc định (lắng nghe ở localhost, cổng 1527, ghi log ra tệp derby.log tại thư mục hiện hành) thường không đáp ứng đủ yêu cầu của môi trường sản xuất (Production).
Derby cung cấp hai cách chính để thay đổi các tham số này:
-
Qua tham số dòng lệnh (Command-line arguments): Ghi đè cấu hình tạm thời cho phiên chạy hiện tại.
-
Qua tệp
derby.properties: Cấu hình vĩnh viễn, áp dụng tự động mỗi khi máy chủ hoặc cơ sở dữ liệu khởi động.
2. Thay đổi cổng và địa chỉ qua tham số dòng lệnh
Như đã đề cập ngắn gọn ở Bài 21, công cụ startNetworkServer chấp nhận các cờ (flags) để thay đổi ngay lập tức hành vi của máy chủ.
-
Đổi cổng (Port): Sử dụng cờ
-p. -
Đổi địa chỉ lắng nghe (Host): Sử dụng cờ
-h. Mặc định Derby chỉ nhận kết nối từlocalhost. Để cho phép các máy tính khác trong mạng LAN hoặc Internet kết nối, bạn phải chỉ định địa chỉ IP cụ thể hoặc dùng0.0.0.0(lắng nghe trên mọi giao diện mạng).
Bash
startNetworkServer -h 0.0.0.0 -p 8080
Lưu ý bảo mật: Việc mở
-h 0.0.0.0sẽ phơi bày cơ sở dữ liệu của bạn ra toàn bộ mạng. Hãy đảm bảo bạn đã cấu hình xác thực người dùng (User Authentication) hoặc giới hạn truy cập qua tường lửa (Firewall) trước khi thực hiện lệnh này trên máy chủ công cộng.
3. Quản trị cấu hình tập trung với derby.properties
Thay vì phải gõ lệnh dài dòng mỗi lần khởi động, bạn có thể tạo một tệp văn bản thuần túy mang tên derby.properties.
Vị trí đặt tệp: Tệp này bắt buộc phải nằm trong thư mục gốc của hệ thống Derby (được xác định bởi biến derby.system.home). Nếu bạn không cấu hình biến này, derby.system.home chính là thư mục nơi bạn đang mở Terminal để chạy lệnh startNetworkServer.
Cấu trúc tệp tuân theo định dạng key=value tiêu chuẩn của Java.
Cấu hình Host và Port trong tệp
Tạo tệp derby.properties và thêm các dòng sau:
Properties
# Đổi cổng mặc định thành 5000
derby.drda.portNumber=5000
# Cho phép kết nối từ bên ngoài
derby.drda.host=0.0.0.0
# Bật chế độ giữ kết nối (Keep-Alive) để tránh ngắt kết nối do mạng chập chờn
derby.drda.keepAlive=true
Khi có tệp này, bạn chỉ cần gõ startNetworkServer (không cần tham số), Derby sẽ tự động đọc và áp dụng cấu hình cổng 5000 và địa chỉ 0.0.0.0.
4. Tùy biến hệ thống Logging
Nhật ký hệ thống (Log) là công cụ sống còn để chẩn đoán lỗi (SQLState, Deadlock, Crash Recovery). Mặc định, Derby luôn ghi log vào tệp derby.log nằm cùng thư mục với derby.properties và ghi đè tệp này mỗi khi khởi động lại máy chủ.
Bạn có thể thay đổi hành vi này thông qua các thuộc tính sau trong derby.properties:
1. Thay đổi vị trí và tên tệp log
Để quản lý log gọn gàng (ví dụ đưa vào thư mục /var/log/derby/), hãy sử dụng thuộc tính derby.stream.error.file:
Properties
# Trỏ đường dẫn tuyệt đối đến tệp nhật ký mong muốn
derby.stream.error.file=/var/log/derby/production-server.log
2. Ghi nối tiếp thay vì ghi đè
Nếu không muốn log bị xóa sạch sau mỗi lần khởi động lại máy chủ, hãy bật chế độ Append:
Properties
# Bật chế độ ghi nối tiếp (Mặc định là false)
derby.infolog.append=true
3. Ghi log Deadlock và truy vấn chậm
Đối với môi trường nhiều giao dịch đồng thời, việc theo dõi các truy vấn gây bế tắc (deadlock) là rất quan trọng:
Properties
# Ghi lại thông tin chi tiết vào log khi xảy ra Deadlock
derby.locks.deadlockTrace=true
# Ghi lại các truy vấn SQL gây ra lỗi hoặc cảnh báo
derby.language.logStatementText=true
5. Thực hành: Triển khai thư mục vận hành chuẩn
Để hệ thống Network Server hoạt động chuyên nghiệp, hãy thiết lập một cấu trúc thư mục quy củ.
Bước 1: Tạo không gian làm việc
Bash
mkdir -p /opt/derby_server/databases
mkdir -p /opt/derby_server/logs
cd /opt/derby_server
Bước 2: Tạo tệp derby.properties
Bash
nano derby.properties
Nội dung tệp:
Properties
derby.drda.portNumber=3306
derby.drda.host=0.0.0.0
derby.stream.error.file=/opt/derby_server/logs/derby-network.log
derby.infolog.append=true
derby.language.logStatementText=true
Bước 3: Khởi động máy chủ Vì bạn đang đứng tại /opt/derby_server, đây sẽ trở thành derby.system.home.
Bash
startNetworkServer
Lúc này, máy chủ sẽ lắng nghe ở cổng 3306 trên toàn mạng lưới, và mọi cơ sở dữ liệu tạo mới sẽ nằm gọn gàng bên trong /opt/derby_server. Nhật ký được lưu trữ an toàn trong thư mục logs.
All rights reserved