トップ回答者
ミラーリングの設定でエラーが出ます

質問
-
現在LAN内でADを組んでおり、DBのミラーリングの設定を行っております。
サーバはSV1,SV2,SV3の3台で、OSはWindows Server 2012 Std R2です。
SV1をメインのDC、SV2をサブのDCとして
SV3をメインのSQL、SV2をミラーDB、SV1をミラー監視でテスト構築しました。
SQLは2012 SP1です。LAN内だけということとテスト構築ということもあり、
OSのログインアカウントやSQLのサービスアカウントも
domain\administratorで統一しており、他のユーザは一切作成しておりません。ここからが本題ですが、
まず
1. SV3で空のaaaというDBを作成
2. aaaを完全バックアップ
3. バックアップファイルからSV2のSQLに復元。
オプションで[RESTORE WITH NORECOBERY]を選択
4. SV3でミラー設定を行う。+++++++++++++++++++++++++++++
プリンシパル サーバー インスタンスで、SV3
ミラーリング エンドポイントの次のプロパティを変更します:
名前: ミラー化
リスナー ポート: 5022
暗号化: はい
ロール: パートナー
ミラー サーバー インスタンスで、SV2
ミラーリング エンドポイントの次のプロパティを変更します:
名前: ミラー化
リスナー ポート: 5022
暗号化: はい
ロール: パートナー
ミラーリング監視サーバー インスタンスで、SV1
ミラーリング エンドポイントの次のプロパティを変更します:
名前: ミラー化
リスナー ポート: 5022
暗号化: はい
ロール: ミラーリング監視
+++++++++++++++++++++++++++++
全て成功5. ミラーの開始を押す
すると
------------------------------
ミラーリングの開始中にエラーが発生しました。
------------------------------
ADDITIONAL INFORMATION:
データベース 'aaa' のAlterに失敗しました。 (Microsoft.SqlServer.Smo)
------------------------------
Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.ConnectionInfo)
------------------------------
データベース ミラーリングを完全に開始する前にリモート サーバー インスタンス 'TCP://sv2.domain.local:5022' への通信が失敗しました。
ALTER DATABASE コマンドが失敗しました。
リモート データベースを起動したときにコマンドを再試行してください。 (Microsoft SQL Server、エラー: 1413)
------------------------------
というエラーが出ます。ミラー自体は動作していますが、ミラーリング監視がされていない状態で
動作モードは【自動フェイルオーバーを伴わない】に勝手になっています。SV3のSQLログを見ると、
++++++++++
Database mirroring is active with database 'aaa' as the principal copy. This is an informational message only. No user action is required.
Communications to the remote server instance 'TCP://sv2.domain.local:5022' failed before database mirroring was fully started. The ALTER DATABASE command failed. Retry the command when the remote database is started.
エラー: 1413、重大度: 16、状態: 5。
++++++++++SV2のSQLログを見ると
++++++++++
Database mirroring is active with database 'aaa' as the mirror copy. This is an informational message only. No user action is required.
++++++++++となっています。
データの同期はsv3とsv2で正常に出来ており、手動フェイルオーバも正常に行われています。
また名前解決はどのサーバからもきちんとできており、pingも正常に帰ってきます。
原因特定のためファイアウォールは全台無効にしています。何か解決のヒントはありませんでしょうか?
ちなみにもしやと思ってSV2をプリンシパル、SV3をミラーにしたところ正常にミラー設定が完了。
しかしフェイルオーバーさせると上記と同じエラーがでます。
- 編集済み T.Tappu 2013年12月12日 9:42
回答
-
状況からドメインコントローラー上ではミラーリングは難しそうですね。
ドメインコントローラー上へのSQL Serverのインストール自体、Microsoftとしてはやらないでくださいというスタンスだったはずなので、一部期待通りに動作しないのも止む無しかなとは思います。あとは検証したい事項にもよりますが、証明書とSQL Server認証による構成を試してみるというぐらいでしょうか。
MCITP(Database Developer/Database Administrator)
すべての返信
-
このエラーは色々な原因で出るようなので切り分けが難しいのですが、とりあえず以下の1.で出力されるスクリプトの AUTHORIZATION に表示されるアカウントと 2.で確認できるアカウントが一致していることを確認してください。
1. エンドポイントのスクリプト(プリンシパル側とミラー側それぞれ)
SQL Server Management Studio のオブジェクトエクスプローラで、サーバオブジェクト > エンドポイント > データベースミラーリングと辿っていくと表示されるエンドポイントを右クリックして、CREATE 文等へスクリプト化。
2.サービスアカウント(プリンシパル側とミラー側それぞれ)
SQL Server Configuration Manager(SQL Server 構成マネージャ)の左側ペインで「SQL Server のサービス」を表示すると、右側ペインに「ログオン」として表示されるサービスアカウント。MCITP(Database Developer/Database Administrator)
- 回答の候補に設定 星 睦美 2013年12月16日 1:14
-
ご回答ありがとうございます。
そのあたりは一応事前にチェックしておりました。
1.に関して
SV1,2,3共に
+++++++++++++++++++++++
USE [master]
GO/****** Object: Endpoint [ミラー化] Script Date: 2013/12/xx xx:xx:xx ******/
CREATE ENDPOINT [ミラー化]
STATE=STARTED
AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING (ROLE = WITNESS, AUTHENTICATION = WINDOWS NEGOTIATE
, ENCRYPTION = REQUIRED ALGORITHM RC4)
GO
2.に関して
SV1,2,3共に
+++++++++++++++++++++++
(実行中)SQL Server:domein\administrator
(実行中)SQL Server Integration Service:domein\administrator
(実行中)SQL Server エージェント:domein\administrator
(実行中)SQL Full-text Filter Daemon Launcher:NT Service\MSSQLLFDLauncher
(手動)SQL Server Browser:NT AUTHORITY\LOCALSERVICE
+++++++++++++++++++++++でした。
もう一度、全てのサーバをOSからインストールしなおして同じように構築したところ今度はミラー構成が正常に完了。
唯一の違いはSV2をDCにしていなかった点です。(DCはSV1の1台)次にSV2を既存のドメインに追加する形でDCに昇格させたところ
ここでミラー構成でエラーが出るようになりました。最初に質問した状態と同じです。
確かにSQLをインストールする際に、DC警告は出ますが
まさかミラー出来ないということはないと思っていたのですが。
回避方法はあるのでしょうか? -
状況からドメインコントローラー上ではミラーリングは難しそうですね。
ドメインコントローラー上へのSQL Serverのインストール自体、Microsoftとしてはやらないでくださいというスタンスだったはずなので、一部期待通りに動作しないのも止む無しかなとは思います。あとは検証したい事項にもよりますが、証明書とSQL Server認証による構成を試してみるというぐらいでしょうか。
MCITP(Database Developer/Database Administrator)