MySqlのフル・バックアップとインクリメンタル・バックアップとリストア

1966 ワード

MySqlのフル・バックアップとインクリメンタル・バックアップとリストア
一、作業シーン
.MySql朝2時フルバックアップ
・2時間ごとのインクリメンタルバックアップ
二、設計構想
.フルバックアップファイルにCHANGE MASTER文、binlogファイルおよびその位置点情報を記録して、binlogファイルの増分部分を探し出す.
.mysqlbinlogコマンドで上記のbinlogファイルをsqlファイルとしてエクスポートしdrop文を削除
.フルバックアップとインクリメンタルbinlogファイルのエクスポートsqlにより、完了したデータを復元
三、全量バックアップ
.スクリプト
#!/bin/bash # program :use mysqldump to Fully backup mysql data per day! # path:フルバックアップ、パス:/data/mysql/backup/daily BakDir=/data/mysql/backup/daily cd BakDirDumpFile=Date.sql GZDumpFile=Date.sql.tgz/usr/local/mysql/bin/mysqldump−uroot−p123456–quick–all−databases–flush−logs–delete−master−logs–single−transaction>DumpFile #/bin/tar czvf GZDumpFileDumpFile Last=date + “%Y-%m-%d %H:%M:%S” logFile=/data/mysql/backup/daily/bak.log echo開始:Begin終了:Last GZDumpFilesucc>>logFile
四、増分バックアップ
#!/bin/bash BakDir=/data/mysql/backup/hour BinDir=/usr/local/mysql/data logFile=/data/mysql/backup/hour/bak.log BinFile=/usr/local/mysql/data/mysql-bin.index/usr/local/mysql/bin/mysqladmin-uroot-p 123456 flush-logs#これは新しいmysql-binを生成するために使用されます.*ファイルCounter=wc-l BinFile|awk'{print$1}'NextNum=0#forループCounter,NextNumの2つの値を比較して、ファイルが存在するか、または最新のforfileincatBinFile do base=basename $fileNextNum=expr $NextNum + 1if[NextNum−eqCounter]then echo baseskip!>logFile else dest=BakDir/base if(test -e dest)thenechobase exist! >> logFileelsecpBinDir/baseBakDir echo basecopying>>logFile fi fi done echo date +”%Y-%m-%d %H:%M:%S” NextNumBakupsucc!>>logFile
五、完全バックアップ
# mysql -u root -p < full_bak.sql
六、増分バックアップ
#mysqlbinlog –no-defaults/data/mysql/backup/hour/mysql-bin.000058 | mysql -uroot -p12345 -v finance
質問レコード:
1)binlogパッケージunknown variable‘default-character-set=utf 8’
  1:

     /etc/my.cnf   default-character-set=utf8   charater-set-server=utf8

  2:

    mysqlbinlog --no-defaults mysql-bin.00000