可用性グループデータベースが同期なし/回復保留モードでスタックしている


12

SQL Server 2014 SP1(12.0.4422.0)インスタンスのストレージをアップグレードしているときに、SQL Serverの再起動後に2つのデータベースがセカンダリで起動しないという問題が発生しました。新しい(大きい)SSDを取り付け、データファイルを新しいボリュームにコピーしている間、サーバーは数時間オフラインでした。SQL Serverを再起動すると、2つを除くすべてのデータベースが再び同期を開始しました。他の2つは、SSMS で同期なし/回復保留中と表示されました。

SSMSが同期していない/リカバリが保留中

以前に同様の同期しない/回復中の問題があったため、可用性グループ->可用性データベースセクションでステータスを確認しましたが、赤いXが表示されていました。

可用性グループ、可用性データベース

データ移動を一時停止しようとすると、エラーメッセージが生成されました。

可用性グループ「SENetwork_AG」の可用性レプリカ「ny-sql03」にあるデータベース「StackExchange.Bycycles.Meta」でのデータ移動の一時停止に失敗しました。(Microsoft.SqlServer.Smo)

追加情報:Transact-SQLステートメントまたはバッチの実行中に例外が発生しました。(Microsoft.SqlServer.ConnectionInfo)

ファイル「StackExchange.Bycycles.Meta」にアクセスできません。ファイルにアクセスできないか、メモリまたはディスク領域が不足しています。詳細については、SQL Serverエラーログを参照してください。(Microsoft SQL Server、エラー:945)

チェックしたところ、ファイルは存在し、権限の問題はありませんでした。また、管理下のSSMSでSQL Serverログを確認しましたが、保留中の回復や2つのデータベースの問題については何も表示されませんでした。

ヘルプを検索したところ、データベースを復元する必要があると述べた2つの異なる記事が見つかりました。

データベースがリカバリ保留状態でスタックしているときに、セカンダリでデータレプリケーションを再開する方法はありますか?

回答:


16

サーバーがしばらくオフラインだったので、プライマリのリカバリウィンドウの外に出た可能性があると考えました。私たちは、試してみることにした最新のトランザクションログを適用することは、回復プロセスをキックスタートするかどうかを確認するためにデータベースに:

-- Remove database from Availability Group:    
Alter Database [StackExchange.Bicycles.Meta] SET HADR OFF;

-- Apply t-logs to catch up. This can be done manually in SSMS or via:
RESTORE LOG [StackExchange.Bicycles.Meta] FROM DISK = '\\ny-back01\backups\SQL\_Trans\SENetwork_AG\StackExchange.Bicycles.Meta\StackExchange.Bicycles.Meta_LOG_20160217_033201.trn' WITH NORECOVERY;

-- Re-join database to availability group
ALTER DATABASE [StackExchange.Bicycles.Meta] SET HADR AVAILABILITY GROUP = [SENetwork_AG];
ALTER DATABASE [StackExchange.Bicycles.Meta] SET HADR RESUME;

両方のデータベースのセカンダリサーバーで上記を実行した後、再度同期を開始できました。

更新:手動AGフェールオーバーの後に、新しいプライマリレプリカ上のデータベースの1つが同期ないモードでスタックした(SQLサーバーの再起動後に同期ない/回復保留に切り替えられた)と同様の問題があり、上記の手順がそれを解決するために機能しました同様に問題。


1

AAGからDBを削除し、プライマリノードで完全バックアップとトランザクションバックアップを作成し、これら2つのバックアップをセカンダリノードのDBに復元してから、DBをAAGに再度追加します。現時点では、セカンダリノードDBが同期していないことを示している可能性がありますが、2番目の回答(ペナルティが課された方法を購入する-2)で提案されていることを実行しているだけで、セカンダリノードをプライマリに移動すると修正されます。


-2

次回は、プライマリを「同期していない」セカンダリにフェイルオーバーして、もう一度戻します。セカンダリは今同期する必要があります。


3
これは恐ろしい提案です。
アルカイン

この提案はデータの損失を引き起こす可能性があります
Aleksey Vitsko
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.