主博客:
目录
1.在MySQL配置文件中指定选项
由于MySQL使用数据文件、日志文件和页面大小设置来初始化InnoDB,因此建议您在初始化InnoDB之前,在MySQL启动时读取的配置文件中定义这些设置。通常情况下,InnoDB是在MySQL服务器第一次启动时初始化的。
您可以将InnoDB选项放在服务器启动时读取的任何配置文件的[mysqld]组中。
MySQL配置文件的位置在“使用配置文件”中进行了描述。
要确保mysqld只从特定文件(和mysqld-auto.cnf)读取选项,请在启动服务器时使用--defaults file选项作为命令行上的第一个选项:
mysqld --defaults-file=path_to_option_file
2.查看InnoDB初始化信息
要在启动期间查看InnoDB初始化信息,请从命令提示符启动mysqld,该命令提示符将初始化信息打印到控制台。
例如,在Windows上,如果mysqld位于C:\Program Files\MySQL\MySQL Server 8.0\bin中,则如下启动MySQL服务器:
C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --console
在类Unix系统上,mysqld位于MySQL安装的bin目录中:
$> bin/mysqld --user=mysql &
如果你没有将服务器输出发送到控制台,请在启动后查看错误日志,查看启动过程中打印的初始化信息InnoDB。
有关使用其他方法启动MySQL的信息,请参阅“自动启动和停止MySQL”。
注意:
InnoDB在启动时不会打开所有用户表和相关的数据文件。然而,InnoDB确实会检查数据字典中引用的表空间文件的存在。如果没有找到表空间文件,InnoDB会记录一个错误并继续启动序列。在重做应用程序的崩溃恢复过程中,可能会打开重做日志中引用的表空间文件。
3.重要的存储注意事项
在继续进行启动配置之前,请查看以下与存储相关的注意事项。
在某些情况下,可以通过将数据和日志文件放置在单独的物理磁盘上来提高数据库性能。您还可以将原始磁盘分区(原始设备)用于InnoDB数据文件,这可能会加快I/O速度。
请参阅为 系统表空间使用原始磁盘分区。
InnoDB是一个事务安全(ACID兼容)的存储引擎,具有提交、回滚和崩溃恢复功能来保护用户数据。
但是,如果底层操作系统或硬件不能像宣传的那样工作,它就不能这样做。
许多操作系统或磁盘子系统可能会延迟或重新排序写入操作以提高性能。
在某些操作系统上,应该等到文件的所有未写入数据都被刷新后才进行的fsync()系统调用实际上可能会在数据被刷新到稳定存储之前返回。
因此,操作系统崩溃或停电可能会破坏最近提交的数据,在最坏的情况下,甚至会因为写入操作已被重新排序而损坏数据库。
如果数据完整性对您来说很重要,请在生产中使用任何东西之前执行“拔出插头”测试。
在macOS上,InnoDB使用了一种特殊的fcntl()文件刷新方法。
在Linux下,建议禁用回写缓存。
在ATA/SATA磁盘驱动器上,像hdparm-W0/dev/hda这样的命令可能会禁用回写缓存。
请注意,某些驱动器或磁盘控制器可能无法禁用回写缓存。
关于保护用户数据的InnoDB恢复功能,InnoDB使用了一种文件刷新技术,该技术涉及一种称为双写缓冲区的结构,该结构在默认情况下启用(InnoDB_doublewrite=ON)。
双写缓冲区为意外退出或停电后的恢复增加了安全性,并通过减少对fsync()操作的需求来提高大多数Unix的性能。
如果您担心数据完整性或可能的故障,建议保持启用innodb_doublewrite选项。
有关双写缓冲区的信息,请参阅“InnoDB磁盘I/O”。
在将NFS与InnoDB一起使用之前,请查看“将NFS与MySQL一起使用”中概述的潜在问题。
4.系统表空间数据文件配置
innodb_dat