Ubuntu18.04 に SQL Server 2019 をインストールして開発環境は整いつつあるのですが、シャットダウン時に困った状態になりました。
サーバ用途ではない PC なので、使用しない場合は常に電源を切ります。
いつものようにシャットダウンの操作をしたところ、シャットダウンシーケンスの途中、mssql-server のところで止まってしまいました。
コンソールを切り替えても画面は変わらず。何もできません。
15分くらい待っても進まないので、仕方なく強制的に電源を切りました。
たまたま Windows の SSD もマウントしてたため、こちらにもプチ被害がありました。
起動デバイスを変更して Windows を起動したら、いきなりの fsck。
こちらが故障したら目も当てられない。作業中のソースが消えたらどうしようと、ホント冷や汗ものでした。
その後、何度かこの状態に遭遇したので、自動起動は止めることにします。
使いたい時にサービスを起動するのは少々面倒だけど、HDD/SSD が故障するよりはマシです。
1. 自動起動の無効化
(1) サービスを停止
念の為、サービスを停止します。
$ sudo systemctl stop mssql-server
ここでプロンプトが戻ってこなかったら、私と同じ状態かもしれません。
あまりやりたくはないけど、sudo kill -9 <pid>
で対処しました。
(2) サービスの状態確認
無事に停止しているか確認します。
$ systemctl status mssql-server --no-pager -l
" Active: inactive (dead) " であれば停止しています。
(3) サービスの自動起動を無効化
OS 起動時に SQLServer のサービスを自動起動しないようにします。
$ sudo systemctl disable mssql-server
これで次回の OS 起動から mssql-server.service は停止したままになります。
2. SQLServer サービスの開始・終了
自動起動ではないのでサービスの開始と終了は手動です。
(1) サービス開始
$ sudo systemctl start mssql-server
(2) サービス停止
$ sudo systemctl stop mssql-server
(3) サービス再起動
もし、SQLServer サービスが active 中にパッケージのアップデートを実施した場合、再起動した方が良いかもしれません。
$ sudo systemctl restart mssql-server
3. 補足
MS公式のドキュメントはこちらです。
ざっとネットを探してみたのですが、私の状況みたいな記事は見つけられませんでした。
今のところ、サービスを停止した状態でシャットダウンすれば、問題なく電源OFFまでたどり着きます。
この件以外は快適なので、しばらくは様子見です。
とはいえ、元々 SQL Server on Linux は物理サーバとコンテナ環境での利用を想定していました。なので、そろそろ LXD と Docker 環境も試すことにします。
※追記
もしかしたら、サービス実行中なのにサスペンドしたのが原因かもしれません。
サーバ環境じゃありえないもんなぁ。