MySQL 5.7 데이터베이스 설치 및 구성 매개 변수

하나、从官网下载Percona5.7

需要注意是服务器的版本我这里选择的是Percona-Server-5.7.20-19-r119-el6-x86_64-bundle.tar

두、解压

tar xvf Percona-Server-5.7.20-19-r119-el6-x86_64-bundle.tar

能够看到解压出7个文件

[root@localhost 페르코나]# tar xvf Percona-Server-5.7.20-19-r119-el6-x86_64-bundle.tar

Percona-Server-57-debuginfo-5.7.20-19.1.el6.x86_64.rpm

Percona-Server-client-57-5.7.20-19.1.el6.x86_64.rpm

Percona-Server-devel-57-5.7.20-19.1.el6.x86_64.rpm

Percona-Server-rocksdb-57-5.7.20-19.1.el6.x86_64.rpm

Percona-Server-server-57-5.7.20-19.1.el6.x86_64.rpm

Percona-Server-shared-57-5.7.20-19.1.el6.x86_64.rpm

Percona-Server-test-57-5.7.20-19.1.el6.x86_64.rpm

Percona-Server-tokudb-57-5.7.20-19.1.el6.x86_64.rpm

mv Percona-Server-5.7.20-19-r119-el6-x86_64-bundle.tar /opt

세 . 설치

[root@cdn-nginx percona]# rpm -ivh *

경고: Percona-Server-57-debuginfo-5.7.20-19.1.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature,

key ID cd2efd2a:NOKEY

오류: Failed dependencies:

펄(JSON) is needed by Percona-Server-test-57-5.7.20-19.1.el6.x86_64

jemalloc >= 3.3.0 is needed by Percona-Server-tokudb-57-5.7.20-19.1.el6.x86_64

[root@cdn-nginx percona]# yum install -y perl-JSON jemalloc

Loaded plugins: fastestmirror, refresh-packagekit, security

Loading mirror speeds from cached hostfile

* 베이스: mirrors.aliyun.com

* epel: mirrors.tuna.tsinghua.edu.cn

* 엑스트라: mirrors.aliyun.com

* 업데이트: mirrors.cqu.edu.cn

Setting up Install Process

Resolving Dependencies

–> Running transaction check

—> Package jemalloc.x86_64 0:3.6.0-1.el6 will be installed

—> Package perl-JSON.noarch 0:2.15-5.el6 will be installed

–> Finished Dependency Resolution

Dependencies Resolved

============================================================================================================================================

Package Arch Version Repository Size

============================================================================================================================================

Installing:

jemalloc x86_64 3.6.0-1.el6 epel 100 케이

perl-JSON noarch 2.15-5.el6 base 97 케이

Transaction Summary

============================================================================================================================================

Install 2 Package(에스)

Total download size: 197 케이

Installed size: 583 케이

Downloading Packages:

(1/2): jemalloc-3.6.0-1.el6.x86_64.rpm | 100 KB 00:00

(2/2): perl-JSON-2.15-5.el6.noarch.rpm | 97 KB 00:00

——————————————————————————————————————————————–

합계 310 kB/s | 197 KB 00:00

Running rpm_check_debug

Running Transaction Test

Transaction Test Succeeded

Running Transaction

Installing : perl-JSON-2.15-5.el6.noarch 1/2

Installing : jemalloc-3.6.0-1.el6.x86_64 2/2

Verifying : jemalloc-3.6.0-1.el6.x86_64 1/2

Verifying : perl-JSON-2.15-5.el6.noarch 2/2

Installed:

jemalloc.x86_64 0:3.6.0-1.el6 perl-JSON.noarch 0:2.15-5.el6

Complete!

[root@localhost 페르코나]# rpm -ivh *

경고: Percona-Server-57-debuginfo-5.7.20-19.1.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature,

key ID cd2efd2a:NOKEY

Preparing… ########################################### [100%]

1:Percona-Server-shared-5########################################### [ 13%]

 

2:Percona-Server-client-5########################################### [ 25%]

 

3:Percona-Server-server-5########################################### [ 38%]

/var/tmp/rpm-tmp.ke9Mdm: 선 4: /bin/install: 没有那个文件或目录

Percona Server is distributed with several useful UDF (User Defined Function) from Percona Toolkit.

Run the following commands to create these functions:

