Bước chuyển mình sang SQL Server trên Linux
Microsoft SQL Server từng là “đặc sản” riêng của Windows. Nếu muốn chạy một instance hiệu năng cao, bạn từng bị bó buộc vào hệ sinh thái cụ thể đó. Rào cản này đã bị phá vỡ vào năm 2017. Ngày nay, chạy SQL Server trên Linux là một lựa chọn tiêu chuẩn cho các đội ngũ DevOps muốn cắt giảm chi phí bản quyền và đơn giản hóa quy trình CI/CD của họ.
Tôi đã di chuyển các workload production từ Windows sang Linux trong vài năm nay. Hiệu năng gần như tương đương. Tuy nhiên, lợi ích thực sự nằm ở quy trình làm việc (workflow). Quản trị một cơ sở dữ liệu bằng các công cụ Linux gốc mang lại cảm giác tự nhiên hơn nhiều trong một hạ tầng hiện đại. Bạn có được sức mạnh của MSSQL mà không cần sự cồng kềnh của giao diện đồ họa (GUI) trên Windows Server.
Cài đặt SQL Server trên Ubuntu 22.04
Tôi thường ưu tiên sử dụng Ubuntu cho các đợt triển khai này. Hệ thống quản lý gói của nó rất ổn định và cộng đồng hỗ trợ cực kỳ lớn. Trước khi bắt đầu, hãy kiểm tra phần cứng của bạn. Microsoft cho biết bạn cần ít nhất 2GB RAM, nhưng theo kinh nghiệm của tôi, 4GB mới là mức tối thiểu thực tế để môi trường production hoạt động ổn định.
Bước 1: Nhập GPG Keys của kho lưu trữ
Hệ thống của bạn cần tin tưởng các gói từ Microsoft. Hãy lấy các public GPG key và lưu chúng vào thư mục keyrings.
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
Bước 2: Đăng ký kho lưu trữ Ubuntu
Tiếp theo, hãy trỏ hệ thống của bạn đến kho lưu trữ SQL Server 2022. Điều này đảm bảo bạn nhận được các bản cập nhật mới nhất trực tiếp từ nguồn.
curl https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | sudo tee /etc/apt/sources.list.d/mssql-server-2022.list
Bước 3: Cài đặt gói SQL Server
Bây giờ, hãy cập nhật chỉ mục gói cục bộ và tải về các file thực thi. Bước này thực hiện các công việc nặng nhọc nhưng chưa cấu hình cơ sở dữ liệu của bạn ngay lập tức.
sudo apt-get update
sudo apt-get install -y mssql-server
Bước 4: Chạy Script cấu hình
Sau khi cài đặt xong các file thực thi, hãy kích hoạt script thiết lập. Đây là nơi bạn chọn phiên bản và đặt mật khẩu cho quản trị viên hệ thống (SA).
sudo /opt/mssql/bin/mssql-conf setup
Chọn phiên bản ‘Developer’ để thử nghiệm cục bộ hoặc ‘Express’ cho các ứng dụng nhỏ, miễn phí. Hãy đặt mật khẩu SA thật mạnh. SQL Server luôn là mục tiêu thường trực của các script brute-force tự động.
Tăng cường bảo mật: Đừng để cửa ngỏ
Một bản cài đặt mặc định là một bản cài đặt dễ bị tấn công. Tôi không bao giờ để một instance chạy với các thiết lập có sẵn. Bạn cần khóa chặt nó ngay sau khi script thiết lập hoàn tất.
Thay đổi cổng mặc định
SQL Server mặc định hoạt động trên cổng 1433. Mọi bot trên internet đều quét cổng này. Chuyển instance của bạn sang một cổng không tiêu chuẩn, ví dụ 15000, có thể giảm hơn 90% số lần thử đăng nhập tự động trong log của bạn.
sudo /opt/mssql/bin/mssql-conf set network.tcpport 15000
sudo systemctl restart mssql-server
Cấu hình tường lửa
Sử dụng UFW (Uncomplicated Firewall) để hạn chế truy cập. Đừng bao giờ công khai cổng SQL của bạn với toàn bộ internet. Chỉ cho phép lưu lượng truy cập từ application server cụ thể hoặc dải IP văn phòng của bạn.
sudo ufw allow from 192.168.1.0/24 to any port 15000
sudo ufw enable
Xử lý nhập dữ liệu
Việc di chuyển dữ liệu thường đi kèm với dữ liệu thô lộn xộn. Nếu bạn đang kẹt với các file CSV cần chuyển sang JSON cho script seeding, hãy thử toolcraft.app/vi/tools/data/csv-to-json. Nó xử lý mọi thứ ngay trên trình duyệt của bạn. Điều này có nghĩa là dữ liệu nhạy cảm của bạn không bao giờ rời khỏi máy tính, một điểm cộng lớn cho việc tuân thủ bảo mật.
Quản trị nâng cao với mssql-cli
Tiện ích sqlcmd cũ vẫn hoạt động, nhưng cảm giác hơi lạc hậu. Tôi thích mssql-cli hơn. Nó cung cấp các tính năng hiện đại như tự động hoàn thành (auto-completion) và làm nổi bật cú pháp (syntax highlighting), những thứ rất cần thiết khi bạn phải xử lý sự cố truy vấn vào lúc 2 giờ sáng.
sudo apt-get install -y python3-pip
pip3 install mssql-cli
Kết nối với instance của bạn bằng cổng mới mà bạn đã cấu hình trước đó:
mssql-cli -S localhost,15000 -U SA -P 'MatKhauSieuManhCuaBan'
Tự động hóa sao lưu với Cron
Phiên bản Express thiếu SQL Server Agent để lập lịch tác vụ. Trên Linux, đây không phải là vấn đề vì chúng ta có cron. Nó đáng tin cậy hơn và cũng dễ viết script hơn.
Tạo Script sao lưu
Tạo một file tên là backup_mssql.sh. Script này sẽ xử lý việc sao lưu và dọn dẹp các file cũ hơn một tuần để tiết kiệm dung lượng đĩa.
#!/bin/bash
BACKUP_DIR="/var/opt/mssql/backups"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="MyDatabase"
mkdir -p $BACKUP_DIR
# Kích hoạt sao lưu toàn bộ
mssql-cli -S localhost,15000 -U SA -P 'MatKhauSieuManhCuaBan' -Q "BACKUP DATABASE [$DB_NAME] TO DISK = N'$BACKUP_DIR/${DB_NAME}_$DATE.bak' WITH NOFORMAT, NOINIT, STATS = 10"
# Xóa các bản sao lưu cũ hơn 7 ngày
find $BACKUP_DIR -type f -name "*.bak" -mtime +7 -delete
Lập lịch tác vụ
Cấp quyền thực thi cho script và thiết lập để nó chạy vào 2 giờ sáng mỗi đêm. Điều này đảm bảo bạn luôn có một điểm khôi phục mới nhất.
chmod +x ~/backup_mssql.sh
(crontab -l 2>/dev/null; echo "0 2 * * * /home/user/backup_mssql.sh") | crontab -
Giám sát và Log
Luôn theo dõi tình trạng sức khỏe của dịch vụ. Nếu mọi thứ trở nên chậm chạp, log lỗi của SQL Server là nơi đầu tiên bạn nên kiểm tra. Nó tiết lộ các vấn đề về áp lực bộ nhớ và các lần đăng nhập thất bại trong thời gian thực.
Để theo dõi log trực tiếp khi chúng xảy ra, hãy sử dụng tail:
sudo tail -f /var/opt/mssql/log/errorlog
Nếu bạn thấy các lỗi liên quan đến “Memory limit has been reached,” bạn có thể cần giới hạn mức sử dụng bộ nhớ. Sử dụng mssql-conf để thiết lập memory.memorylimitmb. Điều này ngăn cơ sở dữ liệu chiếm dụng hết tài nguyên của hệ điều hành Linux.
Chạy SQL Server trên Linux là một bước ngoặt cho các đội ngũ kỹ thuật chú trọng đến chi phí. Bằng cách làm chủ các công cụ CLI, bạn có được mức độ kiểm soát mà giao diện click chuột truyền thống không thể mang lại.

