MySQL开源备份工具Xtrabackup备份部署
Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好
Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。
Xtrabackup有两个主要的工具:xtrabackup、innobackupex
1、xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表
2、innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的.innobackupex是一个perl脚本封装,封装了xtrabackup。主要是为了方便的 同时备份InnoDB和MyISAM引擎的表,但在处理myisam时需要加一个读锁。并且加入了一些使用的选项。如slave-info可以记录备份恢 复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。
Xtrabackup下载地址:
选择合适的版本,,我这里选择binary。
解压到/usr/src/目录,解压后目录名percona-xtrabackup-2.1.3,进入到bin目录,即可直接使用innobackupex命令
# pwd
/usr/src/percona-xtrabackup-2.1.3/bin
# ls -l
total 112396
-rwxr-xr-x 1 root root 110738 Jun 7 11:43 innobackupex
-rwxr-xr-x 1 root root 110738 Jun 7 11:43 innobackupex-1.5.1
-rwxr-xr-x 1 root root 2211237 Jun 7 11:43 xbcrypt
-rwxr-xr-x 1 root root 2285672 Jun 7 11:43 xbstream
-rwxr-xr-x 1 root root 13033745 Jun 7 11:43 xtrabackup
-rwxr-xr-x 1 root root 16333506 Jun 7 11:43 xtrabackup_55
-rwxr-xr-x 1 root root 80988093 Jun 7 11:43 xtrabackup_56
在开始使用的时候可能会报如下错误:
sh: xtrabackup_55: command not found
innobackupex: fatal error: no 'mysqld' group in MySQL options
解决办法xtrabackup_55复制到/usr/bin下即可。
# cp /usr/src/percona-xtrabackup-2.1.3/bin/xtrabackup_55 /usr/bin/
建立mysql备份用户:
mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost' identified by 'skEBfef5E2';
mysql> FLUSH PRIVILEGES;
备份脚本内容(每周一次全备,六次增量备份,保留2周的备份,并压缩):
#!/bin/bash
BEGINTIME=`date +"%Y-%m-%d %H:%M:%S"`
format_time=`date +"%Y-%m-%d_%H:%M:%S"`
week=`date +%w`
backupbin=/usr/src/percona-xtrabackup-2.1.3/bin
backdir=/data/databasebak/bak
file_cnf=/etc/my.cnf
user_name=backupuser
password="skEBfef5E2"
db="db1 db2 db3 db4"
out_log=$backdir/xtrabackup_log_$format_time
time_cost=$backdir/xtrabackup_time.txt
if [ -f "$backdir.lastlastlastweek.gz" ];then
rm -rf $backdir.lastlastweek.gz
mv $backdir.lastweek.gz $backdir.lastlastweek.gz
fi
if [ -d "$backdir/rec5" ];then
gzip -cr $backdir >$backdir.lastweek.gz
rm -rf $backdir
mkdir $backdir
fi
#full
if [ ! -d "$backdir/full" ];then
echo "#####start full backup at $BEGINTIME to directory full" >>$time_cost
$backupbin/innobackupex --defaults-file=$file_cnf --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" $backdir/full 1> $out_log 2>&1
break;
elif [ ! -d "$backdir/rec0" ];then
echo "#####start 0 incremental backup at $BEGINTIME to directory rec0" >>$time_cost
$backupbin/innobackupex --defaults-file=$file_cnf --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" --incremental --incremental-basedir=$backdir/full $backdir/rec0 1> $out_log 2>&1
break;
elif [ ! -d "$backdir/rec1" ];then
echo "#####start 1 incremental backup at $BEGINTIME to directory rec1" >>$time_cost
$backupbin/innobackupex --defaults-file=$file_cnf --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" --incremental --incremental-basedir=$backdir/rec0 $backdir/rec1 1> $out_log 2>&1
break;
elif [ ! -d "$backdir/rec2" ];then
echo "#####start 2 incremental backup at $BEGINTIME to directory rec2" >>$time_cost
$backupbin/innobackupex --defaults-file=$file_cnf --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" --incremental --incremental-basedir=$backdir/rec1 $backdir/rec2 1> $out_log 2>&1
break;
elif [ ! -d "$backdir/rec3" ];then
echo "#####start 3 incremental backup at $BEGINTIME to directory rec3" >>$time_cost
$backupbin/innobackupex --defaults-file=$file_cnf --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" --incremental --incremental-basedir=$backdir/rec2 $backdir/rec3 1> $out_log 2>&1
break;
elif [ ! -d "$backdir/rec4" ];then
echo "#####start 4 incremental backup at $BEGINTIME to directory rec4" >>$time_cost
$backupbin/innobackupex --defaults-file=$file_cnf --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" --incremental --incremental-basedir=$backdir/rec3 $backdir/rec4 1> $out_log 2>&1
break;
elif [ ! -d "$backdir/rec5" ];then
echo "#####start 5 incremental backup at $BEGINTIME to directory rec5" >>$time_cost
$backupbin/innobackupex --defaults-file=$file_cnf --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" --incremental --incremental-basedir=$backdir/rec4 $backdir/rec5 1> $out_log 2>&1
break;
fi
ENDTIME=`date +"%Y-%m-%d %H:%M:%S"`
begin_data=`date -d "$BEGINTIME" +%s`
end_data=`date -d "$ENDTIME" +%s`
spendtime=`expr $end_data - $begin_data`
echo "it takes $spendtime sec for packing the data directory" >>$time_cost
部署备份脚本;
# crontab -l
10 2 * * * /opt/cron/mysqldbbakup.sh
恢复:
#全备恢复:
innobackupex --apply-log --redo-only --defaults-file=$file_cnf --user=$user_name --password=$password $backdir/full
#增备恢复,修改增量备份目录,逐个apply-log,到第五天的增量rec4都是输出都显示innobackupex: completed OK!

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Inside を使用した MySQL 増分バックアップにはバイナリが 1 つだけあります。また、互換性のために、innobackupex は xtrabackup のソフト リンクとして使用されます。つまり、xtrabackup は非 Innodb テーブル バックアップをサポートするようになり、Innobackupex は次のバージョン (8.0 は削除されました)。xtraba の使用をお勧めします。

