新規Dgraphリーダーの指名

appointNewDgraphLeader.shスクリプトを使用して、データベースの新規Dgraphリーダーを指名できます。

このスクリプトのユースケースは、長時間の収集がDgraph HDFSエージェントで進行中の場合、およびなんらかの理由でDgraphが停止する場合です。新しい書込みリクエストが発生するまで待機するのではなく、管理者は、このスクリプトを実行するだけで、別のマシンで(同じデータベースの)収集を再起動できます。(ファイルは、収集の正確な進捗状況を記録するHDFSに保持されます。新しく指名されたDgraph HDFSエージェント・リーダーは、ファイルを読み取り、どの時点で収集を選択するかを認識します。)

たとえば、Dgraph_AのDgraph HDFSエージェントは、Dgraphがクラッシュする(結果として収集が中断される)と(EdpTestというデータベースで)収集を実行しています。スクリプトが実行されると、EdpTestデータベースの新しいリーダーをDgraph_Bにでき、この場合、Dgraphが停止した(Dgraph_BがDgraph_Aのかわりに収集を実行していることを除く)時点で収集が選択されます。データベースはDgraph間で共有されているため、新しリーダーによって収集を再開できます。

スクリプトが実行され、その間に新しいリーダーが指名された場合、スクリプトは基本的に同じリーダーを再指名します。

スクリプトを実行するための構文は、次のとおりです。
./appointNewDgraphLeader.sh <dg_address> <database_name>
説明:
  • dg_addressはFQDN (完全修飾ドメイン名)で、Dgraph Gatewayサーバーのポートです。
  • database_nameは収集のためのデータベースの名前です。
たとえば、(前述の例でEdpTestデータベースを使用すると)次のようになります。
./appointNewDgraphLeader.sh web009.us.example.com:7003 EdpTest

データベースの新しいDgraphリーダーを指名するには、次の手順を実行します。

  1. $DGRAPH_HOME/dgraph-hdfs-agent/binディレクトリに移動します。
  2. 前述の例に示すように、appointNewDgraphLeader.shスクリプトを、FQDNおよびDgraph Gatewayのポート、およびデータベース名を使用して実行します。
新しいDgraphリーダーが正常に指名された場合、スクリプトは次のメッセージを返します。
New Dgraph Leader appointed for database <database_name>
操作が失敗すると、次のいずれかのメッセージを返します。
Unable to appoint new Dgraph leader

Could not reach Dgraph gateway

試行が失敗するのは、Dgraph Gatewayのアドレスが正しくないことが原因である可能性があります。