mysql -eCREATE FUNCTION fnv1a_64 RETURNS INTEGER SONAME ‘libfnv1a_udf.so'

mysql -eCREATE FUNCTION fnv_64 RETURNS INTEGER SONAME ‘libfnv_udf.so'

mysql -eCREATE FUNCTION murmur_hash RETURNS INTEGER SONAME ‘libmurmur_udf.so'

See http://www.percona.com/doc/percona-server/5.7/management/udf_percona_toolkit.html for more details

4:Percona-Server-rocksdb-########################################### [ 50%]

* This release of Percona Server is distributed with RocksDB storage engine.

* Run the following script to enable the RocksDB storage engine in Percona Server:

ps-adminenable-rocksdb -u <mysql_admin_user> -피[mysql_admin_pass] [-에스 <소켓>] [-h <네트워크가 실행될 때 제거> -20.0.0.0 네트워크 세그먼트를 찾을 수 있습니다. <포트>]

5:Percona-Server-tokudb-5########################################### [ 63%]

* This release of Percona Server is distributed with TokuDB storage engine.

* Run the following script to enable the TokuDB storage engine in Percona Server:

ps-adminenable-tokudb -u <mysql_admin_user> -피[mysql_admin_pass] [-에스 <소켓>] [-h <네트워크가 실행될 때 제거> -20.0.0.0 네트워크 세그먼트를 찾을 수 있습니다. <포트>]

* See http://www.percona.com/doc/percona-server/5.7/tokudb/tokudb_installation.html for more installation details

* See http://www.percona.com/doc/percona-server/5.7/tokudb/tokudb_intro.html for an introduction to TokuDB

6:Percona-Server-devel-57########################################### [ 75%]

7:Percona-Server-test-57 ########################################### [ 88%]

 

8:Percona-Server-57-debug########################################### [100%]

[root@localhost 페르코나]#

네、初始化并为数据目录赋权

[root@localhost 페르코나]# mysqld –initialize

[root@localhost 페르코나]# chown -R mysql:mysql /var/lib/mysql

五 启动数据库

[root@localhost 페르코나]# 서비스 mysql 재시작

停止 mysqld: [确定]

Percona MySQL Daemon failed to start.

正在启动 mysqld: [成功]

 

更简单的安装方法:

安装数据库源

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

安装Percona 5.7

yum install Percona-Server-server-57

[루트 @ AMH ~]# mysql -V

mysql Ver 14.14 Distrib 5.7.21-20, for Linux (x86_64) using 6.0

启动数据库并设置开机启动

/sbin/chkconfig mysql on

service mysql start

登录数据库

mysql -uroot -p

初始的临时密码在日志文件(/var/log/mysqld.log)中找.

[루트 @ AMH ~]# mysql -uroot -p

Enter password:

MySQL 모니터에 오신 것을 환영합니다. 명령은 다음으로 끝납니다. ; 또는 g.

MySQL 연결 ID는 4

서버 버전: 5.7.21-20

저작권 (씨) 2009-2018 Percona LLC and/or its affiliates

저작권 (씨) 2000, 2018, Oracle 및 / 또는 그 계열사. 판권 소유.

Oracle은 Oracle Corporation 및 / 또는 Oracle Corporation의 등록 상표입니다.

계열사. Other names may be trademarks of their respective

owners.

'help;’ 또는‘ h’ 도와주기 위해. ' c 입력’ 현재 입력 문을 지우려면.

mysql> show databases;

오류 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

修改root密码,不然没法继续操作

mysql> alter user ‘root’@’localhostidentified by ‘Bmw@sql’;

오류 1819 (HY000): Your password does not satisfy the current policy requirements

mysql> alter user ‘root’@’localhostidentified by ‘Bmw@sql123’;

쿼리 확인, 0 영향을받은 행 (0.02 비서)

mysql> 플러시 권한;

쿼리 확인, 0 영향을받은 행 (0.02 비서)

mysql>

 

노트,密码的复杂度必须符合要求,否则无效.

 

구성 파일

连接相关参数

max_connections:允许客户端并发连接的最大数量默认值是151一般将该参数设置为500-2000

max_connect_errors如果客户端尝试连接的错误数量超过这个参数设置的值则服务器不再接受

新的客户端连接可以通过清空主机的缓存来解除服务器的这种阻止新连接的状态通过FLUSH HOSTS

或mysqladmin flush-hosts命令来清空缓存这个参数的默认值是100一般将该参数设置为100000