MySql は、さまざまなビジネスおよびアプリケーションのシナリオで広く使用されている、一般的に使用されるリレーショナル データベース管理システムです。 MySQL のバックアップの問題では、バックアップ計画の選択と実行方法が重要です。この記事では、さまざまなバックアップ オプションと、MySQL バックアップを効率的に作成および復元する方法を紹介します。 1. バックアップ プランの選択 MySQL バックアップ プランを選択するプロセスでは、ビジネス シナリオと実際の状況に基づいて、適切なバックアップ プランを選択する必要があります。コールド バックアップ いわゆるコールド バックアップは、MySQL データベースを完成させることです。

MySQL データのバックアップおよびリカバリ ツールを使用して災害復旧を実現する方法 データのバックアップおよびリカバリは、データベース管理プロセスの非常に重要な部分です。データをバックアップすると、データベースが偶発的な破損、ハードウェア障害、その他の致命的なイベントから保護されます。人気のリレーショナル データベース管理システムとして、MySQL はデータのバックアップとリカバリを実現するための強力なツールをいくつか提供します。この記事では、MySQL のデータ バックアップおよびリカバリ ツールを使用して災害復旧を実現する方法を紹介します。 MySQL データ バックアップ ツール -mysql

MySQL データベースでは、各 InnoDB テーブルは、テーブルのデータとインデックスを保存する .ibd ファイルに対応します。したがって、MySQL データベースの管理と保守では、ibd ファイルの管理も特に重要です。この記事では、MySQL データベース内の ibd ファイルを効果的に管理および保守する方法を紹介し、具体的なコード例を示します。 1. テーブルスペースの確認と最適化 まず、次の SQL ステートメントを使用してテーブルのディスクスペース使用量を確認できます: SELECTTAB

MySQL は、さまざまな分野で広く使用されている人気のリレーショナル データベースです。ただし、他のアプリケーションと同様に、MySQL にはデータの破損、クラッシュ、悪意のある攻撃などのリスクがあります。したがって、データをバックアップすることが重要です。バックアップは、データにセキュリティと何らかの「元に戻す」機能を提供し、不安定性やリスクを軽減または排除することができます。最も一般的なバックアップの種類は、完全バックアップと増分バックアップです。ただし、頻繁なリアルタイム バックアップが必要な場合は、ローリング バックアップの方が良い方法です。ローリング バックアップは、許容可能な場合に実行されます。

MySQL は現在最も広く使用されているリレーショナル データベース管理システムの 1 つであり、その効率性と信頼性により、多くの企業や開発者にとって最初の選択肢となっています。しかし、さまざまな理由から、MySQL データベースをバックアップする必要があります。 MySQL データベースのバックアップは簡単な作業ではありません。バックアップに失敗すると、重要なデータが失われる可能性があるからです。したがって、データの整合性とリカバリ可能性を確保するには、効率的な MySQL データベースのバックアップとリカバリを実現するためにいくつかの対策を講じる必要があります。この記事では達成方法を紹介します

MySQL データベースのバックアップとリカバリのパフォーマンス チューニング プロジェクトの経験の分析 日常の運用保守において、MySQL データベースのバックアップとリカバリの作業は不可欠です。ただし、マルチテラバイト、さらにはペタバイトレベルのデータスケールに直面すると、バックアップとリカバリに必要な時間とリソースの消費が、データベースのパフォーマンスを制限する重要な要因となることがよくあります。この記事では、大規模なインターネット企業向けのバックアップとリカバリのパフォーマンス チューニングの実践的な事例を通じて、いくつかの実践的な経験とテクニックを共有します。 1. バックアップ ソリューションの選択 さまざまなビジネス ニーズとデータ規模に基づいて、バックアップ ソリューションの選択も考慮する必要があります。

MySQL は現在、最も人気のあるリレーショナル データベース管理システムの 1 つであり、エンタープライズ レベルのアプリケーションで広く使用されています。開発者であってもデータ管理者であっても、MySQL のバックアップとリカバリの基本知識を理解する必要があります。バックアップとリカバリは、企業のデータ保護に役立つだけでなく、システムが不利な状況に迅速に対応し、可能な限り通常の動作状態に復元できるようにします。この記事では、MySQL のバックアップとリカバリの手順を詳しく説明し、読者が MySQL データベースの保護をさらに進めるのに役立ついくつかのベスト プラクティスを提供します。
