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 是不允许的