只想知道在实时数据库上运行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转储数据库JAVA
- 2. 备份数据库Django MysqlDump
- 3. mysqldump的部分数据库
- 4. 在单个SQL Azure数据库上运行多个数据库实例
- 5. 在真实设备上运行数据库时,无法从数据库检索数据
- 6. 尝试还原数据库时,mysqldump会执行什么操作?
- 7. Ansible Playbook将在Postgres SQL数据库实例上运行查询
- 8. 从PHP运行mysqldump
- 9. 在运行时创建数据库
- 10. 在运行时替换SQLite数据库
- 11. 在运行时更改数据库codeigniter
- 12. 在运行时设置NHibernate数据库
- 13. 在运行时更改实体模型数据库
- 14. 实体框架在运行时连接到多个数据库
- 15. 在运行时用另一个数据库替换数据库。
- 16. 处理基于数据库数据在运行时实例化的泛型类
- 17. Uni-Code在数据库和界面上不能同时运行?
- 18. 同时在多个数据库上运行SQL状态?
- 19. 在JBoss 4.2.3上运行时擦除MySQL数据库
- 20. 在Google App Engine上运行Wordpress时出现数据库错误
- 21. 在运行时切换数据库上下文
- 22. 在IISExpress上运行RavenDB时无法创建数据库
- 23. 克隆数据库或在laravel上运行时运行sql dump 4
- 24. MySqlDump在备份大数据库时遇到问题吗?
- 25. '本地数据库运行时:无法创建命名实例
- 26. 实体框架5运行时日志数据库的变化
- 27. 哪里是mongodb数据库,当meteor实例没有运行时
- 28. 如何在实例上的所有数据库上运行相同的查询?
- 29. 在文件的每一行上运行MySQLdump;未找到命令
- 30. 在Oracle数据库上运行统计信息时,weblogic数据源过载
'man mysqldump' – silly 2012-02-24 14:45:52
本网站专门提供编程问题,而您的问题似乎更适合http://dba.stackexchange.com。你可能会在那里得到更快的相关答案。 – 2012-02-24 14:47:23