MySQL備份方案-->(利用mysqldump以及binlog二進位日誌)

來源:互聯網
上載者:User

隨著資料不斷增加,而且為了相容以後的innodb儲存引擎, 所以考慮採用mysqldump全備+日誌增量備份的策略。使用mysqldump對於mysql大部分mysql儲存引擎比如myisam、innodb都有很好的支援。

方案一:mysqldump全備份+日誌增量備份

1, mysqldump備份方案:

周一淩晨3點全備

周二到周日淩晨3點增量備份

 

2, 備份步驟

(1) 建立備份目錄,備份指令碼存放目錄

Shell > mkdir /usr/mysqlbackup;

Shell > chmod 755 /usr/mysqlbackup;

Shell > mkdir /usr/mysqlbackup/daily;

Shell > chmod 755 /usr/mysqlbackup/daily;

Shell > mkdir /usr/script;

Shell > chmod 777 /usr/script/*.sh

 

(2) 啟用二進位日誌

如果日誌沒有啟開,必須啟用binlog,要重啟mysqld,首先,關閉mysqld,開啟/etc/my.cnf,加入以下幾行:

[mysqld]

log-bin

然後重新啟動mysqld,會產生hostname-bin.000001以及hostname-bin.index,前面的記錄檔是記錄所有對資料的更新操作,後面的檔案是儲存所有二進位檔案的索引,不能輕易被刪除。

 

(3) 全備份,增量備份。

詳細見mysqlFullBackup.sh、mysqlDailyBackup.sh指令碼(請注意指令碼裡面的備份目錄、mysql軟體安裝目錄、壓縮檔名以及使用者名稱密碼,如有不符,請修改)。

下面是部分shell上單個手動執行的測試命令。

Shell> /usr/local/mysql/bin/mysqldump -uroot-pnYuIman25040slave201012301124 --no-create-info=FALSE --order-by-primary=FALSE--force=FALSE --no-data=FALSE --tz-utc=TRUE --flush-privileg

es=FALSE --compress=FALSE --replace=FALSE--insert-ignore=FALSE --extended-insert=TRUE --quote-names=TRUE --hex-blob=TRUE--complete-insert=FALSE --add-locks=TRUE --port=3306 --d

isable-keys=TRUE --delayed-insert=FALSE--create-options=TRUE --delete-master-logs=FALSE --comments=TRUE--default-character-set=utf8 --max_allowed_packet=1G --flush-logs=FALSE -

-dump-date=TRUE --lock-tables=TRUE--allow-keywords=FALSE --events=FALSE --single-transaction=TRUE --routines--all-databases > /backup/mysql/full/mysql_20110104_195546.sql

 

(4) 設定crontab任務,每天執行備份指令碼

shell> crontab –e

#每個星期日淩晨3:00執行完全備份指令碼

0 3 * * 0 /usr/scrpit/mysqlFullBackup.sh>/dev/null 2>&1

#周一到周六淩晨3:00做增量備份

0 3 * * 1-6/root/MySQLBackup/mysqlDailyBackup.sh >/dev/null 2>&1

(5) 清除舊的備份檔案。

每天去看查看下備份磁碟空間,刪除舊的備份壓縮檔。

3, 資料庫恢複

 

【注釋】如果增量恢複操作中報“ERROR 1051 (42S02) at line 32: Unknown table 'fin_cell_attr_his'”類似的錯誤,則需要現create一張空表,然後再執行增量恢複。

Mysql> createtable tb1 ……;

 

(1) 全恢複:

用 mysqldump 備份出來的檔案是一個可以直接倒入的 SQL 指令碼,直接用 mysql命令恢複最後一次全備份:

先從備份檔案伺服器上copy出來,解壓縮,再恢複,例如:

Shell>/root/s3cmd/s3cmd get s3://csf-backup/mysqldb/ mysql_20101216_231900.sql.tar.gz /usr/mysqlrestore/

Shell>/root/s3cmd/s3cmd get s3://csf-backup/mysqldb/ mysql_binlog_20101217_030100.tar.gz /usr/mysqlrestore/

Shell>cd /usr/mysqlrestore/

Shell>tar -xvf mysql_20101216_231900.sql.tar.gz

Shell>tar -xvf mysql_binlog_20101217_030100.tar.gz

 

重新整理日誌:

Mysql>flush logs;

恢複最後一次全備份命令:

Shell>/usr/local/mysql/bin/mysql -uroot -p123456 </tmp/mysqlbackup/backup_20101215_adb.sql

恢複最後一次全備份之後的所有增量備份命令:

Shell>/usr/local/mysql/bin/mysqlbinlog mysql-bin.00007 mysql-bin.00008mysql-bin.00009 mysql-bin.00010 mysql-bin.00011 | mysql

檢查:查看資料庫結構以及資料。

 

Linux下通過mysqldump備份MySQL資料庫成sql檔案

Linux中使用mysqldump對MySQL資料庫進行定時備份

 

本文的更多詳情請繼續閱讀第2頁的精彩內容:

  • 1
  • 2
  • 下一頁

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.