innodb_read_only - xiaoboluo768/qianjinliangfang GitHub Wiki

  • 以只读模式启动InnoDB。 用于在只读介质上分发数据库应用程序或数据集。 也可以在数据仓库中用于在多个实例之间共享相同的数据目录
    • 适用场景:
      • 在只读存储介质(如DVD或CD)上分发MySQL应用程序或一组MySQL数据
      • 多个MySQL实例同时查询相同的数据目录,通常在数据仓库中配置, 您可以使用此技术来避免高负载的MySQL实例可能发生的瓶颈
      • 由于安全查询或数据完整性原因(例如已归档备份数据)而需要数据只能读不能更改
    • 注意事项:当服务器通过--innodb-read-only选项以只读模式运行时,某些InnoDB功能和组件将被完全关闭或者有一些建议关闭的功能
      • 只读操作不会使用change buffer,所以建议使用参数innodb_change_buffering = 0关闭change buffer
      • 当以只读方式启动时,没有crash recovery阶段
      • 在只读操作中由于没有数据写入,参数innodb_log_file_size可以设置得足够小(如1M),但如果是几个实例共用data时其中一个节点是写入节点(只能允许一个节点写,并且磁盘是合并可能要使用mount -o nolock方式挂载),那么此项建议忽略
      • 除I/O读线程之外的所有后台线程都被关闭。因为只读实例不能遇到任何死锁
      • 不会有关于死锁,监视器输出等信息写入临时文件的动作。因此,SHOW ENGINE INNODB STATUS不会产生任何输出
      • 如果MySQL服务器以--innodb-read-only启动但数据目录仍在可写磁盘设备上存放,则root用户仍然可以执行DCL操作,例如GRANT和REVOKE
      • 只读模式时,有关读写模式变更的参数可以正常修改,但没有任何作用
      • MVCC强制隔离处理被关闭,所有查询都会读取最新版本的记录,因为无法进行更新和删除
      • 在只读模式中由于没有数据写入,所以不会使用undo log,可以设置参数innodb_undo_tablespaces和innodb_undo_directory配置选项禁用undo,但在多实例读同一份数据目录且有且仅有一个可读写实例时,此项建议忽略
    • 全局变量,只读变量,布尔型,默认为OFF,5.6.7版本引入

上一篇:innodb_default_row_format | 下一篇:innodb_online_alter_log_max_size