MariaDB 配置文件中常用选项的介绍

[client]

[client]
port      = 3306
socket    = /tmp/mysql.sock

[mysqld]

[mysqld]
port        = 3306
socket      = /tmp/mysql.sock
user        = mysql
basedir     = /usr/local/mysql
datadir     = /data/mysql/db_file

skip-name-resolve               #禁止解析,可有效增加速度
back_log             = 50       #侦听队列中保持的连接数
max_connections     = 1500     #最大并发连接数
max_connect_errors  = 10       #最大错误连接数
table_open_cache    = 2048     #所有线程的打开表数
                              #+ 需要确保 open-files-limit 设置为至少4096

max_allowed_packet   = 16M   #服务器可以处理的查询数据包的最大大小
max_heap_table_size  = 64M   #单个HEAP表,在内存中的最大允许大小
read_buffer_size     = 2M    #用于执行全表扫描的缓冲区大小
read_rnd_buffer_size = 16M   #排序后按排序顺序读取行的缓冲区
sort_buffer_size     = 8M    #ORDER BY和GROUP BY查询执行排序缓冲区
join_buffer_size     = 8M    #该缓冲区用于优化完整的JOIN(不带索引的JOIN)

thread_cache_size  = 8     #在缓存中保留多少个线程以供重用
thread_concurrency = 8     #线程并发
thread_stack       = 240K  #要使用的线程堆栈大小

query_cache_size   = 64M   #SELECT 查询缓存区大小
query_cache_limit  = 2M    #缓存SELECT查询结果的最大值,小于此值的才缓存

slow_query_log             #开启慢查询日志。
slow_query_log_file = /data/mysql/log/slow-query.log
long_query_time = 2        #超过此时间的都属于慢查询

ft_min_word_len        = 1        #最小索引长度。涉及中文查看的,最好设置为1。
default-storage-engine = InnoDB   #创建新表时默认使用的存储引擎类型


tmp_table_size    = 64M    #临时表的最大大小
binlog_cache_size = 1M     #事务期间用于保存二进制日志的SQL语句的缓存大小
                          #+ 来自事务的所有语句都缓存在二进制日志缓存中,
                         #+ 并在COMMIT之后立即写入二进制日志,
                        #+ 如果事务大于此值,则使用磁盘上的临时文件。


transaction_isolation = REPEATABLE-READ   #默认事务隔离级别
#+ 可用级别:
#+ READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE
init_connect = 'SET collation_connection = utf8_unicode_ci'
init_connect = 'SET NAMES utf8'
#init_connect 主要功能是:普通用户连接数据库时隐式执行的sql。

character-set-server  = utf8    #指定服务端字符集
collation-server  = utf8_unicode_ci   #指定服务端字符集的排序规则
skip-character-set-client-handshake = 1    #忽略启动或连接数据库时字符集的设置,使用默认的服务器字符集
log_slave_updates         #开启复制功能
slave_skip_errors = all   #主从复制时,跳过的错误。
#+ 通常,当主从复制发生错误时,复制会停止;此选项将跳过错误,使复制SQL线程继续复制。
#+ 共包含四个值:OFF、[list of error codes]、all、ddl_exist_errors。
server-id        = 1
log-bin          = /data/mysql/user/bin_log/mysql-bin3306
binlog_format    = mixed   #二进制日志记录格式
binlog_ignore_db = mysql   #不将数据库名为mysql的语句和事务写入二进制日志中(不够详细)
expire_logs_days = 7       #binlog日志文件保留时间,超过这个时间会被自动删除
auto_increment_offset    = 1   #自增列的起点,默认为 1。取值范围是1 .. 65535
auto_increment_increment = 2   #自增步长,默认为 1。取值范围是1 .. 65535
#在主主同步配置时,需要将两台服务器的 auto_increment_increment 都配置为 2,
#+ 而要把 auto_increment_offset 分别配置为 1 和 2。
#+ 这样才可以避免两台服务器同时做更新时自增长字段的值之间发生冲突。
#密钥缓冲区的大小,用于缓存MyISAM表的索引块。
#+ 不要设置为大于可用内存的30%,不使用MyISAM表也应将其设置为8-64M。
key_buffer_size = 32M

#高速缓存树的大小,为了获得最佳性能,请勿将其设置为大于 key_buffer_size。
bulk_insert_buffer_size = 64M

#当MariaDB需要在REPAIR、OPTIMIZE、ALTER table语句中重建索引,
#+ 以及在将数据填充到空表中时,会分配这个缓冲区。
myisam_sort_buffer_size = 128M

#重新创建索引时允许使用的临时文件的最大大小
myisam_max_sort_file_size = 10G

#如果一个表有多个索引,MyISAM可以使用多个线程通过并行排序来修复它们
myisam_repair_threads = 1

#自动检查并修复未正确关闭的MyISAM表
myisam_recover
#InnoDB用于存储元数据信息的附加内存池;如果超过此值,将从 OS 分配它。
innodb_additional_mem_pool_size = 16M

#InnoDB使用缓冲池来缓存索引和行数据。最多设置为物理内存大小的80%。
innodb_buffer_pool_size = 2G

