美文网首页
MySQL服务器参数配置

MySQL服务器参数配置

作者: yuanzicheng | 来源:发表于2017-05-14 17:53 被阅读194次

    MySQL运行时的性能与配置参数有着密切的联系,为了保证我们的MySQL服务高效,就必须对各项参数进行优化。

    MariaDB提供了多个适合不同规模的配置文件供选择和参考,位于/usr/share/mysql

    [root@localhost ~]# ls /usr/share/mysql/my-*.cnf -l
    -rw-r--r--. 1 root root  4920 5月   2 01:18 /usr/share/mysql/my-huge.cnf
    -rw-r--r--. 1 root root 20441 5月   2 01:18 /usr/share/mysql/my-innodb-heavy-4G.cnf
    -rw-r--r--. 1 root root  4907 5月   2 01:18 /usr/share/mysql/my-large.cnf
    -rw-r--r--. 1 root root  4920 5月   2 01:18 /usr/share/mysql/my-medium.cnf
    -rw-r--r--. 1 root root  2846 5月   2 01:18 /usr/share/mysql/my-small.cnf
    [root@localhost ~]#
    

    1. 内存配置参数

    1.1 配置MySQL可以使用的内存上限
    1.2 配置每个MySQL连接(线程)使用的内存
    # 排序缓冲区
    sort_buffer_size
    # 连接查询缓冲区
    join_buffer_size
    # 对MyISAM进行全表扫描时的读缓冲区
    read_buffer_size
    # 索引缓冲区
    read_rnd_buffer_size
    
    1.3 为缓存池分配内存
    # innodb缓存池:总内存-(每个线程内存*连接数)-系统保留内存;经验值为服务器内存的75%
    Innodb_buffer_pool_size
    # MyISAM缓存池:即使数据库表全部为InnoDB,也要分配此缓存池(因为MySQL系统表依然使用MyISAM引擎)
    key_buffer_size
    # 以下sql可以查看
    mysql> select sum(index_length) from information_schema.tables where engine = 'myisam'\G;
    

    2. IO配置参数

    2.1 InnoDB
    # 事务日志文件大小(如果业务繁忙,建议事务日志文件大小设置大些)
    Innodb_log_file_size
    # 事务日志文件数量
    Innodb_log_files_in_group
    # 事务日志缓冲区,不需要太大,32M-128M足够了(事务日志不是直接写入磁盘文件)
    Innodb_log_buffer_size
    # 事务日志刷新频率
    #   0:每秒从缓冲区将log写入操作系统cache,并flush log到磁盘
    #   1:每次提交事务,从缓冲区将log写入操作系统cache,并flush log到磁盘(默认)
    #   2:每次提交事务,从缓冲区将log写入操作系统cache,每秒flush log到磁盘(建议)
    Innodb_flush_log_at_trx_commit
    # InnoDB数据文件和日志文件刷新方式
    Innodb_flush_method=O_DIRECT(不缓存,直接写入存储设备,避免双重缓存)
    # 设为1,InnoDB为每个表建立单独的表空间
    Innodb_file_per_table=1(强烈建议)
    # 双写缓冲,避免数据页没有写完整造成数据损坏,增加安全性
    Innodb_doublewrite=1
    
    2.2 MyISAM
    # 延迟刷新关键字缓冲中的脏块到磁盘文件
    # OFF:每次写操作后刷新键缓冲中的脏块到磁盘
    # ON:只对制定了delay_key_write的表使用延迟刷新
    # ALL:对所有表使用延迟刷新
    delay_key_write
    

    3. 安全配置参数

    # 自动清理binlog日志的天数(至少覆盖两次全备间隔的天数)
    expire_logs_days
    # MySQL可以接受的包的大小 (建议32M左右)
    max_allow_packet
    # 禁用DNS查找(此时应使用ip授权,或者对MySQL服务器host中出现的域名授权)
    skip_dns_resolve
    # 确保sysdate()返回确定性日期
    sysdate_is_now
    # 禁止非super权限用户写操作(建议在从库中启用)
    read_only
    # 禁止slave重启后自动复制(建议在从库启用)
    skip_slave_start
    # MySQL使用的sql模式
    sql_mode
    

    4. 其它配置参数

    # MySQL何时向磁盘刷新binlog
    # 0:不主动刷新,操作系统决定何时刷新(默认为0)
    # n:没n次写操作,向磁盘刷新binlog(建议Master设为1)
    sync_binlog
    # 控制内存临时表大小(设为一致,不要太大)
    tmp_table_size和max_heap_table_size
    # MySQL允许的最大连接数(默认为100,建议1000、2000...)
    max_connections
    

    最后,MySQL服务器参数配置应综合考虑硬件环境、操作系统以及业务场景等多种因素。

    相关文章

      网友评论

          本文标题:MySQL服务器参数配置

          本文链接:https://www.haomeiwen.com/subject/cvifxxtx.html