14.6.2 Configuring InnoDB for Read-Only Operation 配置InnoDB只读操作 你可以查询InnoDB 表MySQL 数据目录是一个只读介质,通过启用 --innodb-read-only 配置选项在服务启动前 mysql> show variables like '%innodb-read-only%'; Empty set (0.00 sec) mysql> show variables like '%innodb_read_only%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | innodb_read_only | OFF | +------------------+-------+ 1 row in set (0.00 sec) 如何启用: 为了准备一个实例用于只读操作,确保所有的需要的信息是刷新到数据文件在存储到只读介质上, 让整个MySQL 实例启用只读模式, 指定下面的培训选项在启动时: --innodb-read-only=1 如果实例是在只读介质上的比如DVD或者CD,或者 /var目录根本不可写, --pid-file= 在可写设备上 Usage Scenarios 这个操作的模式是使用这些情况比如: 1. 分配一个MySQL 应用,或者MySQL数据集,在一个只读介质 比如DVD或者CD 2.多个MySQL 实例同时查询相同的数据目录,典型的在一个数据仓库配置。 你可能使用这个技术来避免瓶颈 当一个负载沉重的MySQL实例, 或者你可能使用不同的配置选项 对于各个实例来调整特定的查询 3.查询数据已经放放入到一个只读状态 对于安全或者数据的完整性的原因,比如归档的数据备份 它是如何工作的: 当服务器是运行在只读模式通过 --innodb-read-only选项, 某些InnoDB 功能和组件是被关闭或者完全关闭的 1,没有 change buffering,特别是没有合并从change buffer. 2. 没有crash recovery 节点在启动时, 实例必须执行一个缓慢的关闭在进入只读模式前 3.因为redo log 在只读操作是不使用的,你可以设置innodb_log_file_size 到最小值 4.除了I/O thread 线程外所有的后台进程都会被关闭,作为一个结果,只能实例不会遇到任何死锁 5.信息关于死锁,监控输出,不写到临时文件,作为一个结果, SHOW ENGINE INNODB STATUS 不产生任何输出 6.MVCC 处理是强制隔离级别被关闭。所有的查询读取最新的记录的版本,因为Update和delete 是不允许的