mysqlバックアップとリストア(一)
4520 ワード
【学習ノート】
なぜバックアップするのですか?ディザスタリカバリ:ハードウェア障害、ソフトウェア障害、自然災害、ハッカー攻撃、誤操作テストなどのデータ消失シーン
バックアップの注意点最大損失数を許容できる データを復元するには、 を完了するのにどれくらいの時間がかかりますか.リカバリする必要があるデータ ≪バックアップ・タイプ|Backup Type|oem_src≫:≪フル・バックアップ|Full Backup|oem_src≫:データセット全体の部分バックアップ:部分ライブラリやテーブルなどのデータ・サブセットのみをバックアップします.
フル・バックアップ、インクリメンタル・バックアップ、差分バックアップインクリメンタル・バックアップ:最近のフル・バックアップまたはインクリメンタル・バックアップ(インクリメンタルがある場合)以降に変化したデータのみをバックアップします.バックアップが速く、複雑な差分バックアップをリストアします.最近のフル・バックアップ以降に変化したデータのみをバックアップします.バックアップが遅く、リストアが簡単です.注意:バイナリ・ログ・ファイルはデータ・ファイルと同じディスクに置くべきではありません.
コールド、温、ホット・バックアップ冷備:読み書き操作は 不可温備:読み取り操作が実行可能;ただし、書き込み操作は実行できない ホットスペア:読み書き操作は を実行できます.
MyISAM:温備、熱備InnoDBをサポートしない:いずれもサポートする
物理および論理バックアップ物理バックアップ:データファイルを直接コピーしてバックアップを行い、ストレージエンジンと関係があり、多くの空間を占有し、速度が 速い.論理バックアップ:データベースからデータを「エクスポート」して保存するバックアップは、ストレージエンジンに関係なく、占有スペースが少なく、速度が遅く、精度が失われる可能性があります .
バックアップ時に考慮すべき要因温製のロックはどのくらい ですか?バックアップによる負荷 バックアッププロセスの時間 回復プロセスの時間長 バックアップデータ バイナリ・ログ、InnoDBのトランザクション・ログ プログラムコード(ストアドプロシージャ、関数、トリガ、イベントスケジューラ) サーバのプロファイル cp,tarなどのレプリケーションアーカイブツール:物理バックアップツール、すべてのストレージエンジンに適用;冷却のみをサポートします.完全および部分バックアップ LVMのスナップショット:先にロックをかけて、スナップショットをしてからロックを解除して、ほとんどホットスペアです;ファイルシステムツールによるバックアップ mysqldump:論理バックアップツール、すべてのストレージエンジンを適用し、温備;完全または一部のバックアップをサポートします.InnoDBストレージエンジンに対してホットスペアをサポートし、binlogのインクリメンタルバックアップ を結合する. xtrabackup:PerconaがInnoDBのホットスペア(物理バックアップ)をサポートするツールを提供し、フルバックアップ、インクリメンタルバックアップ をサポートする. MariaDB Backup:MariaDB 10.1.26から統合を開始し、PerconaXtraBackup 2.3.8に基づいて を実現 mysqlbackup:ホットバックアップ、MySQL Enterprise Editionコンポーネント mysqlhotcopy:PERL言語で実装され、ほとんど冷却され、MyISAMストレージエンジンのみに適用されます. は、LOCK TABLES、FLUSH TABLES、およびcpまたはscpを使用して、データベース を迅速にバックアップする.
コールドバックアップ:(2台のホストシミュレーションを使用し、そのうちの1台(A)は作業ホストとしてそのデータをバックアップし、バックアップデータを別のホスト(B)に回復する)
1.mysqlサービスの停止
2.データベース・ディレクトリ全体の圧縮パッケージング・データベース・データ・ファイルをデフォルト/var/lib/mysql/下に保存
3.圧縮パッケージを別のホストにコピーする(B)
4.ホストBでファイルを/var/lib/mysql/下に解凍し、データベースを起動します.
LVMベースのバックアップ
(1)すべてのテーブルmysql>FLUSH TABLES WITH READ LOCKのロックを要求する.(2)バイナリログファイル及びイベント位置mysql>FLUSH LOGSを記録する.mysql> SHOW MASTER STATUS; mysql-e'SHOW MASTER STATUS'>/PATH/DO/SomeEFILE(3)スナップショットlvcreate-L#-s-pr-n NAME/DEP/VG_を作成NAME/LV_NAME(4)ロック解除mysql>UNLOCK TABLES;(5)スナップショットボリュームをマウントし、データバックアップを実行する(6)バックアップが完了した後、スナップショットボリュームを削除する(7)ポリシーを制定し、元のボリュームからバイナリログをバックアップする
実験:完全にバックアップし、最新の状態に復元
1 vim/etc/myの準備cnf [mysqld] log-bin=/data/binlog/mysql-bin datadir=/var/lib/mysql
2 mysqldump-A-F--single-transaction--master-data=2|gzip>/data/allをバックアップする.sql.gzはデータの変更を継続する
3シミュレーション破壊systemctl stop mariadb rm-rf/var/lib/mysql/*
リストア時にユーザがデータベースにアクセスすることを禁止するiptables 4をバックアップ時状態systemctl start mariadb gzip-d/data/allにリストアする.sql.gz mysql > set sql_log_bin=off; > source/data/all.sql;
5最新状態grep"CHANGE MASTER"/data/allに復元する.sql position mysql-binを表示します.000002 245
cd/data/binlog/mysqlbin --start-position=245 mysql-bin.000002 >/data/incr.sql mysqlbin mysql-bin.000003 >>/data/incr.sql mysqlbin mysql-bin.000004 >>/data/incr.sql
mysql > set sql_log_bin=off; > source/data/incr.sql; > set sql_log_bin=on;
6オープンユーザーアクセスデータベース
実験:誤って削除されたテーブルを復元
1準備、バイナリログ機能有効
2 mysqldump-A-F--single-transaction--master-data=2|gzip>/data/allを完全バックアップする.sql.gz
3データベースの変更
4テーブル10:00 drop table testlogを削除
5データベースの変更10:10
6 flush tables with read lockユーザーアクセス禁止ユーザー数
7バックアップ時の状態systemctl stop mariadb rm-rf/var/lib/mysql/*systemctl start mariadb gzip-d/data/allに復元する.sql.gz mysql > set sql_log_bin=off; > source/data/all.sql;
8バイナリログを分析し、drop table指令grep-i「change master」/data/allを見つけた.sql 245 mysql-bin.000002 mysqlbinlog --start-position=245 mysql-bin.000002 >/data/incr.sql vim /data/incr.sql drop table命令を見つけて、この命令に注釈します
mysqlbinlog mysql-bin.000003 >>/data/incr.sql mysqlbinlog mysql-bin.000004 >>/data/incr.sql
9最新状態mysql>set sql_に復元log_bin=off; > source/data/incr.sql; > set sql_log_bin=on;
10データの完全性の確認
11オープンユーザーアクセス
なぜバックアップするのですか?ディザスタリカバリ:ハードウェア障害、ソフトウェア障害、自然災害、ハッカー攻撃、誤操作テストなどのデータ消失シーン
バックアップの注意点
フル・バックアップ、インクリメンタル・バックアップ、差分バックアップインクリメンタル・バックアップ:最近のフル・バックアップまたはインクリメンタル・バックアップ(インクリメンタルがある場合)以降に変化したデータのみをバックアップします.バックアップが速く、複雑な差分バックアップをリストアします.最近のフル・バックアップ以降に変化したデータのみをバックアップします.バックアップが遅く、リストアが簡単です.注意:バイナリ・ログ・ファイルはデータ・ファイルと同じディスクに置くべきではありません.
コールド、温、ホット・バックアップ
MyISAM:温備、熱備InnoDBをサポートしない:いずれもサポートする
物理および論理バックアップ
バックアップ時に考慮すべき要因
バックアップツール
コールドバックアップ:(2台のホストシミュレーションを使用し、そのうちの1台(A)は作業ホストとしてそのデータをバックアップし、バックアップデータを別のホスト(B)に回復する)
1.mysqlサービスの停止
2.データベース・ディレクトリ全体の圧縮パッケージング・データベース・データ・ファイルをデフォルト/var/lib/mysql/下に保存
tar Jcvf /data/mysql.bak.tar.xz /var/lib/mysql/
3.圧縮パッケージを別のホストにコピーする(B)
scp mysql.bak.tar.xz 192.168.36.27:/data/
4.ホストBでファイルを/var/lib/mysql/下に解凍し、データベースを起動します.
LVMベースのバックアップ
(1)すべてのテーブルmysql>FLUSH TABLES WITH READ LOCKのロックを要求する.(2)バイナリログファイル及びイベント位置mysql>FLUSH LOGSを記録する.mysql> SHOW MASTER STATUS; mysql-e'SHOW MASTER STATUS'>/PATH/DO/SomeEFILE(3)スナップショットlvcreate-L#-s-pr-n NAME/DEP/VG_を作成NAME/LV_NAME(4)ロック解除mysql>UNLOCK TABLES;(5)スナップショットボリュームをマウントし、データバックアップを実行する(6)バックアップが完了した後、スナップショットボリュームを削除する(7)ポリシーを制定し、元のボリュームからバイナリログをバックアップする
実験:完全にバックアップし、最新の状態に復元
1 vim/etc/myの準備cnf [mysqld] log-bin=/data/binlog/mysql-bin datadir=/var/lib/mysql
2 mysqldump-A-F--single-transaction--master-data=2|gzip>/data/allをバックアップする.sql.gzはデータの変更を継続する
3シミュレーション破壊systemctl stop mariadb rm-rf/var/lib/mysql/*
リストア時にユーザがデータベースにアクセスすることを禁止するiptables 4をバックアップ時状態systemctl start mariadb gzip-d/data/allにリストアする.sql.gz mysql > set sql_log_bin=off; > source/data/all.sql;
5最新状態grep"CHANGE MASTER"/data/allに復元する.sql position mysql-binを表示します.000002 245
cd/data/binlog/mysqlbin --start-position=245 mysql-bin.000002 >/data/incr.sql mysqlbin mysql-bin.000003 >>/data/incr.sql mysqlbin mysql-bin.000004 >>/data/incr.sql
mysql > set sql_log_bin=off; > source/data/incr.sql; > set sql_log_bin=on;
6オープンユーザーアクセスデータベース
実験:誤って削除されたテーブルを復元
1準備、バイナリログ機能有効
2 mysqldump-A-F--single-transaction--master-data=2|gzip>/data/allを完全バックアップする.sql.gz
3データベースの変更
4テーブル10:00 drop table testlogを削除
5データベースの変更10:10
6 flush tables with read lockユーザーアクセス禁止ユーザー数
7バックアップ時の状態systemctl stop mariadb rm-rf/var/lib/mysql/*systemctl start mariadb gzip-d/data/allに復元する.sql.gz mysql > set sql_log_bin=off; > source/data/all.sql;
8バイナリログを分析し、drop table指令grep-i「change master」/data/allを見つけた.sql 245 mysql-bin.000002 mysqlbinlog --start-position=245 mysql-bin.000002 >/data/incr.sql vim /data/incr.sql drop table命令を見つけて、この命令に注釈します
mysqlbinlog mysql-bin.000003 >>/data/incr.sql mysqlbinlog mysql-bin.000004 >>/data/incr.sql
9最新状態mysql>set sql_に復元log_bin=off; > source/data/incr.sql; > set sql_log_bin=on;
10データの完全性の確認
11オープンユーザーアクセス