Curl Global Community
待機サーバと同期する際の判断条件 - Printable Version

+- Curl Global Community (https://communities.curl.com)
+-- Forum: Blogs (https://communities.curl.com/forumdisplay.php?fid=17)
+--- Forum: Tech blog (https://communities.curl.com/forumdisplay.php?fid=18)
+---- Forum: Baison log (https://communities.curl.com/forumdisplay.php?fid=27)
+---- Thread: 待機サーバと同期する際の判断条件 (/showthread.php?tid=1199)



待機サーバと同期する際の判断条件 - umemura - 01-22-2015

★point
sc コマンドでWindowsサービスの管理を行える


ある本番サーバ環境と、その待機サーバの間で、夜間バッチにて、データベースの同期をとる際、
単純に、本番のDBからエクスポートしたダンプファイルを、待機サーバに送り、インポートする、
つまり、単純に上書きをするとします。

しかし、もし障害が発生し、待機側のDBが「正しい」状態になっていたら、
本番サーバから上書きしてはいけないことになります。
その「上書きしていいかどうか」の判断として、
『本番サーバのサービス(ApacheTomcat)が動いて』いたら、
待機サーバが運用されているものとして、本番から上書きを行わない、
という方式を考えてみました。

この場合に、本番サーバから、待機サーバのサービスの状態を確認するには、
下記のようなコードでいけそうです。

Code:
@Echo Off
Call :DoesRunningService "1  STOPPED"
Call :DoesRunningService "4  RUNNING"
Exit /B
::--------------------------------------
::サービスの状態を確認をするサブルーチン
::--------------------------------------
:DoesRunningServic
    SET service=Tomcat7
    sc \\133.170.235.90 query %service% | FindStr -C:%1>NUL
    If ERRORLEVEL 1 ( Echo %service% : %1 NG ) Else (Echo %service% : %1 OK )
Exit /B

ちなみに、この「sc コマンド」は、サービスの状態だけでなく、
サービスの開始や停止なども行えます。


ちなみに、サービスのインストールは、
.NETのインストール用ユーティリティ(InstallUtil.exe)で、できるみたいです。


例:
"C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe" サービス名