🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
1、指定配置文件位置 MySQL实例启动需要依赖my.cnf配置文件,而配置文件可以存在于多个操作系统目录下 my.cnf文件的默认查找路径,从上到下找到的文件先读,但优先级逐级提升。 每个文件都可以找到,相同的配置项最后加载的生效。 ![](https://box.kancloud.cn/6b386ff55c1c27ee9824a851e78cfb7b_760x301.png) 2、系统表空间数据文件配置 可以通过innodb_data_file_path和innodb_data_home_dir来配置系统表空间数据文件 Innodb_data_file_path可以包含一个或多个数据文件,中间用;号分开 innodb_data_file_path=datafile_spec1[;datafile_spec2]... datafile_spec1 = file_name:file_size[:autoextend[:max:max_file_size]] 其中autoextend和max选项只能用作最后的这个数据文件。Autoextend默认情况下是一次增加64MB,如果要修改此值可通过innodb_autoextend_increment参数。Max用来指定可扩展数据文件的最大容量用来避免数据文件大小超过可用磁盘空间大小。 举例如下: [mysqld] innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend 表示指定ibdata1和ibdata2两个数据文件,其中ibdata1文件为固定的50M大小,而ibdata2文件初始化为50M并可自动扩展容量 [mysqld] innodb_data_file_path=ibdata1:12M:autoextend:max:500M innodb_data_home_dir参数用来显示指定数据文件的存储目录,默认是MySQL安装后的数据文件目录,举例如下: [mysqld] innodb_data_home_dir = /path/to/myibdata/ innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend 当然也可以在innodb_data_file_path中指定绝对路径的数据文件 [mysqld] innodb_data_home_dir = innodb_data_file_path=/path/to/myibdata/ibdata1:50M;/path/to/myibdata/ibdata2:50M:autoextend 3、日志文件配置 默认情况下InnoDB会在数据文件夹下创建两个48M的日志文件,分别是ib_logfile0和ib_logfile1。 Innodb_log_group_home_dir参数用来定义redo日志的文件位置 mysql> show variables like '%innodb_log_file%'; +---------------------------+----------+ | Variable_name | Value | +---------------------------+----------+ | innodb_log_file_size | 50331648 | | innodb_log_files_in_group | 2 | +---------------------------+----------+ [mysqld] innodb_log_group_home_dir = /dr3/iblogs innodb_log_files_in_group参数用来定义日志文件的个数,默认和推荐值都是2 innodb_log_file_size参数定义了每个日志文件的大小,日志文件越大意味着buffer pool进行文件间切换的操作越少,从而减少IO,一般至少要保证在高峰期的1小时内的所有日志都能存放在一个日志文件里而不发生切换,当然文件大小也有最大限制,就是所有日志文件的总大小不能超过512G 4、Undo表空间配置 默认情况下,undo日志是存放在系统表空间里,但也可以选择在独立的一个或多个undo表空间中存放undo日志 Innodb_undo_directory参数决定了独立的undo表空间存放目录 Innodb_undo_logs参数决定了回滚段的个数,该变量可以动态调整 Innodb_undo_tablespaces参数决定了独立undo表空间的个数,比如设置为16时则会在undo表空间存放目录下创建16个undo文件,默认为10M mysql> show variables like '%innodb_undo%'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | innodb_undo_directory | ./ | | innodb_undo_log_truncate | OFF | | innodb_undo_logs | 128 | | innodb_undo_tablespaces | 0 | 5、临时表空间配置 默认情况下,innodb会创建一个自增长的ibtmp1文件在数据文件夹下作为临时表空间数据文件。 Innodb_temp_data_file_path参数可以指定文件路径,文件名和文件大小 mysql> show variables like '%innodb_temp%'; +----------------------------+-----------------------+ | Variable_name | Value | +----------------------------+-----------------------+ | innodb_temp_data_file_path | ibtmp1:12M:autoextend | +----------------------------+-----------------------+ 6、数据页配置 Innodb_page_size参数用来指定所有innodb表空间的数据页大小。默认是16K大小,也可以设置为64K、32K、8K和4K。一般设置为存储磁盘的block size接近的大小. 7、内存相关配置 Innodb_buffer_pool_size参数确定了缓存表数据和索引数据的内存区域大小,默认为128M,推荐设置为系统内存的50%~80%。 在服务器有大量内存的情况下,也可以设置多个缓存以提高系统并发度。Innodb_buffer_pool_instances参数就是用来做这个设置。 Innodb_log_buffer_size参数确定了redo log缓存的大小,默认值是16M,其大小取决于是否有某些大的事务会大量修改数据而导致在事务执行过程中就要写日志文件。 8、InnoDB只读设置 InnoDB可以通过—innodb-read-only参数设置数据表只能读取 [mysqld] innodb-read-only=1 mysql> update temp set id2=100; ERROR 1015 (HY000): Can't lock file (errno: 165 - Table is read only)