Mysql配置文件的示例分析

58次阅读
没有评论

共计 7038 个字符,预计需要花费 18 分钟才能阅读完成。

这篇文章给大家分享的是有关 Mysql 配置文件的示例分析的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。

[mysqld]
port = 3306
serverid = 1
socket = /tmp/mysql.sock
skip-locking
# 避免 MySQL 的外部锁定,减少出错几率增强稳定性。
skip-name-resolve
禁止 MySQL 对外部连接进行 DNS 解析,使用这一选项可以消除 MySQL 进行 DNS 解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用 IP 地址方式,否则 MySQL 将无法正常处理连接请求!
back_log = 384
指定 MySQL 可能的连接数量。当 MySQL 主线程在很短的时间内接收到非常多的连接请求,该参数生效,主线程花费很短的时间检查连接并且启动一个新线程。
back_log 参数的值指出在 MySQL 暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的 TCP/IP 连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自己的限制。
试图设定 back_log 高于你的操作系统的限制将是无效的。默认值为 50。对于 Linux 系统推荐设置为小于 512 的整数。
key_buffer_size = 256M
# key_buffer_size 指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。
对于内存在 4GB 左右的服务器该参数可设置为 256M 或 384M。
注意:该参数值设置的过大反而会是服务器整体效率降低!
max_allowed_packet = 4M
thread_stack = 256K
table_cache = 128K
sort_buffer_size = 6M
查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占!如果有 100 个连接,那么实际分配的总共排序缓冲区大小为 100 × 6 = 600MB。所以,对于内存在 4GB 左右的服务器推荐设置为 6 -8M。
read_buffer_size = 4M
读查询操作所能使用的缓冲区大小。和 sort_buffer_size 一样,该参数对应的分配内存也是每连接独享!
join_buffer_size = 8M
联合查询操作所能使用的缓冲区大小,和 sort_buffer_size 一样,该参数对应的分配内存也是每连接独享!
myisam_sort_buffer_size = 64M
table_cache = 512
thread_cache_size = 64
query_cache_size = 64M
指定 MySQL 查询缓冲区的大小。可以通过在 MySQL 控制台执行以下命令观察:
代码:
# SHOW VARIABLES LIKE %query_cache%
# SHOW STATUS LIKE Qcache%
如果 Qcache_lowmem_prunes 的值非常大,则表明经常出现缓冲不够的情况;
如果 Qcache_hits 的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲;Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多。
tmp_table_size = 256M
max_connections = 768
指定 MySQL 允许的最大连接进程数。如果在访问论坛时经常出现 Too Many Connections 的错误提 示,则需要增大该参数值。
max_connect_errors = 10000000
wait_timeout = 10
指定一个请求的最大连接时间,对于 4GB 左右内存的服务器可以设置为 5 -10。
thread_concurrency = 8
该参数取值为服务器逻辑 CPU 数量×2,在本例中,服务器有 2 颗物理 CPU,而每颗物理 CPU 又支持 H.T 超线程,所以实际取值为 4 × 2 = 8
skip-networking
开启该选项可以彻底关闭 MySQL 的 TCP/IP 连接方式,如果 WEB 服务器是以远程连接的方式访问 MySQL 数据库服务器则不要开启该选项!否则将无法正常连接!

[common log]
log = /var/log/mysql/mysql-sys.log
把所有的连接以及所有的 SQL 命令记入日志 (通用查询日志); 如果没有给出 file 参数,MySQL 将在数据库目录里创建一个 hostname.log 文件作为这种日志文件(hostname 是服务器的主机名)。
log-update = /var/log/mysql/mysql-update.log
记载出错情况的日志文件名 (出错日志)。这种日志功能无法禁用。如果没有给出 file 参数,MySQL 会使用 hostname.err 作为种日志文件的名字。
log-slow-queries = /var/log/mysql/mysql-slow.log
把执行用时超过 long_query_time 变量值的查询命令记入日志 (慢查询日志); 如果没有给出 file 参数,MySQL 将在数据库目录里创建一个 hostname-slow.log 文件作为这种日志文件(hostname 是服务器主机名)。
long_query_time = n
慢查询的执行用时上限 (默认设置是 10s)。
long_queries_not_using_indexs
把慢查询以及执行时没有使用索引的查询命令全都记入日志 (其余同 –log-slow-queries 选项)。
log-bin = /var/log/mysql/mysql-bin.log
把对数据进行修改的所有 SQL 命令 (也就是 INSERT、UPDATE 和 DELETE 命令) 以二进制格式记入日志 (二进制变更日志,binary update log)。这种日志的文件名是 filename.n 或默认的 hostname.n,其中 n 是一个 6 位数字的整数(日志文件按顺序编号)。
max_binlog_size = n
二进制日志文件的最大长度 (默认设置是 1GB)。在前一个二进制日志文件里的信息量超过这个最大长度之前,MySQL 服务器会自动提供一个新的二进制日志文件接续上。
binlog-do-db = dbname
只把给定数据库里的变化情况记入二进制日志文件,其他数据库里的变化情况不记载。如果需要记载多个数据库里的变化情况,就必须在配置文件使用多个本选项来设置,每个数据库一行。
binlog-ignore-db = dbname
不把给定数据库里的变化情况记入二进制日志文件。
sync_binlog = n
每经过 n 次日志写操作就把日志文件写入硬盘一次(对日志信息进行一次同步)。n= 1 是最安全的做法,但效率最低。默认设置是 n =0,意思是由操作系统来负责二进制日志文件的同步工作。

