你可以查询InnoDB
表,其中MySQL数据目录是只读媒体——innodb-read-only
服务器启动时的配置选项。
如何启用
要为只读操作准备一个实例,请确保所有必要的信息都已准备好刷新在将数据文件存储在只读介质上之前,将其写入。在禁用更改缓冲的情况下运行服务器(innodb_change_buffering = 0
)和做缓慢关闭.
要为整个MySQL实例启用只读模式,请在服务器启动时指定以下配置选项:
如果实例位于DVD或CD等只读媒体上,则
/ var
目录不能被所有人写:——pid文件=
而且path_on_writeable_media
——event-scheduler =禁用
——innodb-temp-data-file-path
.的路径、文件名和文件大小InnoDB
临时表空间数据文件。默认设置为ibtmp1:12M: autoextend
,这将创建ibtmp1
数据目录下的临时表空间数据文件。要为只读操作准备实例,请设置innodb_temp_data_file_path
到数据目录之外的位置。该路径必须相对于数据目录。例如:——innodb-temp-data-file-path =../../../ tmp / ibtmp1:12M: autoextend
使用场景
这种操作模式适用于以下情况:
在只读存储介质(如DVD或CD)上分发MySQL应用程序或MySQL数据集。
多个MySQL实例同时查询相同的数据目录,通常在数据仓库配置中。你可以用这个技巧来避免瓶颈这可能发生在一个负载很重的MySQL实例中,或者您可以为不同的实例使用不同的配置选项来针对特定类型的查询调优每个实例。
查询出于安全或数据完整性考虑被设置为只读状态的数据,例如存档备份数据。
该特性主要是为了提高分布和部署的灵活性,而不是基于只读方面的原始性能。看到第8.5.3节“优化InnoDB只读事务”用于优化只读查询的性能的方法,这些方法不需要将整个服务器设置为只读。
它是如何工作的
方法以只读模式运行服务器时——innodb-read-only
选项,某些InnoDB
功能和组件被减少或完全关闭:
没有改变缓冲已经完成,特别是没有从更改缓冲区进行合并。为只读操作准备实例时,要确保更改缓冲区为空,请禁用更改缓冲区(
innodb_change_buffering = 0
)和做缓慢关闭第一。因为重做日志不是用于只读操作,可以设置
innodb_log_file_size
减小到尽可能小的大小(1 MB),然后使实例只读。大多数后台线程都是关闭的。保留I/O读线程,以及I/O写线程和用于写入临时文件的页面清理线程,这些文件被允许在只读模式下。
关于死锁、监视器输出等的信息不会写入临时文件。因此,
显示引擎innodb状态
不产生任何输出。如果MySQL服务器以
——innodb-read-only
但是数据目录仍然在可写媒体上,根用户仍然可以执行DCL操作如格兰特
而且撤销
.对配置选项设置的更改通常会更改写操作的行为,但当服务器处于只读模式时,这些更改将不起作用。
的undo日志不使用。禁用的任何设置
innodb_undo_tablespaces
而且innodb_undo_directory
配置选项。