簡體   English   中英

所有InnoDB表環境上的Mysql備份

[英]Mysql Backup on all InnoDB tables environment

目前,我正在使用mysqlbackup進行備份。 這將稱為“帶讀取鎖定的表刷新”,並增加了鎖定我的表的可能性,直到完成刷新並釋放全局鎖定為止。

因此,是否有任何備份我的數據庫的方法,這確實很大,沒有超過100 GB的表卻沒有此全局鎖定?

我讀過的mysqldump --single-transaction之類的東西在小型數據庫上很有用,事實並非如此。 有沒有類似的適用於我的情況?

希望如此 !

當表很大時,Percona Xtrabackup是一個很好的選擇。 這主要是由於以下兩點:

a)從邏輯備份(即:由mysqldump創建)恢復100GB表所花費的時間會過多,因為在重播sql時mysql必須重建索引並進行大量I / O處理。

b)在您進行第一次完全備份后,xtrabackup可以進行增量備份,從而使例行的夜間或小時備份變得更快,更小。

就是說,請注意,因為xtrabackup復制/ lib / mysql目錄中的所有相關文件,所以磁盤空間要求非常重要。 如果您的數據庫在磁盤上分配了200GB(即使某些表上有一些空的分配空間),則備份大小將為200GB。

相比之下,這與mysqldump的邏輯備份(可以重新創建數據,表結構,索引等的sql語句)占用的空間很小。

在此處閱讀有關Percona xtrabackup工作原理的更多信息: https ://www.percona.com/doc/percona-xtrabackup/LATEST/how_xtrabackup_works.html

與innodb表一起使用的mysqldump以及--master-data和--single-transaction選項的組合是一個不錯的選擇。 它在所有表上都獲得了全局讀鎖定,但是時間足夠長,無法讀取二進制日志坐標。 通常,這將非常快,除非正在進行非常重要的更新,在這種情況下,它可能會暫停直到更新完成。

這樣可以為您提供一致的時間點備份,並且沒有超出初始讀取鎖定的鎖定。

語法如下:

  mysqldump --all-databases --master-data --single-transaction > all_databases.sql

要么

  mysqldump --master-data --single-transaction my-database > my-database.sql

備份單個數據庫。

可以在dev.mysql.com網站上閱讀有關此內容的更多信息: https : //dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_single-transaction

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM