sql >> データベース >  >> RDS >> Mysql

MicrosoftAzureを使用したMySQLクラウドのバックアップと復元のシナリオ

    大惨事が発生したときにビジネスを保護する必要があるため、バックアップはデータベース操作の非常に重要な部分です。その時が来たら(そしてそうなるでしょう)、目標復旧時点(RPO)と目標復旧時間(RTO)を事前に定義する必要があります。これは、発生したインシデントから復旧できる速度です。

    ほとんどの組織は、サーバーイメージのバックアップ(スナップショット)、論理バックアップ、および物理バックアップの組み合わせを試みて、バックアップへのアプローチを変えています。これらのバックアップは、ローカルまたは地域の災害を回避するために、複数の場所に保存されます。また、データを最短時間で復元できるため、会社のビジネスに影響を与える可能性のある大きなダウンタイムを回避できます。

    Microsoft Azureなどのクラウドプロバイダー(このブログで説明します)を使用してデータベースをホストすることも例外ではありません。ディザスタリカバリポリシーを準備して定義する必要があります。

    >

    他のパブリッククラウド製品と同様に、Microsoft Azure(Azure)は、実用的で費用効果が高く、リカバリオプションを提供するように設計されたバックアップのアプローチを提供します。 Microsoft Azureバックアップソリューションを使用すると、構成と操作が可能になり、AzureBackupまたはRestoreServices Vault(仮想マシンを使用してデータベースを操作している場合)を使用して簡単に処理できます。

    クラウドにマネージドデータベースが必要な場合、AzureはMySQL用のAzureデータベースを提供します。これは、MySQLデータベースを自分で操作および管理したくない場合にのみ使用してください。このサービスは、ローカルリージョンから、または地理的に冗長な場所を介して、データベースインスタンスのバックアップを作成できるバックアップ用の豊富なソリューションを提供します。これは、データの回復に役立ちます。特定の期間からノードを復元できる場合もあります。これは、ポイントインタイムリカバリを実現するのに役立ちます。これはワンクリックで実行できます。

    このブログでは、MicrosoftAzureクラウド上のMySQLデータベースを使用したこれらのバックアップと復元のシナリオをすべて取り上げます。

    Azure上の仮想マシンでバックアップを実行する

    残念ながら、Microsoft Azureは、MySQL固有のバックアップタイプのソリューション(MySQL Enterprise Backup、Percona XtraBackup、MariaDBのMariabackupなど)を提供していません。

    (ポータルを使用して)仮想マシンを作成したら、RestoreServicesボールトを使用してVMをバックアップするプロセスを設定できます。これにより、インシデント、災害、または大惨事から保護され、保存されるデータはデフォルトで暗号化されます。暗号化の追加はオプションであり、Azureで推奨されていますが、価格が付いています。詳細については、AzureBackupPricingページをご覧ください。

    バックアップを作成および設定するには、左側のパネルに移動し、[すべてのリソース]→[コンピューティング]→[仮想マシン]をクリックします。次に、テキストフィールドに必要なパラメータを設定します。そのページが表示されたら、[管理]タブに移動し、下にスクロールします。バックアップを設定または作成する方法を確認できます。以下のスクリーンショットを参照してください:

    次に、バックアップ要件に基づいてバックアップポリシーを設定します。 [バックアップポリシー]テキストフィールドの[新規作成]リンクをクリックするだけで、新しいポリシーを作成できます。以下を参照してください:

    週、月、および年ごとに保持するバックアップポリシーを構成できます。

    バックアップを構成したら、作成した特定の仮想マシンでバックアップが有効になっていることを確認できます。以下のスクリーンショットを参照してください:

    Azureで仮想マシンを復元および回復する

    Azureでのリカバリの設計は、アプリケーションに必要なポリシーと要件の種類によって異なります。また、インシデントが発生した場合やメンテナンス中に、RTOとRPOが低くなければならないか、ユーザーに見えないようにする必要があるかによっても異なります。可用性セットを使用して、または別の可用性ゾーンに仮想マシンをセットアップして、より高いリカバリ率を実現できます。

    VMのディザスタリカバリを設定して、ビジネス継続性とディザスタリカバリのニーズに合わせて仮想マシンを別のAzureリージョンにレプリケートすることもできます。ただし、これはコストが高いため、組織にとっては良い考えではない場合があります。配置されている場合、Azureは、作成されたバックアップから仮想マシンを復元または作成するオプションを提供します。

    たとえば、仮想マシンの作成中に、[ディスク]タブに移動してから、[データディスク]に移動できます。使用可能なスナップショットをアタッチできる既存のディスクを作成またはアタッチできます。スナップショットまたはストレージBLOBから選択できる以下のスクリーンショットを参照してください。

    スクリーンショットのように、特定の時点で復元することもできます以下:

    Azureでの復元はさまざまな方法で実行できますが、同じものを使用しますすでに作成したリソース。

    たとえば、Azure Storage BLOBに格納されたスナップショットまたはディスクイメージを作成した場合、新しいVMを作成した場合、互換性があり、使用できる限り、そのリソースを使用できます。さらに、以下のスクリーンショットのようにVMを復元する以外に、ファイルの回復を実行できる場合もあります。

    ファイルの回復中に、特定の回復ポイントから選択できる場合があります、およびファイルを参照および回復するためのスクリプトをダウンロードします。これは、特定のファイルのみが必要で、システム全体やディスクボリュームは必要ない場合に非常に役立ちます。

    既存のVMのバックアップからの復元には約3分かかります。ただし、バックアップから復元して新しいVMを生成するには、12分かかります。ただし、これはVMのサイズとAzureで使用可能なネットワーク帯域幅によって異なる場合があります。良い点は、復元するときに、完了した内容と残り時間の詳細が表示されることです。たとえば、以下のスクリーンショットを参照してください。

    MySQL用Azureデータベースのバックアップ

    Azure Database for MySQLは、MicrosoftAzureによるフルマネージドデータベースサービスです。このサービスは、バックアップおよび復元機能をセットアップするための非常に柔軟で便利な方法を提供します。

    MySQLサーバーインスタンスを作成したら、バックアップの保持を設定し、バックアップの冗長性オプションを作成できます。ローカル冗長(ローカル領域)または地理冗長(別の領域)のいずれか。 Azureは、1か月に請求される推定コストを提供します。以下のサンプルスクリーンショットを参照してください:

    地理的に冗長なバックアップオプションは、汎用でのみ使用できることに注意してくださいおよびメモリ最適化タイプの計算ノード。基本コンピューティングノードでは使用できませんが、ローカルリージョンで(つまり、使用可能な可用性ゾーン内で)冗長性を持たせることができます。

    マスターセットアップが完了したら、MySQLサーバー用のAzureデータベース→MyQLインスタンスの選択→レプリケーション→に移動し、[レプリカの追加]をクリックしてレプリカを簡単に作成できます。レプリカは、必要に応じてソースまたは復元ターゲットとして使用できます。

    Azureでは、マスターとレプリカ間のレプリケーションを停止すると、レプリカがスタンドアロンサーバーになるため、これは永久に元に戻せなくなることに注意してください。 Microsoft Azureを使用して作成されたレプリカは、理想的にはマネージドインスタンスであり、通常のマスタースレーブレプリケーションで行うのと同じようにレプリケーションスレッドを停止および開始できます。再起動を行うことができ、それだけです。マスターまたはバックアップからの復元(ポイントインタイムリカバリなど)によってレプリカを手動で作成した場合は、必要に応じてレプリケーションスレッドを停止/開始したり、スレーブラグを設定したりできます。

    バックアップからMySQL用のAzureデータベースを復元する

    Azureポータルを使用すると、復元が非常に簡単かつ迅速になります。以下のスクリーンショットに示すように、MySQLインスタンスノードで復元ボタンを押すだけで、UIに従うことができます。

    次に、期間を選択して、新しいインスタンスを作成/生成できますキャプチャされたこのバックアップに基づく:

    ノードを使用可能にすると、このノードはまだマスター。利用可能なストアドプロシージャを使用して、簡単な手順でこれを手動で設定する必要があります:

    CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', 3306, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');

    ここで、

    master_host:マスターサーバーのホスト名

    master_user:マスターサーバーのユーザー名

    master_password:マスターサーバーのパスワード

    master_log_file:実行中のshowmasterstatusからのバイナリログファイル名

    master_log_pos:showmasterstatusの実行からのバイナリログの位置

    master_ssl_ca:CA証明書のコンテキスト。 SSLを使用しない場合は、空の文字列を渡します。

    次に、MySQLスレッドの開始は次のとおりです。

    CALL mysql.az_replication_start;

    または、次のようにレプリケーションスレッドを停止できます

    CALL mysql.az_replication_stop;

    または、マスターを次のように削除できます

    CALL mysql.az_replication_remove_master;
    またはSQLスレッドエラーをスキップします

    CALL mysql.az_replication_skip_counter;

    前述のように、MySQLインスタンスの[レプリカの追加]機能でMicrosoft Azureを使用してレプリカを作成する場合、これらの特定のストアドプロシージャは使用できません。ただし、Azureによって管理対象レプリカのレプリケーションスレッドを停止または開始することは許可されていないため、mysql.az_replication_restartプロシージャは使用できます。したがって、上記の例は、マスターの完全なコピーを取得するが、単一ノードとして機能し、既存のマスターのレプリカになるように手動でセットアップする必要があるマスターから復元されました。

    さらに、セットアップした手動レプリカがある場合、MySQLサーバー用のAzureデータベース→MyQLインスタンスの選択→レプリケーションを手動で作成またはセットアップしたため、これを表示することはできません。 。

    代替のクラウドおよび復元バックアップソリューション クラウドでMySQLデータベースの完全バックアップを作成するときに、フルアクセスが必要な特定のシナリオがあります。これを行うには、独自のスクリプトを作成するか、オープンソーステクノロジを使用できます。これらを使用すると、MySQLデータベースのデータをバックアップする方法と正確に保存する方法を制御できます。

    Azureコマンドラインインターフェイス(CLI)を利用して、カスタム自動化を作成することもできます。たとえば、AzureCLIで次のコマンドを使用してスナップショットを作成できます。

    az snapshot create  -g myResourceGroup -source "$osDiskId" --name osDisk-backup

    または、次のコマンドを使用してMySQLサーバーのレプリカを作成します。

    az mysql server replica create --name mydemoreplicaserver --source-server mydemoserver --resource-group myresourcegroup

    または、復元オプションを使用してバックアップを取る方法を備えたエンタープライズツールを活用することもできます。オープンソーステクノロジーまたはサードパーティツールを使用するには、独自の実装を活用および作成するための知識とスキルが必要です。活用できるリストは次のとおりです。

    • ClusterControl -少し偏っているかもしれませんが、ClusterControlは、バトルテスト済みのオープンソーステクノロジー(PXB、Mariabackup、mydumper)を使用して、MySQLデータベースの物理的および論理的なバックアップを管理する機能を提供します。 MySQL、Percona、MariaDB、Galeraデータベースをサポートします。バックアップポリシーを簡単に作成し、データベースのバックアップを任意のクラウド(AWS、GCP、またはAzure)に保存できます。無料バージョンのClusterControlにはバックアップ機能が含まれていないことに注意してください。
    • LVMスナップショット -LVMを使用して、論理ボリュームのスナップショットを作成できます。ブロックレベルのストレージへのアクセスが必要なため、これはVMにのみ適用されます。このツールを使用すると、バックアップの実行中にデータベースノードが応答しなくなる可能性があるため、注意が必要です。
    • Percona XtraBackup(PXB) -Perconaのオープンソーステクノロジー。 PXBを使用すると、MySQLデータベースの物理バックアップコピーを作成できます。 InnoDBストレージエンジンのPXBを使用してホットバックアップを実行することもできますが、これをスレーブまたは非ビジーのMySQLデータベースサーバーで実行することをお勧めします。これは、データベースサーバー自体へのバイナリまたはファイルアクセスが必要なため、VMインスタンスにのみ適用されます。
    • マリアバックアップ -PXBと同じように、PXBから分岐したオープンソーステクノロジーですが、MariaDBによって維持されています。具体的には、データベースでMariaDBを使用している場合は、テーブルスペースとの非互換性の問題を回避するために、Mariabackupを使用する必要があります。
    • mydumper / myloader -これらのバックアップツールは、MySQLデータベースの論理バックアップコピーを作成します。これは、MySQL用のAzureデータベースで使用できますが、バックアップと復元の手順でこれがどれほど成功するかは試していません。
    • mysqldump -これは論理バックアップツールであり、特定のテーブルまたはデータベースを別のインスタンスにバックアップおよびダンプ(または復元)する必要がある場合に非常に便利です。これはDBAによって一般的に使用されますが、論理バックアップコピーは物理バックアップに比べて巨大であるため、ディスク容量に注意する必要があります。
    • MySQL Enterprise Backup -Linux、Windows、Mac、Solarisなどの複数のプラットフォームでホットなオンラインのノンブロッキングバックアップを提供します。これは無料のバックアップツールではありませんが、多くの機能を提供します。
    • rsync -これは、高速で非常に用途の広いファイルコピーツールです。ローカルで、リモートシェルを介して別のホストとの間で、またはリモートのrsyncデーモンとの間でコピーできます。動作のあらゆる側面を制御し、コピーするファイルのセットを非常に柔軟に指定できるようにする多数のオプションを提供します。ほとんどのLinuxシステムでは、rsyncはOSパッケージの一部としてインストールされます。

    1. sqliteデータベースで日付を並べ替えますか?

    2. mysqlのグループごとの行番号

    3. MySQLサーバーのInnoDBバッファープールサイズの計算

    4. すべての見積もり問題の前にスラッシュ