MySQL的my.cnf文件(解决5.7.vnsc5858威尼斯城官网18

时间:2019-05-11 09:47来源:计算机教程
1. innodb_lock_wait_timeout 官网说:从5.7.18开始不在二进制包中提供my-default.cnf文件。参考: https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html   mysql可以自动监测行锁导致的死锁并进行相应

1. innodb_lock_wait_timeout

官网说:从5.7.18开始不在二进制包中提供my-default.cnf文件。参考:https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html

  mysql 可以自动监测行锁导致的死锁并进行相应的处理,但是对于表锁导致的死锁不能自动监测,所以该参数主要用于,出现类似情况的时候等待指定的时间后回滚。系统默认值是50秒。用户可以根据业务自行设置。生产环境不推荐使用过大的 innodb_lock_wait_timeout 参数值。

经过测试,在5.7.18版本中,使用tar.gz安装时,也就是压缩包解压出来安装这种,已经不再需要my.cnf文件也能正常运行。

-- 查看事务超时时间
SHOW VARIABLES LIKE 'innodb_lock_wait_timeout';

my.cnf文件就是把在命令行上启动MySQL时后面的参数用cnf文件配置好,那么下载启动时就不再需要在命令上加如参数。

  vnsc5858威尼斯城官网 1
  也可以对当前会话进行超时设置如: set innodb_lock_wait_timeout=1000。关于产生死锁的原因,如何查看分析死锁问题, 如何优化尽量避免死锁,请查看"mysql 开发进阶篇 锁问题系列"。

这个my.cnf文件可以是自定义位置,也可以使用如下默认的位置,只要放在默认位置,MySQL自动识别(通过deb或者APT源安装的,初始位置在下方列表):

2. innodb_support_xa

文件名 目的
/etc/my.cnf 全局选项
/etc/mysql/my.cnf 全局选项
``SYSCONFDIR/my.cnf 全局选项
$MYSQL_HOME/my.cnf 服务器特定选项(仅限服务器)
defaults-extra-file 指定的文件 --defaults-extra-file,如果有的话
~/.my.cnf 用户特定选项
~/.mylogin.cnf 用户特定的登录路径选项(仅限客户端)

         通过该参数设置,是否支持分布式事务。默认值是ON或者1,表示支持分布式事务。
   分布事事务分两类:

<colgroup style="box-sizing: border-box; padding: 0px;"><col style="box-sizing: border-box; padding: 0px;"><col style="box-sizing: border-box; padding: 0px;"></colgroup>

  (1)是外部xa事务(支持多实例分布式事务)。

文件名 目的
/etc/my.cnf 全局选项
/etc/mysql/my.cnf 全局选项
``SYSCONFDIR/my.cnf 全局选项
$MYSQL_HOME/my.cnf 服务器特定选项(仅限服务器)
defaults-extra-file 指定的文件 --defaults-extra-file,如果有的话
~/.my.cnf 用户特定选项
~/.mylogin.cnf 用户特定的登录路径选项(仅限客户端)

  (2)是支持内部xa事务(支持binlog和redo_log之间数据一致性)。

以上的详细说明可以参考官方解释:https://dev.mysql.com/doc/refman/5.7/en/option-files.html

如果关闭这个参数,据前辈们说可能会影响到:1是主从复制binlog与redo_log不一致,2是binlog与redo_log事务顺序不一致性。

总之,无论是使用APT源安装还是deb包安装,或者二进制(压缩包tar.gz)包安装的,都可以通过my.cnf文件进行配置来达到MySQL的启动配置及调优。

--  查看是否支持分布式事务
SHOW VARIABLES LIKE 'innodb_support_xa';

由于在5.7.18开始,二进制包不再包含示例文件my-default.cnf,所以我从5.7.17版本中提取了样例,但是发现里面也没有太多项配置,my-default.cnf内容如下:

  vnsc5858威尼斯城官网 2

<pre style="margin: 0px 0px 24px; padding: 5px; font-weight: 400; box-sizing: border-box; background-color: rgb(246, 246, 246); font-family: "Microsoft YaHei"; font-size: 14px; line-height: 22px; color: rgb(0, 0, 0); border: 1px dotted rgb(170, 170, 170); white-space: pre-wrap;"># For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html # *** DO NOT EDIT THIS FILE. It‘s a template which will be copied to the # *** default location during install, and will be replaced if you # *** upgrade to a newer version of MySQL. [mysqld] # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

3. innodb _log_buffer_size

innodb_buffer_pool_size = 128M # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups.

       这个参数是指日志缓存的大小。默认的设置在中等强度写入负载以及较短事务的情况下,一般都可以满足服务器的性能要求。如果存在更新操作峰值或者负载较大,就应该考虑加大它的值。 如果值设置太高,可能会浪费内存,因为它每秒都会刷新一次,因此无需设置超过1秒所需的内存空间(理解是每1秒刷新后,日志缓存会清空)。通常设置为8~16MB就足够了。系统默认是16M。

log_bin # These are commonly set, remove the # and set as required.

--  查看日志缓存空间大小
 SHOW VARIABLES LIKE 'innodb_log_buffer_size';

basedir = .....

  vnsc5858威尼斯城官网 3

datadir = .....

    16777216.0/1024.0/1024.0=16M

port = .....

4. innodb_log_file_size
  这个参数是一个日志组(log group)中每个日志文件的大小,也叫事务日志文件大小。此参数在高写入负载尤其是大数据集的情况下很重要.这个值越大则性能相对越高,但副作用是当系统发生灾难时恢复时间会加大。系统默认是48M。
  (1) 小日志文件使写入速度更慢,崩溃恢复速度更快。原因是由于事务日志相当于一个写缓冲,而小日志文件会很快的被写满,这时候就需要频繁地刷新到硬盘,速度就慢了。如果产生大量的写操作,会增加checkpoint写的次数,如果不能足够快地刷新数据,那么写性能将会降低,。相反文件空间大,在刷新操作发生之前给你足够的空间来使用。
  (2) 大日志文件使写入更快,崩溃恢复速度更慢。

server_id = .....

--  查看每个日志文件的大小
 SHOW VARIABLES LIKE 'innodb_log_file_size';

socket = .....

  vnsc5858威尼斯城官网 4
  268435456.0/1024.0/1024.0=256M

Remove leading # to set options mainly useful for reporting servers.

5. innodb_log_compressed_pages

The server defaults are faster for transactions and fast SELECTs.

         这个参数是指:日志文件页存储压缩。系统默认是ON , 将减少redo log的写入量。

Adjust sizes as needed, experiment to find the optimal values.

6. innodb_log_checksums

join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES </pre>

其实,这些项都是命令行的参数,在官网上可以从这个页面https://dev.mysql.com/doc/refman/5.7/en/option-files.html为入口,找到需要配置的项按需要进行配置。

下面这个是来自http://www.fx114.net/qa-220-164752.aspx提供的my.cnf示例:

<pre style="margin: 0px 0px 24px; padding: 5px; font-weight: 400; box-sizing: border-box; background-color: rgb(246, 246, 246); font-family: "Microsoft YaHei"; font-size: 14px; line-height: 22px; color: rgb(0, 0, 0); border: 1px dotted rgb(170, 170, 170); white-space: pre-wrap;">[client]
port = 3306 socket = /tmp/mysql.sock

[mysqld] ###############################基础设置#####################################

         这个参数是指:写入redo log到文件之前,redo log的每一个block都需要加上checksum校验位,以防止apply损坏redo log。

Mysql服务的唯一编号 每个mysql服务Id需唯一

server-id = 1

7.  innodb_log_write_ahead_size

服务端口号 默认3306

port = 3306

         这个参数是指: redo log写前的块大小。系统默认是8192字节。

mysql安装根目录

basedir = /opt/mysql #mysql数据文件所在位置
datadir = /opt/mysql/data #临时目录 比如load data infile会用到
tmpdir = /tmp #设置socke文件所在目录
socket = /tmp/mysql.sock #主要用于MyISAM存储引擎,如果多台服务器连接一个数据库则建议注释下面内容
skip-external-locking #vnsc5858威尼斯城官网,只能用IP地址检查客户端的登录,不用主机名
skip_name_resolve = 1

8. innodb_log_files_in_group

事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)

