Restore

使用 –single-transaction 恢復 mysql 數據庫

  • May 31, 2016

我了解到在 mysqldump 工具中指定“–single-transaction”(是的,我們確實有 InnoDB)選項會產生利用事務的轉儲。但是,我沒有找到一種方法來從我的轉儲文件中恢復數據庫,同時還利用事務。那就是我不知道如何製作轉儲文件,使其執行將在單個事務中恢復轉儲的數據庫,而不會發出任何鎖。

有人遇到過這樣的問題嗎?

--single-transaction用於在轉儲時確保轉儲一致,與導入/恢復無關。

通常不可能在單個事務中載入轉儲,因為許多CREATE語句都執行隱式送出。

這通常甚至是不可取的,因為要使回滾成為可能,事務需要保留撤消日誌,如果您在許多表上導入許多行,日誌將增長太多,佔用記憶體和磁碟空間並減慢導入速度等等其他操作。

如果您的問題是導入速度,請檢查轉儲中是否使用了擴展插入(每個插入語句一次插入多行)並且您為 InnoDB 配置了適當的緩衝池和日誌大小。

如果您想導入數據而不發出問題中所述的任何鎖,那麼恐怕這是不可能的,因為 DML(插入、更新、刪除)只需鎖定即可保持 ACID。

您不應在執行時從轉儲中恢復任何服務的數據庫,並且將特定數據庫恢復到託管其他數據庫的伺服器實例不應發出任何阻礙這些其他服務的鎖定。

引用自:https://dba.stackexchange.com/questions/139970