ホームページ データベース mysql チュートリアル MySQL开源备份工具Xtrabackup备份部署

MySQL开源备份工具Xtrabackup备份部署

Jun 07, 2016 pm 05:29 PM
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!

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Xtrabackup を使用して mysql の増分バックアップを行う方法 Xtrabackup を使用して mysql の増分バックアップを行う方法 May 30, 2023 pm 02:50 PM

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

MySql 用の複数のバックアップ ソリューション: MySQL バックアップを効率的に作成および復元する方法 MySql 用の複数のバックアップ ソリューション: MySQL バックアップを効率的に作成および復元する方法 Jun 15, 2023 pm 03:28 PM

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

災害復旧のために MySQL データのバックアップおよびリカバリ ツールを使用する方法 災害復旧のために MySQL データのバックアップおよびリカバリ ツールを使用する方法 Aug 02, 2023 am 09:06 AM

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

MySQL データベース内の ibd ファイルを効果的に管理および維持する方法 MySQL データベース内の ibd ファイルを効果的に管理および維持する方法 Mar 16, 2024 am 11:21 AM

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

データの MySQL ローリング バックアップ手法 データの MySQL ローリング バックアップ手法 Jun 15, 2023 pm 07:47 PM

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

MySQL データベースのバックアップ: MySQL データベースの効率的なバックアップとリカバリを実現する方法 MySQL データベースのバックアップ: MySQL データベースの効率的なバックアップとリカバリを実現する方法 Jun 15, 2023 pm 11:37 PM

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

MySQL データベースのバックアップとリカバリのパフォーマンス調整に関するプロジェクトの経験の分析 MySQL データベースのバックアップとリカバリのパフォーマンス調整に関するプロジェクトの経験の分析 Nov 04, 2023 am 09:46 AM

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

MySQL のバックアップとリカバリに関する包括的なガイド MySQL のバックアップとリカバリに関する包括的なガイド Jun 15, 2023 am 09:48 AM

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

See all articles