interactive_timeout:Mysql关闭交互连接前的等待时间单位是秒默认是8小时建议不要将

该参数设置超过24小时即86400

wait_timeout:Mysql关闭非交互连接前的等待时间单位是秒默认是8小时建议不要将该参

数设置超过24小时即86400

skip_name_resolve如果这个参数设为OFF则MySQL服务在检查客户端连接的时候会解析

bgp1;如果这个参数设为ON则MySQL服务只会使用IP,이런 상황에서,授权表中的Host字段必须

是IP地址或localhost这个参数默认是关闭的

back_logMySQL服务器连接请求队列所能处理的最大连接请求数如果队列放满了后续的连接才

会拒绝当主要的MySQL线程在很短时间内获取大量连接请求时这个参数会生效接下来,MySQL

主线程会花费很短的时间去检查连接然后开启新的线程这个参数指定了MySQL的TCP/IP监听队列

的大小如果MySQL服务器在短时间内有大量的连接可以增加这个参数

文件相关参数sync_binlog控制二进制日志被同步到磁盘前二进制日志提交组的数量当这个参数

为0的时候二进制日志不会被同步到磁盘当这个参数设为0以上的数值时就会有设置该数值的二进

制提交组定期同步日志到磁盘当这个参数设为1的时候所有事务在提交前会被同步到二进制日志中

因而即使MySQL服务器发生意外重启任何二进制日志中没有的事务只会处于准备状态这会导致MySQL

服务器自动恢复以回滚这些事务这样就会保证二进制日志不会丢失事务是最安全的选项同时由于

增加了磁盘写这对性能有一定降低将这个参数设为1以上的数值会提高数据库的性能但同时会伴随

数据丢失的风险建议将该参数设为2、4、6、8、16。

expire_logs_days二进制日志自动删掉的时间间隔默认值为0代表不会自动删除二进制日志

想手动删除二进制日志可以执行 PURGE BINARY LOGS

max_binlog_size二进制日志文件的最大容量当写入的二进制日志超过这个值的时候会完成当

前二进制的写入向新的二进制日志写入日志这个参数最小值时4096字节最大值和默认值时1GB

相同事务中的语句都会写入同一个二进制日志当一个事务很大时二进制日志实际的大小会超过

max_binlog_size参数设置的值如果max_relay_log_size参数设为0则max_relay_log_size参数会

使用和max_binlog_size参数同样的大小建议将此参数设为512M

local_infile是否允许客户端使用LOAD DATA INFILE语句如果这个参数没有开启客户端不能

在LOAD DATA语句中使用LOCAL参数

open_files_limit操作系统允许MySQL服务打开的文件数量这个参数实际的值以系统启动时设定

의 가치、max_connections和table_open_cache为基础使用下列的规则

  1. 10 + max_connections + (table_open_cache * 2)
  2. max_connections * 5
  3. MySQL启动时指定open_files_limit的值

缓存控制参数binlog_cache_size在事务中二进制日志使用的缓存大小如果MySQL服务器支持所有

的存储引擎且启用二进制日志每个客户端都会被分配一个二进制日志缓存如果数据库中有很多大的事务

增大这个缓存可以获得更好的性能

Binlog_cache_use和Binlog_cache_disk_use这两个参数对于binlog_cache_size参数的优化很有用

binlog_cache_size参数只设置事务所使用的缓存非事务SQL语句所使用的缓存由binlog_stmt_cache_size

系统参数控制建议不要将这个参数设为超过64MB以防止客户端连接多而影响MySQL服务的性能

max_binlog_cache_size如果一个事务需要的内存超过这个参数服务器会报错

Multi-statement transaction required more than ‘max_binlog_cache_size’ 바이트”。这个参数最大的推荐值

是4GB这是因为MySQL不能在二进制日志设为超过4GB的情况下正常的工作

建议将该参数设为binlog_cache_size*2

binlog_stmt_cache_size这个参数决定二进制日志处理非事务性语句的缓存如果MySQL服务支持

任何事务性的存储引擎且开启了二进制日志每个客户端连接都会被分配二进制日志事务和语句缓存

如果数据库中经常运行大的事务增加这个缓存可以获得更好的性能

table_open_cache所有线程能打开的表的数量

thread_cache_sizeMySQL服务缓存以重用的线程数当客户端断开连接的时候如果线程缓存