transaction_isolation = READ-COMMITTED #数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4 #数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci #设置client连接mysql时的字符集,防止乱码
init_connect=‘SET NAMES utf8mb4‘ #是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1

       这个参数是指:该变量控制日志文件数。默认值为3。日志是以顺序的方式写入。结合innodb_buffer_pool_size设置其大小。一般不用设置。

最大连接数

max_connections = 400

9. innodb_log_group_home_dir

最大错误连接数

max_connect_errors = 1000

    这个参数是指:日志组所在的路径。

TIMESTAMP如果没有显示声明NOT NULL,允许NULL值

explicit_defaults_for_timestamp = true #SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet = 128M #MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭 #MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800 wait_timeout = 1800

--  所有日志参数如下
 SHOW VARIABLES LIKE 'innodb_log%';

内部内存临时表的最大值 ,设置成128M。 #比如大数据量的group by ,order by时可能用到临时表, #超过了这个值将写入磁盘,系统IO压力增大

tmp_table_size = 134217728 max_heap_table_size = 134217728

  vnsc5858威尼斯城官网 5

禁用mysql的缓存查询结果集功能 #后期根据业务情况测试决定是否开启 #大部分情况下关闭下面两项

query_cache_size = 0 query_cache_type = 0

#####################用户进程分配到的内存设置BEGIN#############################

编辑:计算机教程 本文来源:MySQL的my.cnf文件(解决5.7.vnsc5858威尼斯城官网18

关键词: