10bet网址
MySQL 5.6リファレンスマニュアル
下载本手册

18.6.9 MySQL集群レプリケーションを使用したMySQL集群バックアップ

このセクションでは,バックアップの作成と,バックアップからのMySQL集群レプリケーションを使用したリストアについて説明します。レプリケ,ションサ,バ,は,前に説明したとおりにすでに構成されたものとします(セクション18.6.5 "レプリケ,ションのためのMySQL集群の準備"およびその直後のセクションを参照してください)。これがすでに行われている場合,バックアップを作成してそのバックアップからリストアする手順は次のとおりです。

  1. バックアップを開始するには,2の異なる方法があります。

    • 方法aこの方法では,レプリケーションプロセスを開始する前に,クラスタのバックアッププロセスがマスターサーバーで有効になっている必要があります。これを行うには,my.cnf文件(mysql_cluster)セクションに次の行を加えます。ここで,management_hostはマスタ,クラスタに対するNDB管理サ,バ,のIPアドレスまたはホスト名であり,港口は管理サ,バ,のポ,ト番号です。

      ndb-connectstring =management_host[:港口
      注記

      ポート番号は,デフォルトのポート(1186)が使用されていない場合にのみ,指定する必要があります。MySQL集群でのポ,トおよびポ,トの割り当てに関する詳細は,セクション18.2.4“MySQL集群の初期構成”を参照してください。

      この場合,バックアップは,このステ,トメントをレプリケ,ションマスタ,で実行すると起動できます。

      壳牌> ndb_mgm -e "START BACKUP"
    • 方法bmy.cnfファ电子邮箱ルで,管理ホストを検出する場所が指定されていない場合,开始备份コマンドの一部としてこの情報をNDB管理クラesc escアントに渡すことで,バックアッププロセスを起動できます。ここで示すように,これを実行できます。ここで,management_host港口は管理サ,バ,のホスト名とポ,ト番号です。

      壳牌> ndb_mgmmanagement_host港口-e "START BACKUP"

      前に述べたようなシナリオの場合(セクション18.6.5 "レプリケ,ションのためのMySQL集群の準備"を参照してください),これは次のように実行されます。

      壳牌> ndb_mgm rep-master:1186 -e "START BACKUP"
  2. オンランにされているスレブにクラスタのバックアップファルをコピします。マスタ,クラスタのndbdプロセスを動作している各システムには,そのシステム上にクラスタのバックアップファイルが配置され,これらのすべてのファルがスレブにコピされ,正常なリストアを確実に行う必要があります。バックアップファイルは,スレーブの管理ホストが存在するコンピュータ上のどのディレクトリにもコピーできますが,MySQLおよびNDBバイナリがそのディレクトリの読み取り権限を持っている場合にかぎります。このケスでは,このファルがディレクトリ/var/BACKUPS/BACKUP-1にコピ,されたものとします。

    スレ,ブクラスタがマスタ,と同じndbdプロセス(データノード)番号を持つ必要はありませんが,この番号を同じ番号にすることを強くお勧めします。レプリケ,ションプロセスの不適切な起動を防ぐには,スレ,ブを——skip-slave-startオプションで起動する必要があります

  3. マスタ,クラスタに存在し,スレ,ブに複製するデ,タベ,スをスレ,ブクラスタに作成します。

    重要

    複製する各デ,タベ,スに対応する创建数据库(または)创建模式)ステ,トメントは,スレ,ブクラスタの各SQLノ,ドで実行します。

  4. MySQL Monitorでこのステ,トメントを使用してスレ,ブクラスタをリセットします。

    mysql年代>复位slave;

    リストアプロセスを実行する前に,スレ,ブのndb_apply_statusテ,ブルにレコ,ドが含まれていないことを確認することが重要です。これを行うには,スレーブでこの SQL ステートメントを実行します。

    mysql年代删除mysql.ndb_apply_status;
  5. これで,各バックアップファndb_restoreコマンドを使用して,レプリケ,ションスレ,ブでクラスタのリストアプロセスを起動できます。このプロセスの最初に,クラスタのメタデ,タをリストアするための- mオプションを加える必要があります。

    壳牌年代> ndb_restore -cslave_host港口- n节点编号\ - bbackup-id- m - rdir

    dirは,バックアップファルがレプリケションスレブに置かれたディレクトリへのパスです。残りのバックアップファ@ @ルに対応するndb_restoreコマンドに,- mオプションを使用しないでください。

    バックアップファ@ @ルがディレクトリ/var/BACKUPS/BACKUP-1にコピされた場所である4のデタノド(セクション18.6“MySQL集群レプリケション”の図に表示されているとおりです)を使用してマスタークラスタからリストアする場合,スレーブで実行されるコマンドの正しいシーケンスは,次のようになります。

    壳牌年代> ndb_restore -c rep-slave:1186 -n 2 -b 1 -m \ -r ./var/BACKUPS/BACKUP-1 shell年代> ndb_restore -c rep-slave:1186 -n 3 -b 1 \ -r ./var/BACKUPS/BACKUP-1 shell年代> ndb_restore -c rep-slave:1186 -n 4 -b 1 \ -r ./var/BACKUPS/BACKUP-1 shell年代> ndb_restore -c rep-slave:1186 -n 5 -b 1 -e \ -r ./var/BACKUPS/BACKUP-1 .使用实例
    重要

    エポックがスレ,ブのmysql.ndb_apply_statusに書き込まれるには,この例のndb_restoreの最後の起動に- e(または)——restore_epoch)オプションが必要です。この情報がないと,スレ,ブはマスタ,と適切に同期を取れなくなります。(セクション18.4.20”ndb_restore- MySQL集群バックアップのリストア"を参照してください。)

  6. ここで,スレ,ブのndb_apply_statusテブルから最新のエポックを取得する必要があります(セクション18.6.8“MySQL集群レプリケーションを使用したフェイルオーバーの実装”で説明したとおりです)。

    mysql年代SELECT @latest:=MAX(epoch) FROM mysql.ndb_apply_status;
  7. 前のステップで取得したエポック値として@latestを使用すると,ここで示したクエリ,を使用して,マスタ,のmysql.ndb_binlog_indexテブルから正しいバナリログファル@fileの正しい起動位置@posを取得できます。

    mysql> SELECT -> @file:=SUBSTRING_INDEX(File, '/', -1), -> @pos:=Position -> FROM mysql。ndb_binlog_index -> WHERE > @latest -> ORDER BY epoch ASC LIMIT 1;

    現在レプリケ,ショントラフィックがない場合,マスタ,で显示主机状态を実行して,文件カラムに表示されるすべてのファ▪▪ルに対してい▪▪ばん大きな値のサフィクスを持▪▪名前のファ▪▪ルの位置カラムの値を使用すると,この情報を取得できます。ただしこの場合,これを指定し,その内容を次のステップで手動で指定するか,スクリプトで出力を解析して指定する必要があります。

  8. 前のステップで取得した値を使用すると,スレ,ブのmysqlクラ@ @アントで適切な将master更改为ステ,トメントを発行できるようになります。

    mysql年代> CHANGE MASTER TO -> MASTER_LOG_FILE='@file', -> MASTER_LOG_POS=@pos;
  9. スレブはどのバナリログファルのどの点から読み取りを開始するかがマスタからわかるようになるため,スレ,ブはこの標準MySQLステ,トメントで複製を開始できます。

    mysql年代>启动从站;

セカンダリレプリケーションチャネルでバックアップとリストアを実行するために必要なことは,必要に応じて,プライマリのマスターとスレーブのレプリケーションサーバーのホスト名とIDに代わって,セカンダリのマスターとスレーブのホスト名とIDを使用し,前述のステートメントを実行するステップを繰り返すだけです。

クラスタのバックアップの実行とバックアップからのクラスタのリストアに関する詳細は,セクション18.5.3“MySQL集群のオンラescンバックアップ”を参照してください。