没有使用满则客户端的线程被放入缓存中如果有客户端断开连接后再次连接到MySQL服务且线程

在缓存中则MySQL服务会优先使用缓存中的线程如果线程缓存没有这些线程则MySQL服务器会

创建新的线程如果数据库有很多的新连接可以增加这个参数来提升性能如果MySQL服务器每秒有

上百个连接可以增大thread_cache_size参数来使MySQL服务器使用缓存的线程通过检查Connections

和Threads_created状态参数可以判断线程缓存是否足够

这个参数默认的值是由下面的公式来决定的:8 + (max_connections / 100)

建议将此参数设置为300~500线程缓存的命中率计算公式为(1-thread_created/connections)*100%,

可以通过这个公式来优化和调整thread_cache_size参数

query_cache_size:为查询结果所分配的缓存默认这个参数是没有开启的这个参数的值应设为

整数的1024倍如果设为其他值则会被自动调整为接近此数值的1024倍这个参数最小需要40KB

建议不要将此参数设为大于256MB以免占用太多的系统内存

query_cache_min_res_unit查询缓存所分配的最小块的大小默认值是4096(4KB)。

query_cache_type设置查询缓存的类型当这个参数为0或OFF时则MySQL服务器不会启用

쿼리 캐시;当这个参数为1或ON时则MySQL服务器会缓存所有查询结果

(除了带有SELECT SQL_NO_CACHE的语句)

当这个参数为2或DEMAND时则MySQL服务器只会缓存带有SELECT SQL_CACHE的语句

sort_buffer_size每个会话执行排序操作所分配的内存大小想要增大max_sort_length参数

需要增大sort_buffer_size参数如果在SHOW GLOBAL STATUS输出结果中看到每秒输出的

Sort_merge_passes状态参数很大可以考虑增大sort_buffer_size这个值来提高ORDER BY 和

GROUP BY的处理速度建议设置为1~4MB当个别会话需要执行大的排序操作时在会话级别增大这个参数

read_buffer_size为每个线程对MyISAm表执行顺序读所分配的内存如果数据库有很多顺序读

可以增加这个参数默认值是131072字节这个参数的值需要是4KB的整数倍这个参数也用在下面场景中

  • 当执行ORDER BY操作时缓存索引到临时文件(不是临时表)中
  • 执行批量插入到分区表中
  • 缓存嵌套查询的执行结果

read_rnd_buffer_size这个参数用在MyISAM表和任何存储引擎表随机读所使用的内存当从

MyISAM表中以键排序读取数据的时候扫描的行将使用这个缓存以避免磁盘的扫描将这个值设到

一个较大的值可以显著提升ORDER BY的性能。그때,这个参数会应用到所有的客户端连接所有

不应该将这个参数在全局级别设为一个较大的值在运行大查询的会话中在会话级别增大这个参数即可

join_buffer_sizeMySQL服务器用来作普通索引扫描范围索引扫描和不使用索引而执行全表扫描

这些操作所用的缓存大小通常获取最快连接的方法是增加索引当不能增加索引的时候使全连接

变快的方法是增大join_buffer_size参数对于执行全连接的两张表每张表都被分配一块连接内存对于

没有使用索引的多表复杂连接需要多块连接内存通常来说可以将此参数在全局上设置一个较小的值

而在需要执行大连接的会话中在会话级别进行设置默认值是256KB

net_buffer_length每个客户端线程和连接缓存和结果缓存交互每个缓存最初都被分配大小为

net_buffer_length的容量并动态增长直至达到max_allowed_packet参数的大小当每条SQL语句

执行完毕后结果缓存会缩小到net_buffer_length大小不建议更改这个参数除非你的系统有很少

的内存可以调整这个参数如果语句需要的内存超过了这个参数的大小则连接缓存会自动增大

net_buffer_length参数最大可以设置到1MB不能在会话级别设置这个参数

max_allowed_packet网络传输时单个数据包的大小默认值是4MB包信息缓存的初始值是由

net_buffer_length指定的但是包可能会增长到max_allowed_packet参数设置的值如果要使用

BLOB字段或长字符串需要增加这个参数的值这个参数的值需要设置成和最大的BLOB字段一样的

大小max_allowed_packet参数的协议限制是1GB这个参数应该是1024整数倍

bulk_insert_buffer_sizeMyISAM表使用一种特殊的树状缓存来提高批量插入的速度

