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バックアップが必要なデータをバックアップする
 
     
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