[master/slave]
server-id = n
给服务器分配一个唯一的 ID 编号
log-slave-updates
启用从属服务器上的日志功能,使这台计算机可以用来构成一个镜像链 (A- B- C)。
master-host = hostname
master-user = replicusername
master-password = passwd
分别是主控服务器的主机名或 IP 地址、从属服务器用来连接主控服务器的用户名、从属服务器用来连接主控服务器的密码。如果从属服务器上存在 master.info 文件 (镜像关系定义文件),它将忽略此选项。
master-port = n
从属服务器用来连接主控服务器的 TCP/IP 端口 (默认设置是 3306 端口)。
master-connect-retry = n
如果与主控服务器的连接没有成功,则等待 n 秒 (s) 后再进行管理方式 (默认设置是 60s)。如果从属服务器存在 master.info 文件,它将忽略此选项。
master-ssl-xxx = xxx
对主、从服务器之间的 SSL 通信进行配置。
read-only = 0/1
0: 允许从属服务器独立地执行 SQL 命令 (默认设置); 1: 从属服务器只能执行来自主控服务器的 SQL 命令。
read-log-purge = 0/1
1: 把处理完的 SQL 命令立刻从中继日志文件里删除(默认设置); 0: 不把处理完的 SQL 命令立刻从中继日志文件里删除。
replicate-do-table = dbname.tablename
与 –replicate-do-table 选项的含义和用法相同,但数据库和数据库表名字里允许出现通配符 % (例如: test%.%– 对名字以 test 开头的所有数据库里的所以数据库表进行镜像处理)。
replicate-do-db = name
只对这个数据库进行镜像处理。
replicate-ignore-db = dbname
不对这个数据库进行镜像处理。
replicate-ignore-table = dbname.tablename
不对这个数据表进行镜像处理。
replicate-wild-ignore-table = dbn.tablen
不对这些数据表进行镜像处理。
replicate-rewrite-db = db1name db2name
把主控数据库上的 db1name 数据库镜像处理为从属服务器上的 db2name 数据库。
report-host = hostname
从属服务器的主机名; 这项信息只与 SHOW SLAVE HOSTS 命令有关 – 主控服务器可以用这条命令生成一份从属服务器的名单。
slave-compressed-protocol = 1
主、从服务器使用压缩格式进行通信 – 如果它们都支持这么做的话。
slave-skip-errors = n1, n2, […all]
即使发生出错代码为 n1、n2 等的错误,镜像处理工作也继续进行 (即不管发生什么错误,镜像处理工作也继续进行)。如果配置得当,从属服务器不应该在执行 SQL 命令时发生错误(在主控服务器上执行出错的 SQL 命令不会被发送到从属服务器上做镜像处理); 如果不使用 slave-skip-errors 选项,从属服务器上的镜像工作就可能因为发生错误而中断,中断后需要有人工参与才能继续进行。
innodb_log_buffer_pool_size = n
为 InnoDB 数据表及其索引而保留的 RAM 内存量 (默认设置是 8MB)。这个参数对速度有着相当大的影响,如果计算机上只运行有 MySQL/InnoDB 数据库服务器,就应该把全部内存的 80% 用于这个用途。
innodb_log_buffer_size = n
事务日志文件写操作缓存区的最大长度 (默认设置是 1MB)。
innodb_additional_men_pool_size = n
为用于内部管理的各种数据结构分配的缓存区最大长度 (默认设置是 1MB)。
innodb_file_io_threads = n
I/ O 操作(硬盘写操作) 的最大线程个数(默认设置是 4)。
innodb_thread_concurrency = n
InnoDB 驱动程序能够同时使用的最大线程个数(默认设置是 8)。