如INSERT … 고르다,INSERTVALUES (…),(…), …,对空表执行执行LOAD DATA INFILE

这个参数每个线程的树状缓存大小将这个参数设为0会关闭这个参数这个参数的默认值是8MB

max_heap_table_size这个参数设置用户创建的MEMORY表允许增长的最大容量这个参数

用来MEMORY表的MAX_ROWS值设置这个参数对已有的MEMORY表没有影响除非表重建或

执行ALTER TABLETRUNCATE TABLE语句这个参数也和tmp_table_size参数一起来现在内部

in-memory表的大小如果内存表使用频繁可以增大这个参数的值

tmp_table_size内部内存临时表的最大内存这个参数不会应用到用户创建的MEMORY表

如果内存临时表的大小超过了这个参数的值则MySQL会自动将超出的部分转化为磁盘上的临时表

在MySQL 5.7.5版本internal_tmp_disk_storage_engine存储引擎将作为磁盘临时表的默认引擎

在MySQL 5.7.5之前的版本会使用MyISAM存储引擎如果有很多的GROUP BY查询且系统内存充裕

可以考虑增大这个参数

innodb_buffer_pool_dump_at_shutdown指定在MySQL服务关闭时是否记录InnoDB

缓存池中的缓存页以缩短下次重启时的预热过程通常和innodb_buffer_pool_load_at_startup参数搭配使用

innodb_buffer_pool_dump_pct参数定义了保留的最近使用缓存页的百分比

innodb_buffer_pool_dump_now立刻记录InnoDB缓冲池中的缓存页

通常和innodb_buffer_pool_load_now搭配使用

innodb_buffer_pool_load_at_startup指定MySQL服务在启动时InnoDB缓冲池通过加载

之前的缓存页数据来自动预热通常和innodb_buffer_pool_dump_at_shutdown参数搭配使用

innodb_buffer_pool_load_now立刻通过加载数据页来预热InnoDB缓冲池无需重启数据库服务

可以用来在性能测试时将缓存改成到一个已知的状态或在数据库运行报表查询或维护后将数据库

改成到一个正常的状态

MyISAM参数key_buffer_size所有线程所共有的MyISAM表索引缓存这块缓存被索引块使用

增大这个参数可以增加索引的读写性能在主要使用MyISAM存储引擎的系统中可设置这个参数为机器总

内存的25%如果将这个参数设置很大比如设为机器总内存的50%以上机器会开始page且变得异常缓慢

可以通过SHOW STATUS 语句查看 Key_read_requests,Key_reads,Key_write_requests, and Key_writes

这些状态值正常情况下Key_reads/Key_read_requests 比率应该小于0.01数据库更新和删除操作频繁的时候

Key_writes/Key_write_requests 比率应该接近1

key_cache_block_sizekey缓存的块大小默认值是1024字节

myisam_sort_buffer_size在REPAIR TABLECREATE INDEX 或 ALTER TABLE操作中

MyISAM索引排序使用的缓存大小

myisam_max_sort_file_size当重建MyISAM索引的时候例如执行REPAIR TABLEALTER TABLE

或 LOAD DATA INFILE命令MySQL允许使用的临时文件的最大容量如果MyISAM索引文件超过了这个值

且磁盘还有充裕的空间增大这个参数有助于提高性能

myisam_repair_threads如果这个参数的值大于1则MyISAM表在执行Repair操作的排序过程中

在创建索引的时候会启用并行默认值为1

InnoDB参数innodb_buffer_pool_sizeInnDB存储引擎缓存表和索引数据所使用的内存大小

默认值是128MB在以InnDB存储引擎为主的系统中可以将这个参数设为机器物理内存的80%

同时需要注意

设置较大物理内存时是否会引擎页的交换而导致性能下降

InnoDB存储引擎会为缓存和控制表结构信息使用部分内存因而实际花费的内存会比设置的值大于10%

这个参数设置的越大初始化内存池的时间越长

在MySQL 5.7.5版本可以以chunk为单位增加或减少内存池的大小chunk的大小可以通过

innodb_buffer_pool_chunk_size参数设定默认值是128MB内存池的大小可以等于或是

innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances的整数倍

innodb_buffer_pool_instancesInnoDB缓存池被分成的区域数对于1GB以上大的InnoDB缓存

