只想知道在實時數據庫上運行mysqldump有什麼風險?有沒有數據庫損壞的機會? mysqldump似乎鎖定整個數據庫。在實時數據庫上運行mysqldump
回答
數據庫表使用什麼引擎?如果您使用的是事務表,則可以使用「單事務」選項進行轉儲,這會將錶轉儲爲一致狀態。如果您使用MyISAM等非事務性表格,則不應有任何數據庫損壞問題。如果您遇到種族情況,您可能會遇到不一致的數據問題。無論哪種情況,在轉儲發生時,您都會顯着減慢數據庫響應時間。最好的辦法是在運行轉儲之前,先對一個奴隸運行轉儲或等待該站點靜止。
我爲這個數據庫使用MyISAM。當mysqldump正在運行時,我將用戶鎖定3/4分鐘,目前確定無誤。在這一點上,我更關心數據的完整性。 – rpat 2012-02-24 15:02:20
以下是您可能遇到的問題。假設我有一個帶有「水果」表和一個「購物袋」的數據庫。我正在運行我的轉儲,我鎖定了水果桌並將其轉儲。假設之後有人向水果桌上添加新的水果,並且某人將新的水果放入他們的購物袋中(在shopping_bag表中創建一行引用新的水果行)。當購物袋被傾倒時,您現在有一排參考不存在的水果!這不一定會導致你的問題......但它可能,而且是不一致的。 – rpierce 2012-02-24 15:18:53
這正是我的擔心所在。我一直在運行mysqldump。我偶爾會看到不一致的地方。我不確定他們來自哪裏。 mysqldump通過cron運行。所以我無法知道這些不一致是否由mysqldump引起。我無法經營奴隸。我認爲數據庫在轉儲過程中被鎖定。有沒有辦法做到這一點,因爲用戶無論如何都不能做任何事情,當他轉儲運行 – rpat 2012-02-24 15:33:47
從我的經驗來看,它是傾銷時的表鎖。如果您的數據庫處於較大的一端,並且您的流量很大,那麼您就必須恢復流量。我不認爲數據損壞會成爲一個問題,因爲它在轉儲該表的數據之前鎖定了一個表。但是,如果我對錶鎖是錯誤的,並且它是數據庫鎖,那麼在轉儲過程中基本上關閉了數據庫,但這就是隊列的用途,當轉儲完成時,它將按順序開始執行隊列因爲他們收到。
我不確定鎖定部分。它需要3/4分鐘來轉儲數據庫。在這段時間阻止用戶對我來說確實沒問題。但是任何類型的數據完整性都是不可接受的。 – rpat 2012-02-24 14:58:18
- 1. mysqldump的部分數據庫
- 2. 備份數據庫Django MysqlDump
- 3. 在單個SQL Azure數據庫上運行多個數據庫實例
- 4. 在真實設備上運行數據庫時,無法從數據庫檢索數據
- 5. Ansible Playbook將在Postgres SQL數據庫實例上運行查詢
- 6. 在運行時替換SQLite數據庫
- 7. 在運行時創建數據庫
- 8. 實體框架在運行時連接到多個數據庫
- 9. 處理基於數據庫數據在運行時實例化的泛型類
- 10. 在IISExpress上運行RavenDB時無法創建數據庫
- 11. 同時在多個數據庫上運行SQL狀態?
- 12. MySqlDump在備份大數據庫時遇到問題嗎?
- 13. 哪裏是mongodb數據庫,當meteor實例沒有運行時
- 14. '本地數據庫運行時:無法創建命名實例
- 15. 在文件的每一行上運行MySQLdump;未找到命令
- 16. CodeIgniter運行時數據庫連接
- 17. 使用mysqldump Mysql PHP備份數據庫
- 18. 使用mysqldump和數據庫用戶
- 19. 使用mysqldump緩慢寫入數據庫
- 20. mysqldump的mysql數據庫備份
- 21. 使用LINQ在運行時從數據庫獲取數據
- 22. 是否當運行測試用例時,jUnit測試用例實際上在數據庫中插入數據
- 23. 正在運行mysqldump引發錯誤2013
- 24. Uable在postgre數據庫上運行heroku上的遷移
- 25. 在所有表上的特定數據庫上運行DTA
- 26. tsql知道dbcc checkdb上次在數據庫上運行的時間
- 27. 執行mysqldump以sql格式備份數據庫
- 28. 在每個數據庫上運行查詢並顯示數據庫名稱
- 29. Spring 3 /休眠 - 在運行時執行數據庫轉儲
- 30. 在現有的數據庫更新日誌上運行新的Liquibase實例db
'man mysqldump' – silly 2012-02-24 14:45:52
本網站專門提供編程問題,而您的問題似乎更適合http://dba.stackexchange.com。你可能會在那裏得到更快的相關答案。 – 2012-02-24 14:47:23