MySQL中的備份和恢複

來源:互聯網
上載者:User

標籤:


MySQL備份

    MySQL中的邏輯備份是將資料庫中的資料備份為一個文字檔,備份的檔案可以被查看和編輯。在MySQL中,使用mysaldump工具來完成備份。有以下3種來調用mysqldump:

  • 備份指定的資料庫,或者此資料庫中某些表。
shell>mysqldump [option] db_name [tables]
  • 備份指定的一個或多個資料庫
shell>mysqldump [option] --database DB1 [DB2 DB3...]
  • 備份所有資料庫
shell>mysqldump [option] --all-database
    如果沒有指定資料庫中的任何錶,預設匯出所有資料庫中所有表。以下給出一些使用mysqldump工具進行備份的例子    (1)備份所有資料庫:
[[email protected] ~]$ mysqldump -uroot -p --all-database > all.sql
    (2)備份資料庫test
[[email protected] ~]$ mysqldump -uroot -p test > test.sql
    (3)備份資料庫test下的表emp
[[email protected] ~]$ mysqldump -uroot -p test emp > emp.sql
    (4)備份資料庫test下的表emp和dept
[[email protected] ~]$ mysqldump -uroot -p test emp dept > emp_dept.sql
    (5)備份資料庫test下的所有表為逗號分割的文本,備份到/tmp:
[[email protected] ~]$ mysqldump -uroot -p -T /tmp test emp --fields-terminated-by ‘,‘
  MySQL 恢複MySQL中的恢複可分為三種,分別是: 完全恢複基於時間點恢複基於位置恢複完全恢複mysqldump的恢複也很簡單,將備份作為輸入執行即可,具體文法如下:
mysql -uroot -p dbname < bakfile
注意,將備份恢複後資料並不完整,還需要將備份後執行的日誌進行重做,文法如下:
mysqlbinlog binlog-file | mysql -uroot -p
基於時間點恢複    由於誤操作,比如誤刪除了一些表,這時使用完全恢複是沒有用的,因為日誌裡還存在誤操作的語句,我們需要的是恢複到誤操作之前的狀態,然後跳過誤動作陳述式,再恢複後面執行的語句,完成我們的恢複。這種恢複叫不完全恢複,在MySQL中,不完全恢複分別為基於時間點的恢複和基於位置的恢複。    以下是基於時間點恢複的操作步驟    (1)如果上午10點發生了誤操作,可以用以下語句用備份和BINLOG資料恢複到故障前:
shell>mysqlbinlog --stop-date="20150929 9:59:59" /var/log/mysql/bin.123456 | mysql -uroot -pmypwd
    (2)跳過故障時的時間點,繼續執行後面的BINLOG,完成恢複。
shell>mysqlbinlog --start-date="20150929 10:01:00" /var/log/mysql/bin.123456 | mysql -uroot -pmypwd 
 基於位置恢複    和基於時間點的恢複類似,但是更精確,因為同一個時間點可能有很多條SQL語句同時執行。恢複的操作步驟如下:    (1)在shell下執行如下命令:
shell>mysqlbinlog --start-date="20150929 9:55:00" --stop-date="20150929 10:05:00" /var/log/mysql/bin.123456 > /tmp/mysql_restore.sql
     該命令將在/tmp目錄建立小的文字檔,編輯此檔案,找到出錯語句前後的位置號,例如前後位置號分別是565512和565515.    (2)恢複了以前的備份檔案後,應從命令列輸入下面內容:
shell>mysqlbinlog --stop-position="551212" /var/log/mysql/bin.123456 | mysql -uroot -pmypwdshell>mysqlbinlog --start-position="551215" /var/log/mysql/bin.123456 | mysql -uroot -pmypwd
    上面的第一行將恢複到停止位置為止的所有事務。下一行將恢複從給定的起始位置直到二進位日誌結束的所有事務。因為mysqlbinlog的輸出包括每個SQL語句記錄之前的SET TIMESTAMP語句,因此恢複的資料和相關MySQL日誌將反應事務執行的原時間。 別忘了給個贊哦!~

MySQL中的備份和恢複

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.