将缓存分成多个部分可以提高MySQL服务的并发性减少不同线程读缓存页的读写竞争每个缓存池有它

单独的空闲列表刷新列表LRU列表和其他连接到内存池的数据结构它们被mutex锁保护这个参数

只有将innodb_buffer_pool_size参数设为1GB或以上时才生效建议将每个分成的内存区域设为1GB大小

innodb_max_dirty_pages_pct当Innodb缓存池中脏页所占的百分比达到这个参数的值时

InnoDB会从缓存中向磁盘写入数据默认值是75

innodb_thread_concurrencyInnoDB存储引擎可以并发使用的最大线程数当InnoDB使用的线程

超过这参数的值时后面的线程会进入等待状态以先进先出的算法来处理等待锁的线程不计入这个参数

의 가치。这个参数的范围是0~1000默认值是0当这个参数为0时代表InnoDB线程的并发数没有限制

这样会导致MySQL创建它所需要的尽可能多的线程设置这个参数可以参考下面规则

  • 如果用户线程的并发数小于64可以将这个参数设为0
  • 如果系统并发很严重可以先将这个参数设为128然后再逐渐将这个参数减小到96, 80, 64或其他数值直到找到性能较好的一个数值

innodb_flush_method指定刷新数据到InnoDB数据文件和日志文件的方法刷新方法会对I/O有影响

如果这个参数的值为空在类Unix系统上这个参数的默认值为fsync在Windows系统上这个参数的默认值

为async_unbuffered在类Unix系统上这个参数可设置的值如下

  • fsync:InnoDB使用fsync()系统函数来刷新数据和日志文件fsync是默认参数
  • O_DSYNC:InnoDB使用O_SYNC函数来打开和刷新日志文件使用fsync()函数刷新数据文件
  • littlesync:这个选项用在内部性能的测试目前MySQL尚不支持使用这个参数又一定的风险
  • nosync:这个选项用在内部性能的测试目前MySQL尚不支持使用这个参数又一定的风险
  • O_DIRECT:InnoDB使用O_DIRECT(或者directio()在Solaris)函数打开数据文件使用fsync()刷新数据文件和日志文件
  • O_DIRECT_NO_FSYNC:在刷新I/O时InnoDB使用O_DIRECT方式

在有RAID卡和写缓存的系统中O_DIRECT有助于避免InnoDB缓存池和操作系统缓存之间的双重缓存

在InnoDB数据和日志文件放在SAN存储上面的系统默认值或O_DSYNC方法会对以读为主的数据库

起到加速作用

innodb_data_home_dirInnoDB系统表空间所使用的数据文件的物理路径默认路径是MySQL

数据文件路径如果这个参数的值为空可以在innodb_data_file_path参数里使用绝对路径

innodb_data_file_pathInnoDB数据文件的路径和大小

innodb_file_per_table:当这个参数启用的时候InnoDB会将新建表的数据和索引单独存放

在.ibd格式的文件中而不是存放在系统表空间中当这张表被删除或TRUNCATE时InnoDB表所占用

的存储会被释放这个设定会开启InnoDB的一些其他特性比如表的压缩当这个参数关闭的时候

InnoDB会将表和索引的数据存放到系统表空间的ibdata文件中这会有一个问题因为系统表空间

不会缩小这样设置会导致空间无法回放

innodb_undo_directoryInnoDB undo日志所在表空间的物理路径和innodb_undo_logs

innodb_undo_tablespaces参数配合来设置undo日志的路径默认路径是数据文件路径

innodb_undo_logs指定InnoDB使用的undo日志的个数在MySQL 5.7.2版本,32个undo日志

被临时表预留使用并且这些日志存放在临时表表空间(ibtmp1)如果undo日志只存放在系统表空间中

想要额外分配供数据修改事务用的undo日志innodb_undo_logs参数必须设置为32以上的整数

如果你配置了单独的undo表空间要将innodb_undo_logs参数设为33以上来分配额外供数据修改事务

使用的undo日志每个undo日志最多可以支持1024个事务如果这个参数没有设置则它会设为默认值128

innodb_undo_tablespacesundo日志的表空间文件数量默认所有的undo日志都是系统表空间

的一部分因为在运行大的事务时undo日志会增大将undo日志设置在多个表空间中可以减少一个

表空间的大小undo表空间文件创建在innodb_undo_directory参数指定的路径下以undoN格式命名

