我有一个服务器(戴尔PE2950)在RAID控制器上带有电池供电的写入caching。
我安全的设置innodb_flush_log_at_trx_commit = 0在MySQL服务器上的数据文件存储在一个raid0卷?
如果卷被突袭1/5/10会有不同的答案吗?
谢谢!
如果您担心丢失数据,这是不安全的。 根据手册,事务可能已经被提交,但是还没有被写入到磁盘 – 只在内存中。 这意味着mysqld崩溃或操作系统崩溃或电源故障可能导致事务丢失。
在一些系统中,只要事务完全丢失或完全保留,就可能丢失事务。 在这种情况下,您可以closures此设置。
电池支持的RAID控制器的相关性是控制器上的安全写入caching。 如果控制器将caching写入但失去电力,没有电池,它将丢失写caching中的数据。 但是,MySQL已经预料到这将在磁盘上安全。 所以电池可以安全地使用RAID控制器中的写入caching。 通常情况下,如果电池电量过低,控制器会自动禁用写入caching。
RAID级别不直接相关。 如果数据在磁盘上,则在磁盘上。 如果你失去权力,这将是安全的。 RAID级别的重要性在于磁盘是否死亡 – 一种完全不同的故障模式。 在RAID0的情况下,所有数据都会有明显的丢失。 在RAID5的情况下,您可以继续大量的性能。 使用RAID1 / 10,您可以继续保持非常小的性能。
但是,不要把RAID误认为是备份。 数据库服务器有几十种故障模式,RAID只处理其中的一种:磁盘故障。 你的文件系统可能会崩溃,你可能会意外删除数据,你的数据文件可能会由于一个模糊的MySQL错误而中断。 所以,不要忘记使用mysqldump保留重要数据的备份。 不要复制数据文件,除非MySQL停止,因为它们可能不一致。
为了安全和高性能,你应该有innodb_flush_log_at_trx_commit = 1和RAID 10。
干杯