美文网首页
Mysql的配置文件

Mysql的配置文件

作者: 苏水的北 | 来源:发表于2022-01-14 16:01 被阅读0次

    [root@db01 ~]# cat /etc/my.cnf
    [mysqld]
    ########################################

    General

    ########################################
    user=mysql
    port=3306

    MySQL服务端默认监听的TCP/IP端口

    pid_file=/data/3306/data/mysql.pid

    进程ID文件存放路径

    basedir=/application/mysql

    MySQL软件安装路径

    datadir=/data/3306/data

    MySQL数据文件存放路径

    socket=/tmp/mysql.sock

    用于本地连接的Unix套接字文件存放路径

    tmpdir=/data/3306/data

    MySQL临时文件存放路径

    character_set_server=utf8mb4

    MySQL服务端字符集

    collation_server=utf8mb4_general_ci

    MySQL服务端校对规则

    default-storage-engine=InnoDB

    设置默认存储引擎为InnoDB

    autocommit=0

    默认为ON,设置为OFF,关闭事务自动提交

    transaction_isolation=READ-COMMITTED

    MySQL支持4种事务隔离级别,他们分别是:

    READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE.

    如没有指定,MySQL默认采用的是REPEATABLE-READ,ORACLE默认的是READ-COMMITTED

    lower_case_table_names=0

    库名、表名是否区分大小写。默认为0,设置1,不区分大小写,创建的表、数据库都以小写形式存放磁盘。

    ########################################

    Network & Connection

    #########################################
    max_connections = 1000

    MySQL允许的最大并发连接数,默认值151,如果经常出现Too Many Connections的错误提示,则需要增大此值。

    max_user_connections = 1000

    每个数据库用户的最大连接,(同一个账号能够同时连接到mysql服务的最大连接数),默认为0,表示不限制。

    back_log = 500

    MySQL监听TCP端口时设置的积压请求栈大小,默认50+(max_connections/5),最大不超过900

    max_connect_errors = 10000

    每个主机的连接请求异常中断的最大次数。对于同一主机,如果有超出该参数值个数的中断错误连接,则该主机将被禁止连接。如需对该主机进行解禁,执行:FLUSH HOST。

    interactive_timeout = 28800

    服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。默认值:28800秒(8小时)

    wait_timeout = 28800

    服务器关闭非交互连接之前等待活动的秒数。默认值:28800秒(8小时)

    指定一个请求的最大连接时间,当MySQL连接闲置超过一定时间后将会被强行关闭。对于4GB左右内存的服务器来说,可以将其设置为5~10。

    connect_timeout = 28800

    在获取连接时,等待握手的超时秒数,只在登录时生效。主要是为了防止网络不佳时应用重连导致连接数涨太快,一般默认即可。

    max_allowed_packet = 256M

    指定在网络传输中一次消息传输量的最大值。系统默认值 为1MB,最大值是1GB,必须设置1024的倍数。

    ########################################

    Thread & Buffer

    #########################################
    sort_buffer_size = 200M

    排序缓冲区大小,connection级参数,默认大小为2MB。如果想要增加ORDER BY的速度,首先看是否可以让MySQL使用索引,其次可以尝试增大该值。

    read_buffer_size = 160M

    顺序读缓冲区大小,connection级参数,该参数对应的分配内存是每连接独享。对表进行顺序扫描的请求将分配一个读入缓冲区。

    read_rnd_buffer_size = 160M

    随机读缓冲区大小,connection级参数,该参数对应的分配内存是每连接独享。默认值256KB,最大值4GB。当按任意顺序读取行时,将分配一个随机读缓存区。

    join_buffer_size = 320M

    联合查询缓冲区大小,connection级参数,该参数对应的分配内存是每连接独享。

    bulk_insert_buffer_size = 64M

    批量插入数据缓存大小,可以有效提高插入效率,默认为8M

    thread_cache_size = 8

    服务器线程缓冲池中存放的最大连接线程数。默认值是8,断开连接时如果缓存中还有空间,客户端的线程将被放到缓存中,当线程重新被请求,将先从缓存中读取。

    根据物理内存设置规则如下:1G ?> 8,2G ?> 16,3G ?> 32,大于3G ?> 64

    thread_stack = 256K

    每个连接被创建时,mysql分配给它的内存。默认192KB,已满足大部分场景,除非必要否则不要动它,可设置范围128KB~4GB。

    query_cache_type = 0

    关闭查询缓存

    query_cache_size = 0

    查询缓存大小,在高并发,写入量大的系统,建议把该功能禁掉。

    query_cache_limit = 400M

    指定单个查询能够使用的缓冲区大小,缺省为1M

    tmp_table_size = 1024M

    MySQL的heap(堆积)表缓冲大小,也即内存临时表,默认大小是 32M。如果超过该值,则会将临时表写入磁盘。在频繁做很多高级 GROUP BY 查询的DW环境,增大该值。

    实际起限制作用的是tmp_table_size和max_heap_table_size的最小值。

    max_heap_table_size = 1024M

    用户可以创建的内存表(memory table)的大小,这个值用来计算内存表的最大行数值。

    table_definition_cache = 400

    表定义缓存区,缓存frm文件。表定义(global)是全局的,可以被所有连接有效的共享。

    table_open_cache = 1000

    所有SQL线程可以打开表缓存的数量,缓存ibd/MYI/MYD文件。 打开的表(session级别)是每个线程,每个表使用。

    table_open_cache_instances = 4

    对table cache 能拆成的分区数,用于减少锁竞争,最大值64.

    ########################################

    Logs

    ##########################################
    #################### General Log ######################
    general_log = OFF

    关闭通用查询日志

    general_log_file = /data/3306/data/general.log

    通用查询日志存放路径

    #################### Slow Log ######################
    slow_query_log = ON

    开启慢查询日志

    slow_query_log_file = /data/3306/data/slow.log

    慢查询日志存放路径

    long_query_time = 10

    超过10秒的查询,记录到慢查询日志,默认值10

    log_queries_not_using_indexes = ON

    没有使用索引的查询,记录到慢查询日志,可能引起慢查询日志快速增长

    log_slow_admin_statements = ON

    执行缓慢的管理语句,记录到慢查询日志

    ################### Error Log ####################
    log_error = /data/3306/data/error.log

    错误日志存放路径

    log_error_verbosity = 2

    全局动态变量,默认3,范围:1~3

    表示错误日志记录的信息,1:只记录error信息;2:记录error和warnings信息;3:记录error、warnings和普通的notes信息

    ########################################

    Replication

    ##########################################
    #################### Bin Log ######################
    server_id =51

    数据库服务器ID

    secure-file-priv=/tmp
    gtid-mode=on
    enforce-gtid-consistency=true

    log_bin=/data/binlog/mysql-bin

    二进制日志存放路径

    log_bin_index = /data/3306/data/binlog.index

    同binlog,定义binlog的位置和名称

    binlog_format = row

    binlog格式,复制有3种模式STATEMENT,ROW,MIXED

    expire_logs_days = 3

    只保留最近5天的binlog日志

    max_binlog_size = 100M

    每个binlog日志文件的最大容量

    binlog_cache_size = 10M

    每个session分配的binlog缓存大小

    事务提交前产生的日志,记录到Cache中;事务提交后,则把日志持久化到磁盘

    log_slave_updates = ON

    开启log_slave_updates,从库的更新操作记录进binlog日志

    sync_binlog = 1

    sync_binlog=0(默认),事务提交后MySQL不刷新binlog_cache到磁盘,而让Filesystem自行决定,或者cache满了才同步。

    binlog_rows_query_log_events = ON

    将row模式下的sql语句,记录到binlog日志,默认是0(off)

    ########################################

    InnoDB

    ##########################################
    innodb_data_home_dir=/data/3306/data

    innodb表的数据文件目录

    innodb_file_per_table = ON

    使用独立表空间管理

    innodb_log_group_home_dir = /data/3306/data

    在事务被提交并写入到表空间磁盘文件上之前,事务数据存储在InnoDB的redo日志文件里。这些日志位于innodb_log_group_home_dir变量定义的目录中

    innodb_log_file_size = 256M

    InnoDB redo log大小,对应于ib_logfile0文件。

    innodb_log_buffer_size = 64M

    redo日志所用的内存缓冲区大小

    innodb_log_files_in_group = 4

    redo日志文件数,默认值为2,日志是以顺序的方式写入。

    innodb_max_dirty_pages_pct = 90

    缓存池中脏页的最大比例,默认值是75%,如果脏页的数量达到或超过该值,InnoDB的后台线程将开始缓存刷新。

    innodb_flush_log_at_trx_commit = 1

    设置为0 ,每秒 write cache & flush disk

    设置为1 ,每次commit都 write cache & flush disk

    设置为2 ,每次commit都 write cache,然后根据innodb_flush_log_at_timeout(默认为1s)时间 flush disk

    innodb_lock_wait_timeout = 10

    InnoDB 有其内置的死锁检测机制,能导致未完成的事务回滚。但是,如果结合InnoDB使用MyISAM的lock tables语句或第三方事务引擎,则InnoDB无法识别死锁。

    为消除这种可能性,可以将innodb_lock_wait_timeout设置为一个整数值,指示MySQL在允许其他事务修改那些最终受事务回滚的数据之前要等待多长时间(秒数)。

    innodb_support_xa = ON

    第一,支持多实例分布式事务(外部xa事务),这个一般在分布式数据库环境中用得较多。

    第二,支持内部xa事务,即支持binlog与innodb redo log之间数据一致性。

    innodb_flush_method = O_DIRECT

    设置innodb数据文件及redo log的打开、刷写模式,fdatasync(默认),O_DSYNC,O_DIRECT

    [mysql]
    socket=/tmp/mysql.sock
    prompt=db01 [\d]>

    相关文章

      网友评论

          本文标题:Mysql的配置文件

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