前のトピック: ハイ アベイラビリティ シナリオのハートビートの無効化: stop_is_alive()次のトピック: ハイ アベイラビリティ シナリオのハートビートの有効化: start_is_alive()


ハイ アベイラビリティ シナリオでスイッチオーバー: switchover()

switchover API 関数を使用すると、スイッチオーバー操作を実行できます。

フル システムのハイ アベイラビリティ シナリオで、任意のレプリカ サーバへのスイッチオーバー操作を実行できます。 非フェールオーバー レプリカ サーバにスイッチオーバーする場合、スイッチオーバー API を呼び出す前に、execute_action API を呼び出します。

注: execute_action API は、例で記述されています。

引数

switchover API 関数には、以下のテーブルに記述されている引数が含まれています。

名前

タイプ

説明

session_id

uint

create_session API をコールすることで返されたセッション ID。

scenario_id

uint

スイッチオーバー操作を実行するシナリオ ID。

execute_sync

bool

この API を同期または非同期でコールするかどうかを指定します。

run_reverse_scenario

bool

スイッチオーバー操作が発生した後に、バックワード シナリオを実行または実行しません。

err_message

out string

この API が失敗する時に、その失敗の理由が含まれます。

戻り値

戻り値のタイプはブールです。 戻り値が true の場合、API は正常に完了しています。 戻り値が false の場合、API は正常に完了しませんでした。 戻り値が false の場合は、メッセージを確認して API が失敗した理由を特定してください。

例 1

public bool switchover_example()
        {
            try
            {
                uint scenario_id = _ha_scenario_id;
                string err_messages = "";
                bool execute_sync = true;
                bool run_reverse_scenario = false;
                return get_mng().switchover(_session_id, scenario_id, execute_sync, run_reverse_scenario, out err_messages);
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }
            return false;
        }

例 2

public bool switchover_2nd_example()
        {
            try
            {
set_xcmd_data("switchover", "switchover_index","3" );
                uint scenario_id = _ha_scenario_id;
                string err_messages = "";
                bool execute_sync = true;
                bool run_reverse_scenario = false;
                return get_mng().switchover(_session_id, scenario_id, execute_sync, run_reverse_scenario, out err_messages);
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }
            return false;
        }

例 3

デフォルトでは、Replication and High Availability は、事前定義済みのフェールオーバ、レプリカ サーバへのスイッチオーバー操作を実行します。 フル システムのハイ アベイラビリティ シナリオで、非フェールオーバ レプリカ サーバへのスイッチオーバーを実行できます。 ただし、スイッチオーバー API を使用して、非フェールオーバ サーバにスイッチオーバーする場合は、以下の例に示すように、スイッチオーバー API を呼び出す前に、execute_action API を呼び出します。

set_xcmd_data("switchover", "switchover_index","3" );

public bool set_xcmd_data(string cmd_name_str,string cmd_data_str,string cmd_value_str)
        {
            try
            {
                string result_data = "";
                string action_data;

                XmlDocument doc = new XmlDocument();
                XmlNode actions = doc.CreateNode(XmlNodeType.Element, xomngapi.WANSync_c.xo_actions, "");

                XmlNode commonNode = doc.CreateNode(XmlNodeType.Element, xomngapi.WANSync_c.action_common_lab, "");
                XmlAttribute attrSession = doc.CreateAttribute(xomngapi.WANSync_c.action_com_session_id);
                XmlAttribute attrScenario = doc.CreateAttribute(xomngapi.WANSync_c.action_com_scenario_id);
                XmlAttribute attrHostindex = doc.CreateAttribute(xomngapi.WANSync_c.action_com_host_index);
                XmlAttribute attrUsedfor = doc.CreateAttribute(xomngapi.WANSync_c.action_used_for);

                attrSession.Value = xomngapi.WANSync_c.WANSync.session_id.ToString();
                attrScenario.Value = this.id.ToString();
                attrUsedfor.Value = xomngapi.WANSync_c.action_x_command_data;

                commonNode.Attributes.Append(attrSession);
                commonNode.Attributes.Append(attrScenario);
                commonNode.Attributes.Append(attrHostindex);
                commonNode.Attributes.Append(attrUsedfor);

                XmlNode xo_cmd = doc.CreateNode(XmlNodeType.Element, xomngapi.WANSync_c.xo_cmd, "");
                XmlAttribute cmd_name = doc.CreateAttribute(xomngapi.WANSync_c.action_cmd_name);
                XmlAttribute cmd_data = doc.CreateAttribute(xomngapi.WANSync_c.action_cmd_data);
                XmlAttribute cmd_value = doc.CreateAttribute(xomngapi.WANSync_c.action_cmd_value);

                cmd_name.Value = cmd_name_str;
                cmd_data.Value = cmd_data_str;
                cmd_value.Value = cmd_value_str;

                xo_cmd.Attributes.Append(cmd_name);
                xo_cmd.Attributes.Append(cmd_data);
                xo_cmd.Attributes.Append(cmd_value);

                actions.AppendChild(commonNode);
                commonNode.AppendChild(xo_cmd);
                doc.AppendChild(actions);
                action_data = doc.OuterXml;
                string error;
                return get_mng().execute_action(action_data, true, out result_data, out error);
            }
            catch (System.Exception)
            {
                return false;
            }