Skip to main content

Mysql配置

mysql获取配置信息路径

  • 命令行参数

mysql_safe --datadir=/data/sql_data

  • 配置文件

mysqld --help --verbose | grep -A 1 'Default options'

mysql配置参数的作用域

  • 全局参数

set global 参数名=参数值;

set @@global.参数名:=参数值;

  • 会话参数

set [session] 参数名=参数值;

set @@session.参数名:=参数值;

对线程进行分配的

  • sort_buffer_size 排序缓冲区大小

  • join_buffer_size 连接缓冲区

  • read_buffer_size 读缓冲区大小

  • read_rnd_buffer_size 索引缓冲区大小

如何为缓存池分配内存

Innodb_buffer_pool_size

总内存 -(每个线程所需要的内存*连接数)- 系统保留内存

key_buffer_size (MyISAM表的内存缓存次大小)

select sum(index_length) from information_schema.tables where engine = 'myisam'

I / O 相关配置参数

Innodb I/O 相关配置

  • Innodb_log_file_size 控制单个事务文件的大小

  • Innodb_log_files_in_group 控制事务日志的个数

  • 事务日志总大小

  • Innodb_log_files_in_group * Innodb_log_file_size

  • Innodb_log_buffer_size 日志缓冲区大小

  • Innodb_flush_log_at_trx_commit

  • 0:代表每秒进行一次log写入cache,并flush log到磁盘

  • 1【默认】:在每次事务提交执行log写入cache,并flush log到磁盘

  • 2【建议】:每次事务提交,执行log数据写入到cache,每秒执行一次flush log到磁盘

  • innodb_flush_method = O_DIRECT linux建议设置的值

  • Innodb_file_per_table = 1 设置表空间 强烈建议设置

  • Innodb_doublewrite = 1 双写缓存 建议设置

MyISAM I/O 相关配置

delay_key_write

OFF:每次写操作后刷新键缓冲中的脏块到磁盘

ON: 只对在键表时指定了delay_key_write选项的表使用延迟刷新

ALL:对所以MyISAM表都使用延迟键写入

安全相关配置参数

expire_logs_days 指定自动清理binlog的天数

max_allowed_packet 控制Mysql可以接收的包的大小

skip_name_resolve 禁用DNS查找

sysdate_is_now 确保sysdate()返回确定性日期

read_only 禁止非super权限的用户写权限

skip_slave_start 禁用Slave自动恢复

sql_mode 设置Mysql所使用的SQL模式

sync_binlog 控制Mysql如何向磁盘刷新binlog

max_connections 控制允许的最大连接数

tmp_table_size 和 max_heap_table_size