N是以0开头的一系列整数undo表空间的默认大小为10M需要在初始化InnoDB前设置

innodb_undo_tablespaces这个参数在MySQL 5.7.2版本在128个undo日志中有32个undo日志

是为临时表所预留的有95个undo日志供undo表空间使用

innodb_log_files_in_groupInnoDB日志组包含的日志个数InnoDB以循环的方式写入日志

这个参数的默认值和推荐值均是2日志的路径由innodb_log_group_home_dir参数设定

innodb_log_group_home_dirInnoDB重做日志文件的物理路径重做日志的数量

由innodb_log_files_in_group参数指定如果不指定任何InnoDB日志参数MySQL默认会在MySQL

数据文件路径下面创建两个名为ib_logfile0ib_logfile1的两个重做日志文件

它们的大小由innodb_log_file_size参数设定

innodb_log_file_size日志组中每个日志文件的字节大小

所有日志文件的大小(innodb_log_file_size * innodb_log_files_in_group)不能超过512GB

innodb_log_buffer_size:InnoDB写入磁盘日志文件所使用的缓存字节大小

如果innodb_page_size参数为32K则默认值是8MB如果innodb_page_size参数为64K

则默认值是16MB如果日志的缓存设置较大则MySQL在处理大事务时在提交事务前

无需向磁盘写入日志文件建议设置此参数为4~8MB

innodb_flush_log_at_trx_commit当提交相关的I/O操作被批量重新排列时这个参数控制

提交操作的ACID一致性和高性能之间的平衡可以改变这个参数的默认值来提升数据库的性能但是

在数据库宕机的时候会丢失少量的事务这个参数的默认值为1代表数据库遵照完整的ACID模型

每当事务提交时InnoDB日志缓存中的内容均会被刷新到日志文件并写入到磁盘当这个参数为0时

InnDB日志缓存大概每秒刷新一次日志文件到磁盘当事务提交时日志缓存不会立刻写入日志文件

这样的机制不会100%保证每秒都向日志文件刷新日志当mysqld进程宕掉的时候可能会丢失持续时间

为1秒左右的事务数据当这个参数为2时当事务提交后InnoDB日志缓存中的内容会写入到日志文

件且日志文件日志文件以大概每秒一次的频率刷新到磁盘在MySQL 5.6.6版本InnoDB日志刷新

频率由innodb_flush_log_at_timeout参数决定通常将个参数设为1

innodb_flush_log_at_timeout写入或刷新日志的时间间隔这个参数是在MySQL 5.6.6版本

引入的在MySQL 5.6.6版本之前刷新的频率是每秒刷新一次innodb_flush_log_at_timeout参数

的默认值也是1秒刷新一次

innodb_lock_wait_timeout:InnDB事务等待行锁的时间长度默认值是50秒当一个事务锁定

了一行这时另外一个事务想访问并修改这一行当等待时间达到innodb_lock_wait_timeout参数设置

的值时MySQL会报错”오류 1205 (HY000): Lock wait timeout exceeded; try restarting transaction”,

同时会回滚语句(不是回滚整个事务)如果想回滚整个事务需要使用–innodb_rollback_on_timeout

参数启动MySQL在高交互性的应用系统或OLTP系统上可以减小这个参数来快速显示用户的反馈或把更

新放入队列稍后处理在数据仓库中为了更好的处理运行时间长的操作可以增大这个参数这个参数

只应用在InnoDB行锁上这个参数对表级锁无效这个参数不适用于死锁因为发生死锁时InnoDB

会立刻检测到死锁并将发生死锁的一个事务回退

innodb_fast_shutdownInnoDB关库模式如果这个参数为0InnoDB会做一个缓慢关机在关机

前会做完整的刷新操作这个级别的关库操作会持续数分钟当缓存中的数据量很大时甚至会持续几个

시;如果数据库要执行版本升级或降级需要执行这个级别的关库操作以保证所有的数据变更都写入

到数据文件如果这个参数的值是1(默认值)为了节省关库时间InnoDB会跳过新操作而是在下一次

开机的时候通过crash recovery方式执行刷新操作如果这个参数的值是2InnoDB会刷新日志并以冷方式

关库就像MySQL宕机一样没有提交的事务会丢失在下一次开启数据库时crash recovery所需要的时间

更长在紧急或排错情形下需要立刻关闭数据库时会使用这种方式停库

답장을 남겨주세요