SQL Server 2022 を Ubuntu 24.04 + VPS で業務運用してみた構築ログ|思ったより普通に安定した話

今回の構成は、正直に言うと「選びたくて選んだ」というより「そうせざるを得なかった」に近いです。
業務で使っている既存システムの都合上、DB を SQL Server のまま持ってくる必要があり、VPS 上で Linux + SQL Server という少し変則的な構成になりました。

PostgreSQL など別の DB に移行する案も当然検討しましたが、
・プログラム修正コストが高い
・既存バッチや業務フローへの影響が大きい
・検証期間を十分に取れない
という理由で、今回は「現行踏襲」を選択。
理想より現実、といういつもの判断です。

以前書いた「なぜ業務DBに SQL Server を選び続けているのか」という記事の流れそのままで、今回も SQL Server 継続が一番安全、という結論になりました。


■ 検証・運用している VPS 構成

今回 SQL Server を載せている VPS 構成は以下です。

・VPS:XServer VPS ビジネスプラン
・OS:Ubuntu 24.04
・CPU:6 コア
・メモリ:12GB(8GB + 無料増量)
・ストレージ:約 400GB(NVMe)

実際に検証・運用している環境は Xserver VPS です。
ディスク容量と I/O を重視した結果、この構成に落ち着きました。

このあたりの初期構築は、以前まとめた「Xserver VPS 初期構築ログ」とほぼ同じ流れなので、今回は SQL Server 周りに絞って書いています。


■ なぜ Ubuntu + SQL Server という構成にしたか

Windows Server + SQL Server にする案もありましたが、
・Windows ライセンス
・CAL 管理
・パッチ運用
このあたりを考えると、運用負荷が地味に増えます。

一方、Linux 版 SQL Server は、実務で使ってみると意外と素直。
バックアップ、起動制御、監視など、普段の Linux 運用フローに自然に組み込めます。

SQL Server は Windows じゃないと怖い」という先入観はありましたが、実際に検証してみると、そこまで構える必要はないと感じました。


■ SQL Server 2022 のインストール概要

Ubuntu 24.04 環境では、当時(2025年2月頃)公式の 24.04 向けリポジトリがなかったため、22.04 用を流用しています。
このあたりはタイミングによって変わるので、必ず公式ドキュメントを確認してください。

リポジトリ登録と依存関係まわりで少しハマりました。

apt update && apt upgrade -y
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc
curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list \
  | tee /etc/apt/sources.list.d/mssql-server-2022.list
apt update

Ubuntu 24.04 では以下の追加ライブラリも必要でした。

wget http://archive.ubuntu.com/ubuntu/pool/main/o/openldap/libldap-2.5-0_2.5.11+dfsg-1~exp1ubuntu3_amd64.deb
dpkg -i libldap-2.5-0_2.5.11+dfsg-1~exp1ubuntu3_amd64.deb
apt install -y libcurl4 libssl-dev libgnutls30

ここは環境差が出やすく、エラーメッセージを見ながら地道に潰しました。

本体のインストールは以下。

apt install mssql-server
/opt/mssql/bin/mssql-conf setup

セットアップ時は、
・エディション:Express
・言語:日本語
・管理者パスワード:要件に合う強度
を選択。

起動確認。

systemctl status mssql-server --no-pager
systemctl enable mssql-server

ここまで特にエラーなく進めば、ひとまず安心です。


■ ファイアウォール設定と公開範囲

SQL Server の 1433 ポートを ufw で開放。

sudo ufw allow 1433/tcp
sudo ufw enable
sudo ufw status

ただし、インターネットへの直公開は避け、業務では VPN 経由、もしくは接続元 IP 制限前提で運用しています。
「繋がる」より「守れる」を優先です。


■ バックアップ運用(Windows 側から実行)

バックアップは Windows 端末から sqlcmd を使って実行しています。

sqlcmd -S <VPSのIP>,1433 -U <user> -P <password> ^
-Q "BACKUP DATABASE SampleDB TO DISK = N'/var/opt/mssql/backup/SampleDB.bak' WITH INIT"

出力先は Linux 版 SQL Server 標準の
/var/opt/mssql/backup/

取得は scp。

scp user@vps:/var/opt/mssql/backup/SampleDB.bak D:\backup\

これをバッチ化し、Windows のタスクスケジューラで定期実行しています。

SQL Server 公式の仕組みだけで完結させることで、属人化を防ぎ、引き継ぎや復旧を楽にするのが狙いです。


■ 実際に業務で使って問題なかったか

結論から言うと、かなり安定しています。

・メモリ消費:起動直後で約 600〜700MB
・CPU 使用率:通常時はほぼアイドル
・ディスク I/O:体感的な遅さなし

Express Edition + 中規模業務であれば、VPS でも十分現実的だと感じました。

「VPS で SQL Server は重そう」という不安は、実際に動かしてみたらほぼ消えました。
むしろ Windows Server 運用より楽になった面も多いです。


■ XServer VPS を選んでよかった点(DB用途視点)

DB 用途で一番気にしていたのは、ディスク性能と容量でした。

Xserver VPS のビジネスプランは、
10Gbps ベストエフォート
約400GB の NVMe
という構成で、ログ・DB・バックアップをまとめても余裕があります。

実際にクエリ応答やバックアップ速度を見ても、ストレスを感じる場面はほぼありません。
このあたりは、業務用途で長時間安定稼働させる前提では、かなり安心材料になります。


■ 業務運用で意識していること

今回の構成で一番意識したのは、「復旧しやすさ」です。

・SQL Server 公式の仕組みだけを使う
・バックアップは必ずサーバ外にも保管
・構成をシンプルに保つ

トラブル対応を何度もやってきた経験上、
「高機能」より「単純で戻せる」方が、結果的に安全だと感じています。


■ まとめ

Ubuntu 24.04 + SQL Server 2022 という構成でも、業務用途で十分安定して運用できています。
Linux といえど、運用の敷居は思っていたほど高くなく、むしろ管理しやすい面も多いです。

最初は少し構えていましたが、
普通に動いている
この一言に尽きます。


この環境の構成まとめ

WireGuard + SQL Server + Metabase を同居させた全体構成
― 現場判断ベースで作った業務環境の実例ログ ―業務環境を刷新しよう、という大きな構想が最初からあったわけではない。目の前にあったのは、何となく残り続けていたFTP構成Excelベースの集計運用老朽化したオンプレサーバという、よくある 「現...

次の記事

なぜ Metabase を選んだか|Excel集計地獄から抜けるために現場と対話した話
前回、 SQL Server 2022 を Ubuntu 24.04 + VPS で業務運用してみた構築ログ を書きましたが、業務でデータを扱っていると、気づいたら Excel 集計が日課になっている、という状況に陥りがちだと思う。自分の現...