MySqlフル・バックアップ、インクリメンタル・バックアップおよびリカバリ

3033 ワード

文書ディレクトリ
  • 1.準備
  • 1.1プロファイルの変更
  • 1.2 MySql
  • を再起動
  • 2.フルバックアップ
  • 2.1 mysqldumpを使用したフルバックアップ
  • 三.リカバリ
  • 3.1全量回復
  • 3.2増分回復
  • 参考文書
  • 零細な点
  • 一.準備作業
    MySqlには既存のインクリメンタルバックアップ機能はありませんが、binlogでインクリメンタルバックアップを実現できるので、binlog機能をオンにする必要があります.同時に、全バックアップ中にデータベースの操作を避ける.本稿のシナリオは、プライマリ・セカンダリ・レプリケーションが構成されており、ライブラリからのログ・ファイルを使用してデータ・リカバリを行います.
    1.1プロファイルの変更
  • mysqlプロファイルの変更
  • #linux
    vi /etc/my.cnf
    #windows
      my.ini  
    
  • このファイルの下[mysqld]で指定したMasterの構成は以下の通りです:
  • #          
    log-bin=mysql-bin
    #         binlog
    log_slave_updates = 1
    

    1.2 MySqlの再起動
    #linux
    service mysqld restart
    #windows
    net stop mysql
    net start mysql
    

    二.フル・バックアップ
    2.1 mysqldumpによるフルバックアップ
    #             ,        ,        cmd     
    mysqldump -u    -p     [ 1  2 ……  N] >       
    
    #              
    mysqldump -u root -p --single-transaction --flush-logs --master-data=2 liberty > backup_test.sql
    --single-transaction,      ,            ,       ,        ,          .  -single-transaction          select  ,  dml       ,ddl             select   
    --flush-logs        ,       
    --master-data=2        SQL                 ,         
    
    

    三.リカバリ
  • 回復する前にbinlogを閉じて
  • を再開する
    vi /etc/my.cnf
    
    #log-bin=mysql-bin
    
  • 同期を一時停止
  •   mysql
    mysql>stop slave;
    

    3.1全量回復
     shell   :
    shell>  mysql -u     -p      <     .sql
    
     mysql   :
    mysql>  source     .sql;
    

    3.2インクリメンタル・リカバリ
  • 最後のフル・バックアップ・ファイルでリカバリするには、前のステップ
  • を参照してください.
  • 誤動作のあるbinlogファイル
  • を見つける
       :
    # mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.00000x [-d dbname]
    mysql :
    mysql> show binlog events in 'mysql-bin.00000x';
    
  • 例えばmysql-binで誤操作する.000005では、誤動作の位置または時刻
  • が見つかる.
  • 順次回復:
  • # mysqlbinlog --no-defaults mysql-bin.000001 | mysql -u root -p
    # mysqlbinlog --no-defaults mysql-bin.000002 | mysql -u root -p 
    # mysqlbinlog --no-defaults mysql-bin.000003 | mysql -u root -p
    # mysqlbinlog --no-defaults mysql-bin.000004 | mysql -u root -p
    
  • 時間ベースのリカバリ:誤操作をスキップした時間[親測は成功しなかった!]
  • # mysqlbinlog --no-defaults --stop-datetime='2018-07-03 18:19:49' /usr/local/mysql/data/mysql-bin.00000x | mysql -u root -p
    # mysqlbinlog --no-defaults --start-datetime='2018-07-03 18:22:21' /usr/local/mysql/data/mysql-bin.00000x | mysql -u root -p
    
  • 位置ベースの復元:誤動作をスキップする位置
  • # mysqlbinlog --no-defaults --stop-position=347 /usr/local/mysql/data/mysql-bin.00000x | mysql -u root -p
    # mysqlbinlog --no-defaults --start-position=395 /usr/local/mysql/data/mysql-bin.00000x | mysql -u root -p
    

    参考記事
  • Mysqlのインクリメンタル・バックアップと、ポイント・イン・タイム・ポイント・ベースのリカバリ
  • MySQLインクリメンタルバックアップ/リカバリインスタンス
  • mysqlフルインクリメンタルバックアップスクリプト
  • MySQLバックアップ・スキーム->(mysqldumpおよびbinlogバイナリ・ログを使用)
  • 零細な点