MySQLデータベースのバックアップとリカバリ

3798 ワード

データベースのバックアップ

  • データベース・レプリケーションは、バックアップの役割に取って代わるものではありません.
  • バックアップ区分:
  • バックアップ内容:
  • 論理バックアップ:結果はSQL文で、すべてのストレージエンジン
  • に適用されます.
  • 物理バックアップ:データベース・ディレクトリのバックグラウンド、メモリ・テーブルのバックアップ構造
  • のみ
  • バックアップ方式:
  • フル・バックアップ:データベース全体のフル・バックアップ
  • インクリメンタルバックアップ:前回のバックアップに基づいて、変更データをバックアップします.mysqldumpではこの
  • はサポートされていません


    mysqldump全備紹介

  • mysqldumpバックアップ
  • mysqldump database [tables]
    mysqldump --database DB1 [DB2]
    mysqldump --all-databases
    
  • 共通パラメータ
  • -u
  • 口座に備わる権限SELECT,RELOAD,LOCK TABLES,REPLICATION CLIENT,SHOW VIEW,PROCESS
  • -p
  • --single-transactionはトランザクションを開いて操作し、innodbはこの
  • を推奨します.
  • -l順次ロックテーブル、一般myisam用.バックアップ時にデータベースの下にあるテーブルをロックします.ハイブリッドエンジンのテーブルもこのパラメータを使用すると、--single-transactionと反発します.1つのdbで一致する
  • しか保持できません.
  • -x、すべてのdbをロックするすべてのテーブル
  • --master-data=[1または2]時間リカバリと新しいslaveインスタンス用.1 change master toが記録され、2は1を注釈に入れ、--single-transactionと合わせて
  • を指定する.
  • -Rバックアップストレージプロセス
  • --triggersトリガ
  • -Eバックアップスケジュールイベント
  • --hex-blobデータテキストをhexフォーマット
  • に変更
  • --tab=path指定パスの下で、テーブル構造とテーブルデータの2つのファイル
  • を生成します.
  • -w='フィルタ条件',単表導出用

  • mysqldumpリカバリ

  • bash: mysql -u -p dbname < backup.sql
  • mysql client: mysql> source /tmp/backup.sql

  • 指定した時点でのリカバリ


    前提条件
  • は、指定された時点より前の完全な準備
  • を有する.
  • は、前回のフル・スペアから指定された時点までのすべてのバイナリ・ログ(バックアップ・時点から現在までのデータベース操作を繰り返すことに相当)
  • を備える.
    手順:
  • ある時点の全備mysql -uroot -p mc_orderdb < mc_order_backup.sql
  • を復元する.
  • フルスタンバイ時に開始するmysql-binのlog操作のログポイント
  • を検索する
  • 最近の誤操作mysql-binのlogを表示するログポイント
  • mysqlbinlog --start-position=84882 --stop-position=169348 --database=mc_orderdb > mc_order_diff.sql
  • mysql -uroot -p mc_orderdb < mc_order_diff.sql

  • リアルタイムバックアップbinlog

  • GRANT REPLICATION SLAVE ON *.* TO 'repl'@'ip' IDENTIFIED BY 'xxxxxx'
  • mkdir -p binlog_backup
  • mysqlbinlog --raw --read-from-remote-server --stop-never --host localhost --port 3306 -u repl -p xxxxxx

  • xtrabackupバックアップとリカバリ

  • xtrabackup innodbストレージエンジンをオンラインでバックアップするためのテーブル
  • はデータファイルのみをバックアップし、テーブル構造
  • はバックアップしません.
  • innobackupexはextrabackupをカプセル化しMyISAMテーブルのバックアップ機能を提供する
  • innobackupexはXtrabackupのプラグインでMyISAMバックアップをサポートしていますが、テーブル
  • もロックされます.

    フル・スペアとリカバリ
  • 全備innobackupex --user=root --password=pwd --parallel=2 /home/db_backup/
  • バックアップリカバリinnobackupex --apply-log /path/to/BACKUP-DIR
  • インクリメンタルバックアップとリカバリ
  • インクリメンタルバックアップinnobackupex --user=root --password=pwd --incremental /home/db_backup/ --incremental-basedir=/home/db_backup/back-dirパラメータ--incremental-basedir前回フルスタンバイフォルダ
  • インクリメンタル・バックアップ・リカバリ
  • innobackupex --apply-log --redo-only
  • innobackupex --apply-log --redo-only --incremental-dir=
  • innobackupex --apply-log
  • mv /path/to/BACKUP-DIR /home/mysql/data復元後のデータは、元の
  • に直接置き換える.
  • は、属するユーザchmod
  • を変更することを覚えている.

    バックアップ計画の作成

  • データベースを1日未明に1回フルプロビジョニングする
  • バイナリ・ログのリモート・バックアップをリアルタイムで実行
  • linuxタイミングタスクの使用:crontab

  • リファレンス

  • 高性能拡張MySQLデータベース設計及びアーキテクチャ最適化電子商取引プロジェクト、sqlercn、https://coding.imooc.com/class/79.html

  • 私について:
    linxinzhe、全スタックエンジニア、現在、ある世界500強銀行の金融科学技術部門(人工知能、ブロックチェーン)に勤めています.
    GitHub:https://github.com/linxinzhe
    コメント討論を歓迎して、私にも関心を持って~私もあなたに関心を持っています!