MysqlインクリメンタルバックアップのMysqldump&Mylvmbackup

14265 ワード

簡単な紹介
 
 
バックアップ・タイプ
バックアップ方式
ホット・バックアップ:バックアップ中にサービス停止を必要とせず、業務に影響を与えない.温バックアップ:バックアップ中に読み取りのみ許可されるリクエスト;コールドバックアップ:バックアップ中にMysqlサービスをオフにする必要があるか、読み書き要求に影響を与えない.
完全バックアップ:full backupはすべてのデータセットをバックアップします.≪インクリメンタル・バックアップ|Incrementalbackup|emdw≫:incrementalbackupが最後に完全バックアップまたはインクリメンタル・バックアップしてから変更したデータ.差異バックアップ:differentialbackupが前回完全バックアップしてから変更したデータ;フル+インクリメンタルバックアップ方式リカバリに使用するバックアップファイル:フルバックアップ+インクリメンタルバックアップ+バイナリファイル;完全+差分バックアップ方式リカバリで使用されるバックアップファイル:完全バックアップ+インクリメンタルバックアップ+バイナリファイル;
論理バックアップ
メリット
欠点
論理バックアップは、エディタまたはテキスト処理ツールを使用して編集または表示できます.リカバリは非常に簡単です.比較的に柔軟です;ストレージエンジンとは関係ありません.データの破損を避けるのに役立ちます.
論理バックアップは、エディタまたはテキスト処理ツールを使用して編集または表示できます.リカバリは非常に簡単です.比較的に柔軟です;ストレージエンジンとは関係ありません.データの破損を避けるのに役立ちます.
 
物理バックアップ
メリット
欠点
バックアップとリカバリデータは比較的簡単です.InnoDBとMyISAMの物理バックアップはプラットフォーム、オペレーティングシステム、Mysqlバージョンにまたがりやすい.インデックスを再構築する必要がなく、リカバリ速度が速い.
InnoDBの元のファイルは論理バックアップよりずっと大きいです.物理バックアップは、プラットフォーム、オペレーティングシステム、Mysqlバージョンにまたがるものではありません.ファイル名の大文字と小文字の機密性と浮動小数点フォーマットに問題がある可能性があります.
 
バックアップ・オブジェクト:データ・ファイル、プロファイル、コード:ストレージ・プロシージャ、ストレージ関数、トリガなど、バイナリ・ログ、トランザクション・ログ、サーバ構成、管理スクリプト、タスク・プランなど.
Mysqldumpインクリメンタルバックアップ
 
Mysqldumpバックアップツールを使用して完全なバックアップを実現し、バイナリ・ログと組み合わせてインクリメンタル・バックアップを実現します.
特徴:ロジックバックアップツール、InnoDBホットバックアップ、MyISAM温バックアップをサポートする;バックアップとリカバリが遅い
一、データベースのバックアップ
 
  
mysqldump -uroot -p123.com --lock-all-tables --flush-logs --databases test > /mysqlbackup/test_`date +%F`.sql
--lock-all-tables:           
--flush-log:        
 
  

 

 

 
二、バックアップバイナリファイル
testライブラリにテーブルを作成し、データを増やし、インクリメンタルバックアップをシミュレートし、現在のバイナリ・ログの場所を表示します.
 
 
  
cp /usr/local/mysql/data/mysqld-bin.00000* /mysqlbackup
 
  

 

 

 
 
 
  
mysql> create table abc (number INT(11), name varchar(100));
mysql> show master status;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| mysqld-bin.000004 | 221 | | |
+-------------------+----------+--------------+------------------+
 
  

 

 

 
三、バイナリファイルと完全バックアップ後のLOG_の表示POS値がどこにあるか
 
 
  
less /mysqlbackup/test_2013-09-29.sql  #        106
-- Position to start replication or point-in-time recovery from
-- CHANGE MASTER TO MASTER_LOG_FILE='mysqld-bin.000005', MASTER_LOG_POS=106;
 
  

 

 

 
四、バイナリインクリメンタルバックアップ
1>.フル・バックアップ後から現在までのバックアップ:
 
 
  
mysqlbinlog --start-position=106 /var/lib/mysql/mysqld-bin/mysql/mysqld-bin.000005 > /mysqlbackup/test_incremental.sql
--start-position:              
--stop-position:       ,        
 
  

 

 

 
2>.データベースにレコードを追加し、データベースを削除して現在のデータに復元します.
 
 
  
