このセクションでは,バックアップの作成と,バックアップからのMySQL集群レプリケーションを使用したリストアについて説明します。レプリケ,ションサ,バ,は,前に説明したとおりにすでに構成されたものとします(セクション18.6.5 "レプリケ,ションのためのMySQL集群の準備"およびその直後のセクションを参照してください)。これがすでに行われている場合,バックアップを作成してそのバックアップからリストアする手順は次のとおりです。
バックアップを開始するには,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"
方法b
my.cnf
ファ电子邮箱ルで,管理ホストを検出する場所が指定されていない場合,开始备份
コマンドの一部としてこの情報をNDB
管理クラesc escアントに渡すことで,バックアッププロセスを起動できます。ここで示すように,これを実行できます。ここで,management_host
と港口
は管理サ,バ,のホスト名とポ,ト番号です。壳牌米> ndb_mgmmanagement_host:港口-e "START BACKUP"
前に述べたようなシナリオの場合(セクション18.6.5 "レプリケ,ションのためのMySQL集群の準備"を参照してください),これは次のように実行されます。
壳牌米> ndb_mgm rep-master:1186 -e "START BACKUP"
オンランにされているスレブにクラスタのバックアップファルをコピします。マスタ,クラスタのndbdプロセスを動作している各システムには,そのシステム上にクラスタのバックアップファイルが配置され,これらのすべてのファルがスレブにコピされ,正常なリストアを確実に行う必要があります。バックアップファイルは,スレーブの管理ホストが存在するコンピュータ上のどのディレクトリにもコピーできますが,MySQLおよびNDBバイナリがそのディレクトリの読み取り権限を持っている場合にかぎります。このケスでは,このファルがディレクトリ
/var/BACKUPS/BACKUP-1
にコピ,されたものとします。スレ,ブクラスタがマスタ,と同じndbdプロセス(データノード)番号を持つ必要はありませんが,この番号を同じ番号にすることを強くお勧めします。レプリケ,ションプロセスの不適切な起動を防ぐには,スレ,ブを
——skip-slave-start
オプションで起動する必要があります。マスタ,クラスタに存在し,スレ,ブに複製するデ,タベ,スをスレ,ブクラスタに作成します。
重要複製する各デ,タベ,スに対応する
创建数据库
(または)创建模式
)ステ,トメントは,スレ,ブクラスタの各SQLノ,ドで実行します。MySQL Monitorでこのステ,トメントを使用してスレ,ブクラスタをリセットします。
mysql年代>复位slave;
リストアプロセスを実行する前に,スレ,ブの
ndb_apply_status
テ,ブルにレコ,ドが含まれていないことを確認することが重要です。これを行うには,スレーブでこの SQL ステートメントを実行します。mysql年代删除mysql.ndb_apply_status;
これで,各バックアップファ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集群バックアップのリストア"を参照してください。)ここで,スレ,ブの
ndb_apply_status
テブルから最新のエポックを取得する必要があります(セクション18.6.8“MySQL集群レプリケーションを使用したフェイルオーバーの実装”で説明したとおりです)。mysql年代SELECT @latest:=MAX(epoch) FROM mysql.ndb_apply_status;
前のステップで取得したエポック値として
@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;
現在レプリケ,ショントラフィックがない場合,マスタ,で
显示主机状态
を実行して,文件
カラムに表示されるすべてのファ▪▪ルに対してい▪▪ばん大きな値のサフィクスを持▪▪名前のファ▪▪ルの位置
カラムの値を使用すると,この情報を取得できます。ただしこの場合,これを指定し,その内容を次のステップで手動で指定するか,スクリプトで出力を解析して指定する必要があります。前のステップで取得した値を使用すると,スレ,ブのmysqlクラ@ @アントで適切な
将master更改为
ステ,トメントを発行できるようになります。mysql年代> CHANGE MASTER TO -> MASTER_LOG_FILE='@file', -> MASTER_LOG_POS=@pos;
スレブはどのバナリログファルのどの点から読み取りを開始するかがマスタから「わかる」ようになるため,スレ,ブはこの標準MySQLステ,トメントで複製を開始できます。
mysql年代>启动从站;
セカンダリレプリケーションチャネルでバックアップとリストアを実行するために必要なことは,必要に応じて,プライマリのマスターとスレーブのレプリケーションサーバーのホスト名とIDに代わって,セカンダリのマスターとスレーブのホスト名とIDを使用し,前述のステートメントを実行するステップを繰り返すだけです。
クラスタのバックアップの実行とバックアップからのクラスタのリストアに関する詳細は,セクション18.5.3“MySQL集群のオンラescンバックアップ”を参照してください。