mysqlの3つのバックアップ方式
21320 ワード
一、バックアップの目的
ディザスタリカバリ:破損したデータのリカバリとリストアのニーズの変更:ニーズの変更により、変更前のテストにデータをリストアする必要があります.新しい機能が使用可能かどうかをテストします.
二、バックアップに考慮すべき問題
どのくらいの時間のデータの損失を許容することができます.データのリカバリはどのくらいの時間で完了しますか?リカバリ時にサービスを継続する必要があるかどうか.リカバリされたオブジェクトは、ライブラリ全体、複数のテーブル、または単一のライブラリ、単一のテーブルです.
三、バックアップのタイプ
1、必要に応じてデータベースをオフラインにする
冷備(cold backup):mysqlサービスをオフにする必要があり、読み書き要求は許可されていない状態で行う.温備(warm backup):サービスはオンラインですが、読み取り要求のみをサポートし、書き込み要求は許可されません.ホットスペア(hot backup):バックアップと同時に、ビジネスに影響を与えません.
注意:
1.このタイプのバックアップは、バックアップツールではなく業務のニーズによって異なります.2、MyISAMはホットスペアをサポートしていません.InnoDBはホットスペアをサポートしていますが、専門的なツールが必要です.
2、バックアップするデータセットの範囲によって完全にバックアップする:full backup、すべての文字セットをバックアップする.≪インクリメンタル・バックアップ|Incremental backup|emdw≫:incremental backupが最後に完全バックアップまたはインクリメンタル・バックアップしてから変更したデータは、単独で使用することはできません.完全バックアップを使用するには、バックアップの頻度はデータの更新頻度に依存します.差分バックアップ:differential backupが前回完全バックアップしてから変更したデータ.推奨されるリカバリポリシー:完全+インクリメンタル+バイナリ・ログ完全+差分+バイナリ・ログ
3、バックアップデータまたはファイルによる
物理バックアップ:データファイルを直接バックアップする
メリット:
バックアップとリカバリの操作はすべて比較的に簡単で、mysqlのバージョンにまたがることができて、リカバリ速度は速くて、ファイルシステムのレベルに属します
推奨事項:
バックアップが必ず利用できると仮定しないで、mysql>check tablesをテストします.テーブルが使用可能かどうかを検出する論理バックアップ:テーブルのデータとコードをバックアップする
メリット:
リカバリが簡単で、バックアップの結果はASCIIファイルで、ストレージエンジンに関係なくネットワークバックアップとリカバリが可能
欠点:
バックアップまたはリカバリにはmysqlサーバプロセスが必要です.バックアップ結果に参加するには、より多くのスペースが必要です.浮動小数点数が精度を失ってリストアされた後、縮図は再構築する必要があります.
四:バックアップの対象
1、データ;2、プロファイル;3、コード:ストレージプロセス、ストレージ関数、トリガ4、os関連プロファイル5、コピー関連プロファイル6、バイナリログ
五、バックアップとリカバリの実現
1、select into outfileによるデータのバックアップとリストア1.1バックアップが必要なデータをバックアップする
ディザスタリカバリ:破損したデータのリカバリとリストアのニーズの変更:ニーズの変更により、変更前のテストにデータをリストアする必要があります.新しい機能が使用可能かどうかをテストします.
二、バックアップに考慮すべき問題
どのくらいの時間のデータの損失を許容することができます.データのリカバリはどのくらいの時間で完了しますか?リカバリ時にサービスを継続する必要があるかどうか.リカバリされたオブジェクトは、ライブラリ全体、複数のテーブル、または単一のライブラリ、単一のテーブルです.
三、バックアップのタイプ
1、必要に応じてデータベースをオフラインにする
冷備(cold backup):mysqlサービスをオフにする必要があり、読み書き要求は許可されていない状態で行う.温備(warm backup):サービスはオンラインですが、読み取り要求のみをサポートし、書き込み要求は許可されません.ホットスペア(hot backup):バックアップと同時に、ビジネスに影響を与えません.
注意:
1.このタイプのバックアップは、バックアップツールではなく業務のニーズによって異なります.2、MyISAMはホットスペアをサポートしていません.InnoDBはホットスペアをサポートしていますが、専門的なツールが必要です.
2、バックアップするデータセットの範囲によって完全にバックアップする:full backup、すべての文字セットをバックアップする.≪インクリメンタル・バックアップ|Incremental backup|emdw≫:incremental backupが最後に完全バックアップまたはインクリメンタル・バックアップしてから変更したデータは、単独で使用することはできません.完全バックアップを使用するには、バックアップの頻度はデータの更新頻度に依存します.差分バックアップ:differential backupが前回完全バックアップしてから変更したデータ.推奨されるリカバリポリシー:完全+インクリメンタル+バイナリ・ログ完全+差分+バイナリ・ログ
3、バックアップデータまたはファイルによる
物理バックアップ:データファイルを直接バックアップする
メリット:
バックアップとリカバリの操作はすべて比較的に簡単で、mysqlのバージョンにまたがることができて、リカバリ速度は速くて、ファイルシステムのレベルに属します
推奨事項:
バックアップが必ず利用できると仮定しないで、mysql>check tablesをテストします.テーブルが使用可能かどうかを検出する論理バックアップ:テーブルのデータとコードをバックアップする
メリット:
リカバリが簡単で、バックアップの結果はASCIIファイルで、ストレージエンジンに関係なくネットワークバックアップとリカバリが可能
欠点:
バックアップまたはリカバリにはmysqlサーバプロセスが必要です.バックアップ結果に参加するには、より多くのスペースが必要です.浮動小数点数が精度を失ってリストアされた後、縮図は再構築する必要があります.
四:バックアップの対象
1、データ;2、プロファイル;3、コード:ストレージプロセス、ストレージ関数、トリガ4、os関連プロファイル5、コピー関連プロファイル6、バイナリログ
五、バックアップとリカバリの実現
1、select into outfileによるデータのバックアップとリストア1.1バックアップが必要なデータをバックアップする
mysql> use hellodb; // hellodb
mysql> select * from students; students
mysql> select * from students where Age > 30 into outfile ‘/tmp/stud.txt' ; //
:
バックアップされたディレクトリパスは、mysqlサーバを しているユーザーmysqlにアクセス を たせる があります.
バックアップが したら、バックアップしたファイルをtmpディレクトリからコピーする があります.バックアップの を うことになります.
tmpディレクトリに って、さっきバックアップしたファイルを します.
[root@www ~]# cd/tmp
[root@www tmp]# cat stud.txt
3Xie Yanke53M216
4Ding Dian32M44
6Shi Qing46M5\N
13Tian Boguang33M2\N
25Sun Dasheng100M\N\N
[root@www tmp]#
テキストファイルであることがわかります.データベースを インポートすることはできません.load data infileを してリカバリする があります
mysqlサーバ に り、30 のユーザーを し、シミュレーションデータが されます.mysql> delete from students where Age > 30;
mysql> load data infile '/tmp/stud.txt' into table students;
2、mysqldumpツールによるデータのバックアップと
mysqldumpは に に われているので、まずバックアップしたいデータにリードロックをかける があります.
2.1リードロックの :
1.バックアップ に オプションを
--lock-all-tablesは、バックアップするデータベースのすべてのテーブルにリードロックをかけます.
--lock-tableは、データベース をバックアップしても、あるテーブルをバックアップするときにそのテーブルにリードロックを するだけなので、 テーブルのバックアップに しています.
2、サーバー にコマンドを く、mysql> flush tables with read lock; , ,
mysql> flush tables with read lock;
InnoDB , , ,
InnoDB ,
mysql> show engine innodb status;
InnoDB , 。
2.2バックアップのポリシー:
フル・バックアップ+インクリメンタル・バックアップ+バイナリ・ログ
バックアップの を します.
2.3データベースの バックアップを に う: [root@www ~]# mysqldump -uroot --single-transaction --master-data=2 --databases hellodb > /backup/hellodb_`date +%F`.sql
--single-transaction: InnoDB ; , --lock-all-tables;
--master-data=2 , ,1
--databases hellodb
mysql ,
2.4 mysqlサーバ に ってデータを する
mysql> create table tb1(id int);
mysql> insert into tb1 values (1),(2),(3); , ,
2.5まず、 バックアップファイルに されている を します.
[root@www backup]# cat hellodb_2013-09-08.sql | less
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000013', MASTER_LOG_POS=15684;
2.6サーバに る:
mysql> show master status;
, ,
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 15982 | | |
+------------------+----------+--------------+------------------+
2.7インクリメンタルバックアップ
[root@www backup]# mysqlbinlog --start-position=15694 --stop-position=15982
/mydata/data/mysql-bin.000013 > /backup/hellodb_`date +$F_%H`.sql
2.8サーバに る
mysql> insert into tb1 values (4),(5);
mysql> drop database hellodb; hellodb
2.9 のバイナリ・ログのエクスポート:
mysqlbinlog --start-position=15982 /mydata/data/mysql-bin.000013
# mysqlbinlog --start-position=15982 --stop-position=16176 /mydata/data/mysql-bin.000013 > /tmp/hellodb.sql
//
2.10まずmysqlをオフラインにするmysql> set sql_log_bin=0;
mysql> flush logs;
2.11アナログデータベースの
mysql> drop database hellodb;
2.12データの を する:
[root@www ]# mysql < /backup/hellodb_2013-09-08.sql
//
[root@www ]# mysql < /backup/hellodb_2013-09-08_05.sql
//
[root@www ]# mysql< hellodb.sql
//
が し、 が りであることを します.
:
1、 では、mysqlサーバ のデータをエクスポートする があります. のライブラリではありません.そのため、all-databases 2を し、バイナリ・ログをエクスポートするときは、 ファイルをコピーすることができますが、バックアップする にログをスクロールすることに してください.3、lvmスナップショットによるほぼホットなデータバックアップと
3.1ポリシー:
フルバックアップ+バイナリログ;
3.2 :
:トランザクション・ログは、データ・ファイルと じLV にある があります.
3.3 lvm Lvmの ここではあまり さないので、 を りたいならクリックしてくださいhttp://www.jb51.net/LINUXjishu/105937.html
3.4 mysqlマスタープロファイル ディレクトリ のファイルの とマスターグループを し、mysqlを する
[root@www ~]# mkdir /mydata/data //
[root@www ~]# chown mysql:mysql /mydata/data //
[root@www ~]# cd /usr/local/mysql/ //
[root@www mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data // mysql
3.5 ファイルの :
vim /etc/my.cof
datadir=/mydata/data
sync_binlog = 1
3.6サービスの
[root@www mysql]# service mysqld start
mysql> set session sql_log_bin=0;
mysql> source /backup/all_db_2013-09-08.sql
3.7 mysqlサーバに る:
mysql> FLUSH TABLES WITH READ LOCK;
: , :
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 107 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> FLUSH LOGS;
。
3.8バイナリファイルをエクスポートし、 のディレクトリを する
[root@www ~]# mkdir /backup/limian
[root@www ~]# mysql -e 'show master status;' > /backup/limian/binlog.txt
3.9データが するボリュームのスナップショットを します.
[root@www ~]# lvcreate -L 100M -s -p r -n mysql_snap /dev/myvg/mydata
サーバ に り、リードロックを
mysql> UNLOCK TABLES;
[root@www ~]# mount /dev/myvg/mysql_snap /mnt/data
[root@www data]# cp * /backup/limian/
[root@www data]#lvremove /dev/myvg/mylv_snap
3.10データベースのデータを し、データディレクトリの のデータファイルを し、データベースの を する
mysql> create table limiantb (id int,name CHAR(10));
mysql> insert into limiantb values (1,'tom');
[root@www data]# mysqlbinlog --start-position=187 mysql-bin.000003 > /backup/limian/binlog.sql
[root@www backup]# cd /mydata/data/
[root@www data]# rm -rf *
[root@www ~]# cp -a /backup/limian/* /mydata/data/
[root@www data]# chown mysql:mysql *
3.11テスト
サービスの [root@www data]# service mysqld start
[root@www data]# mysql
mysql> SHOW DATABASES;
mysql> SET sql_log_bin=0
mysql> source/backup/limian/binlog.sql; #
mysql> SHOW TABLES; #
mysql> SET sql_log_bin=1; #
: , lvm lvm , 。
4、Xtrabackupによるバックアップ・リカバリ
サイト:www.percona.com
メリット:
1、 バックアップを かつ に う2、バックアップ にトランザクション3、データストリームのサポート、ネットワーク 、 に しないため、ディスクリソースとネットワーク を に できます.4、 データの を にバックアップできる.
Xtrabackupのインストール
[root@www ~]# rpm -ivh percona-xtrabackup-2.1.4-656.rhel6.i686.rpm
のソフトウェアはhttp://www.percona.com/software/percona-xtrabackup/
:データベースをバックアップするときは、 を つ がありますが、セキュリティを するために、データベースをバックアップするときのユーザーに の を える があります.
4.1 :
テーブルの1つの が されていることを する があります.そうしないと、 テーブルのバックアップとリカバリはサポートされません.プロファイル のmysqldセグメントに
innodb_file_per_table = 1
4.2バックアップポリシー バックアップ+インクリメンタルバックアップ+バイナリログ4.3バックアップデータを するためのディレクトリを する
[root@www ~]# mkdir /innobackup
4.4 バックアップを う:
[root@www ~]# innobackupex --user=root --password=mypass /innobackup/
:
1、 の にinnobackupex:completed OK!を すれば、バックアップが しいことを します.2、また、バックアップのたびに、 の で が けられたディレクトリがデータディレクトリの に に され、バックアップを するためのデータがあることに してください.では、 があるか てみましょう.
[root@www 2013-09-12_11-03-04]# ls
backup-my.cnf ibdata1 performance_schema xtrabackup_binary xtrabackup_checkpoints
hellodb mysql test xtrabackup_binlog_info xtrabackup_logfile
[root@www 2013-09-12_11-03-04]#
xtrabackup_checkpoints : 、 LSN( ) ;
xtrabackup_binlog_info :mysql 。
xtrabackup_logfile : ,xtrabackup
xtrabackup_binlog_pos_innodb : InnoDB XtraDB position。
backup-my.cnf : mysqld
4.5 mysqlサーバーに ってデータを する
mysql> use hellodb;
mysql> delete from students where StuID>=24;
4.6インクリメンタルバックアップ
innobackupex --user=root --password=mypass --incremental /innobackup/--incremental-basedir=/innobackup/2013-09-12_11-03-04/
--incremental
--incremental-basedir= , ,
4.7
まずデータを します
mysql> insert into students (Name,Age,Gender,ClassID,TeacherID) values ('tom',33,'M',2,4);
innobackupex --user=root --password=mypass --incremental /innobackup/ --incremental-basedir=/innobackup/2013-09-12_11-37-01/
4.8
mysql> delete from coc where id=14;
4.9 ,( , , )
[root@www data]# cp mysql-bin.000003 /tmp/
4.10
[root@www data]# service mysqld stop
[root@www data]# rm -rf *
4.11
[root@www ~]# innobackupex --apply-log --redo-only /innobackup/2013-09-12_11-03-04/
4.12
innobackupex --apply-log --redo-only /innobackup/2013-09-12_11-03-04/ --incremental-basedir=/innobackup/2013-09-12_11-37-01/
4.13
innobackupex --apply-log --redo-only /innobackup/2013-09-12_11-03-04/ --incremental-basedir=/innobackup/2013-09-12_11-45-53/
--apply-log commit , commit
:
xtrabackup , , , , , 。 , 。
:
, , , 。
,
, , , + , 。
4.14データ
[root@www ~]# service mysqld stop
[root@www data]# rm -rf *
[root@www ~]# innobackupex --copy-back /innobackup/2013-09-12_11-03-04/
--copy-back ,
4.15 :
[root@www ~]# cd /mydata/data/
[root@www data]# chown mysql:mysql *
[root@www data]#service mysqld start
データは です.
:https://www.cnblogs.com/fengzhongzhuzu/p/9101782.html