[InnoDB]
skip-innodb
不加载 InnoDB 数据表驱动程序 – 如果用不着 InnoDB 数据表,可以用这个选项节省一些内存。
innodb-file-per-table
为每一个新数据表创建一个表空间文件而不是把数据表都集中保存在中央表空间里 (后者是默认设置)。该选项始见于 MySQL 4.1。
innodb-open-file = n
InnoDB 数据表驱动程序最多可以同时打开的文件数(默认设置是 300)。如果使用了 innodb-file-per-table 选项并且需要同时打开很多数据表的话,这个数字很可能需要加大。
innodb_data_home_dir = path
InnoDB 主目录,所有与 InnoDB 数据表有关的目录或文件路径都相对于这个路径。在默认的情况下,这个主目录就是 MySQL 的数据目录。
innodb_data_file_path = ts
用来容纳 InnoDB 为数据表的表空间: 可能涉及一个以上的文件; 每一个表空间文件的最大长度都必须以字节 (B)、兆字节(MB) 或千兆字节 (GB) 为单位给出; 表空间文件的名字必须以分号隔开; 最后一个表空间文件还可以带一个 autoextend 属性和一个最大长度 (max:n)。例如,ibdata1:1G; ibdata2:1G:autoextend:max:2G 的意思是: 表空间文件 ibdata1 的最大长度是 1GB,ibdata2 的最大长度也是 1G,但允许它扩充到 2GB。除文件名外,还可以用硬盘分区的设置名来定义表空间,此时必须给表空间的最大初始长度值加上 newraw 关键字做后缀,给表空间的最大扩充长度值加上 raw 关键字做后缀(例如 /dev/hdb1: 20Gnewraw 或 /dev/hdb1:20Graw); MySQL 4.0 及更高版本的默认设置是 ibdata1:10M:autoextend。
innodb_autoextend_increment = n
带有 autoextend 属性的表空间文件每次加大多少兆字节 (默认设置是 8MB)。这个属性不涉及具体的数据表文件,那些文件的增大速度相对是比较小的。
innodb_lock_wait_timeout = n
如果某个事务在等待 n 秒 (s) 后还没有获得所需要的资源,就使用 ROLLBACK 命令放弃这个事务。这项设置对于发现和处理未能被 InnoDB 数据表驱动 程序识别出来的死锁条件有着重要的意义。这个选项的默认设置是 50s。
innodb_fast_shutdown = 0/1
是否以最快的速度关闭 InnoDB,默认设置是 1,意思是不把缓存在 INSERT 缓存区的数据写入数据表,那些数据将在 MySQL 服务器下次启动时再写入 (这么做没有什么风险,因为 INSERT 缓存区是表空间的一个组成部分,数据不会丢失)。把这个选项设置为 0 反面危险,因为在计算机关闭时,InnoDB 驱动程序很可能没有足够的时间完成它的数据同步工作,操作系统也许会在它完成数据同步工作之前强行结束 InnoDB,而这会导致数据不完整。

[InnoDB log]
innodb_log_group_home_dir = /var/log/mysql/innodb
用来存放 InnoDB 日志文件的目录路径 (如 ib_logfile0、ib_logfile1 等)。在默认的情况下,InnoDB 驱动程序将使用 MySQL 数据目录作为自己保存日志文件的位置。
innodb_log_files_in_group = n
使用多少个日志文件 (默认设置是 2)。InnoDB 数据表驱动程序将以轮转方式依次填写这些文件; 当所有的日志文件都写满以后,之后的日志信息将写入第一个日志文件的最大长度(默认设置是 5MB)。这个长度必须以 MB(兆字节) 或 GB(千兆字节)为单 位进行设置。
innodb_flush_log_at_trx_commit = 0/1/2
这个选项决定着什么时候把日志信息写入日志文件以及什么时候把这些文件物理地写 (术语称为 同步) 到硬盘上。设置值 0 的意思是每隔一秒写一次日志并进行同步,这可以减少硬盘写操作次数,但可能造成数据丢失; 设置值 1(设置设置)的意思是在每执行完一条 COMMIT 命令就写一次日志并进行同步,这可以防止数据丢失,但硬盘写操作可能会很频繁; 设置值 2 是一般折衷的办法,即每执行完一条 COMMIT 命令写一次日志,每隔一秒进行一次同步。
innodb_flush_method = x
InnoDB 日志文件的同步办法 (仅适用于 UNIX/Linux 系统)。这个选项的可取值有两种: fdatasync,用 fsync() 函数进行同步; O_DSYNC,用 O_SYNC()函数进行同步。
innodb_log_archive = 1
启用 InnoDB 驱动程序的 archive(档案)日志功能,把日志信息写入 ib_arch_log_n 文件。启用这种日志功能在 InnoDB 与 MySQL 一起使用时没有多大意义(启用 MySQL 服务器的二进制日志功能就足够用了)。

[Others]
bind-address = ipaddr
MySQL 服务器的 IP 地址。如果 MySQL 服务器所在的计算机有多个 IP 地址,这个选项将非常重要。
default-storage-engine = type
新数据表的默认数据表类型 (默认设置是 MyISAM)。这项设置还可以通过 –default-table-type 选项来设置。
default-timezone = name
为 MySQL 服务器设置一个地理时区 (如果它与本地计算机的地理时区不一样)。
ft_min_word_len = n
全文索引的最小单词长度工。这个选项的默认设置是 4,意思是在创建全文索引时不考虑那些由 3 个或更少的字符构建单词。
max-allowed-packet = n
客户与服务器之间交换的数据包的最大长度,这个数字至少应该大于客户程序将要处理的最大 BLOB 块的长度。这个选项的默认设置是 1MB。
sql-mode = model1, mode2, […]
MySQL 将运行在哪一种 SQL 模式下。这个选项的作用是让 MySQL 与其他的数据库系统保持最大程度的兼容。这个选项的可取值包括 ansi、db2、oracle、no_zero_date、pipes_as_concat。

感谢各位的阅读!关于“Mysql 配置文件的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-26发表,共计7038字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)