#InnoDB表空间文件存储的位置,默认是 MariaDB 数据目录。
#innodb_data_home_dir = <directory>

#用于异步IO操作的IO线程数。
#+ 在Unix上,此值硬编码为8,但在Windows磁盘上,I O可能会受益于更大的数量。
innodb_write_io_threads = 8
innodb_read_io_threads = 8

#如果您遇到InnoDB表空间损坏的情况,请将其设置为非零值可能会帮助您转储表。
#+ 从值1开始并增加它,直到能够成功转储该表为止。
#innodb_force_recovery=1

#InnoDB内核中允许的线程数。
innodb_thread_concurrency = 16

#InnoDB 在事务提交后的日志写入频率
#+ 值为0时,log buffer会每秒写入到日志文件并flush到磁盘。
#+ 值为1时,每次事务提交时,log buffer会被写入到日志文件并刷写到磁盘。
#+ 默认值就是1,这是最安全的配置;但由于每次事务都需要进行磁盘I/O,所以也最慢。
#+ 值为2时,每次事务提交会写入日志文件,但并不会立即刷写到磁盘,日志文件会每秒刷写一次到磁盘。
#+ 这时如果mysqld进程崩溃,由于日志已经写入到系统缓存,所以并不会丢失数据;
#+ 但是在操作系统崩溃的情况下,通常会导致最后 1s 的日志丢失。
innodb_flush_log_at_trx_commit = 1


#innodb在关闭的时候该做什么工作
#+ 值为0时,在innodb关闭的时候,需要purge all, merge insert buffer,flush dirty pages。
#+ 这是最慢的一种关闭方式,但是restart的时候也是最快的。
#+ 值为1时,在innodb关闭的时候,它不需要purge all,merge insert buffer,
#+ 只需要flush dirty page,在缓冲池中的一些数据脏页会刷新到磁盘。
#+ 值为2时,在innodb关闭的时候,它不需要purge all,merge insert buffer,
#+ 也不进行flush dirty page,只将log buffer里面的日志刷新到日志文件log files,
#+ MySQL下次启动时,会执行恢复操作。
#innodb_fast_shutdown


#InnoDB用于缓冲日志数据的缓冲区大小。
#+ 装满后,InnoDB将不得不将其刷新到磁盘。
#+ 因为无论如何每秒都要刷新一次,所以将其过大也没有意义。
innodb_log_buffer_size = 8M

#日志组中每个日志文件的大小。
innodb_log_file_size = 256M

#日志组中的文件总数,通常,2-3就足够了。
innodb_log_files_in_group = 3

#InnoDB日志文件的位置。 默认值为MariaDB数据目录。
#innodb_log_group_home_dir

#InnoDB缓冲池中脏页的最大允许百分比。
innodb_max_dirty_pages_pct = 90

#InnoDB事务在回滚之前应等待多长时间才能授予锁。
#+ InnoDB自动在其自己的锁表中检测到事务死锁并回滚该事务,
#+ 如果您在同一事务中使用LOCK TABLES命令或InnoDB以外的其他事务安全存储引擎,
#+ 则可能会出现死锁,InnoDB无法注意到该死锁。
#+在这种情况下,超时对于解决这种情况很有用。
innodb_lock_wait_timeout = 120


#修改 InnoDB 为独立表空间模式,即每个数据库的每个表都会生成一个数据空间。
#+ MyISAM 引擎的表会分别创建三个文件:表结构、表索引、表数据空间;
#+ 我们可以将某个数据库目录直接迁移到其他数据库也可以正常工作。
#+ InnoDB 默认会将所有的InnoDB引擎的表数据存储在一个共享空间中(例如:ibdata1),
#+ 这样在增删数据库的时候,ibdata1 文件不会自动收缩,
#+ 单表也不能在不同的数据库中移动,只能使mysqldump 导出,然后再导入。
innodb_file_per_table = ON

[mysqldump]

[mysqldump]
#+ 最大允许传输包的大小。、
#+ 也就是查询出结果后,把结果发送到客户端时,每个网络包的最大大小。
#+ 默认为16M,最大为1G,修改时需要设为1024的整数倍。
max_allowed_packet = 16M

[mysql]

[mysql]
#no-auto-rehash   #关闭自动补全表名和列名功能
auto-rehash       #开启自动补全表名和列名功能

[myisamchk]

[myisamchk]
key_buffer_size = 512M   #索引块的缓冲区的大小
sort_buffer_size = 512M   #每个必须执行排序的会话都会分配此大小的缓冲区
read_buffer = 8M   #MyISAM表在REPAIR TABLE、 CREATE INDEX、ALTER TABLE索引时分配的缓冲区大小
write_buffer = 8M

[mysqlhotcopy]

[mysqlhotcopy]
#保持活动超时时间
interactive-timeout

[mysqld_safe]

[mysqld_safe]
#每个进程允许的打开文件数量
open-files-limit = 8192

log-error=/data/mysql/log/mysqld.log
pid-file=/data/mysql/temp/mysqld.pid
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值