mysql>create table abd (number INT(1),name varchar(10));
mysql> show master status;   #         
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| mysqld-bin.000005 | 527 | | |
+-------------------+----------+--------------+------------------+
 
  

 

 

 
五、現在のデータにデータを回復し、完全バックアップ+増分バックアップ+増分バックアップを回復した後、前のバイナリファイルを削除する必要がある
 
 
  
mysqlbinlog /var/lib/mysql/mysqld-bin.000005  #     ,        ,         446
# at 446
#130929 11:04:16 server id 1 end_log_pos 527 Query thread_id=10 exec_time=0 error_code=0
SET TIMESTAMP=1380467056/*!*/;
drop database test
/*!*/;
 
  

 

 

 
六、エクスポート前にデータベースをインクリメンタルバックアップ後のバイナリファイルに削除する
 
  
mysqlbinlog --start-position=220 --stop-position=446 /var/lib/mysql/mysqld-bin.000005 > /mysqlbackup/test_446.sql
mysql> source/backupn/test_2013-09-06.sql #      
mysql> source/backup/test_incremental.sql #      
mysql> source/backup/test_446.sql #            
mysql> use test;
mysql> show tables;        !
 
  

 

 

Mylvmbackup高速フルバックアップ
mylvmbackupは、完全な物理バックアップMySQLサーバのデータファイルを迅速に作成するためのツールです.データをバックアップすると、MySQLのすべてのテーブルをロックし、キャッシュ内のデータをディスクに書き込み、LVMスナップショットを実行してロックを解除します.
LVM論理ボリュームスナップショット機能を使用して、ほぼホット・バックアップの完全なバックアップを実現し、バイナリ・ログと組み合わせてインクリメンタル・バックアップを実現します.
特徴:ホット・バックアップ、物理バックアップ、バックアップ、リカバリにほぼ近い.
mysqlデータベースの格納ディレクトリはLVMボリュームの下でなければなりません.インクリメンタルバックアップを行う場合はbin-logログもLVMボリュームの下で、LVMボリュームはスナップショットのバックアップにスペースが必要です.
mysqlとbin-logログの場所を変更します.
 
 
  
vi /etc/my.cnf
datadir=/myvg/data
bin-log=/myvg/binlog/mysqld-bin
 
  

 

 

 
mysqlには、エラー・ログ:-log-errクエリー・ログ:-logスロークエリー・ログ:-log-slow-queries更新ログ:-log-updateバイナリ・ログ:-log-bin
一、LVMボリュームの作成
 
1>.     
pvcreate /dev/sdb
 
  

 


2>.    
vgcreate myvg /dev/sdb
 
  

 


3>.     
lvcreate -n mylv -L 19G myvg
 
  

 


4>.       
mkfs.ext4 /dev/myvg/mylv
 
  

 

 5>.    
mount /dev/myvg/mylv/ /data
 
  

 

 
  
 

二、安装使用Mylvmbackup

 

 
  
wget http://www.lenzg.net/mylvmbackup/mylvmbackup-0.14-0.noarch.rpm
yum install -y perl-TimeDate perl-Config-IniFiles perl-DBD-MySQL #     
rpm -ivh mylvmbackup-0.14-0.noarch.rpm
 
  

 

 

 
 
1、メインプロファイルの変更
 
 
 
         
vi /etc/mylvmbackup.conf
[mysql]
user=root
password=123.com
host=localhost
port=3306
socket=/tmp/mysql.sock
mycnf=/etc/my.cnf
[lvm]
vgname=myvg #     
lvname=mylv #      
lvsize=5G #      snapshot   
[fs]
mountdir=/opt/snap_mnt #snapshot mount  
backupdir=/backup #          
relpath=mysqldata #                  ,     
[tools]
lvcreate=/usr/sbin/lvcreate
lvremove=/usr/sbin/lvremove
mount=/bin/mount
tar=/bin/tar
umount=/bin/umount
[misc]
prefix=backup #           
suffix=_mysql #         
 
         

 

 

 
2、データベースのバックアップとバックアップファイルの検証
 
 
         
[root@202 ~]# mylvmbackup
20130906 11:55:33 Info: Running: lvremove -f /dev/myvg/mysql_snap
Logical volume "mysql_snap"successfully removed
20130906 11:55:34 Info: DONE: Removing snapshot
            ,       !
[root@202 ~]# ls /mysqlbackup/
backup-201309029_115532_mysql.tar.gz
 
         

 

 

 
フルバックアップ成功!