mysql5.7配置
Posted 小白君的成长
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql5.7配置相关的知识,希望对你有一定的参考价值。
my3306.cnf
[client]
port = 3306 #端口
socket = /data/mysql3306/mysql3306.sock #mysql以socket方式运行的sock文件位置
[mysql]
auto-rehash #自动补全
[mysqld_safe]
log-error = /data/mysql3306/my3306.err #错误日志
pid-file = /data/mysql3306/my3306.pid #process id文件
[mysqld]
user = mysql #mysql以什么用户运行
port = 3306 #端口
default_storage_engine = InnoDB #默认存储引擎
character-set-server = utf8 #默认utf8字符集
socket= /data/mysql3306/mysql3306.sock #mysql以socket方式运行的sock文件位置
pid-file = /data/mysql3306/mysql3306.pid #process id文件
datadir = /data/mysql3306/data #mysql的数据目录
basedir = /usr/local/mysql #安装目录
skip_name_resolve = 1 #禁用DNS主机名查找,启用后使用IP或localhost
#skip-external-locking #用于多进程条件下为MyISAM数据表进行锁定
symbolic-links=0 #是否支持符号链接,数据库或表可以存储在my.cnf中指定datadir之外的分区或目录,为0不开启
max_connections = 3000 #mysql最大连接数
max_connect_errors = 100000 #超过其连接错误次数会被屏蔽
transaction_isolation = READ-COMMITTED #事物隔离级别
interactive_timeout=180 #服务器关闭交互式连接前等待活动的秒数
wait_timeout=180 #服务器关闭非交互连接之前等待活动的秒数
back_log=600 ##在MYSQL停止响应新请求之前,短时间内的多少个请求可以被存在堆栈中
#explicit_defaults_for_timestamp = 1 # 如果一行数据中某些列被更新了,如果这一行中有timestamp类型的列,这个列的数据也会自动更新到那个时间点,设置为1关闭自动更新时间点
# LOGGING #
log_bin=/data/mysql3306/logbin/mysql-bin #binlog日志目录
binlog_format = row #建议使用row模式
expire_logs_days = 7 #binlog日志保留天数
# sync_binlog = 1 #控制数据库的binlog刷到磁盘上去,默认为0
slow_query_log = 1 #慢查询开启
slow_query_log_file=/data/mysql3306/my3306slow.log #慢查询日志文件保存路径
#log_queries_not_using_indexes = 1 #是否记录未使用索引的语句
#log_slow_admin_statements = 1 #记录optimize table,analyze table和alter table语句
#log_slow_slave_statements = 1 #记录由Slave所产生的慢查询
#log_throttle_queries_not_using_indexes = 10 #设定每分钟记录到日志的未使用索引的语句数目,超过这个数目后只记录语句数量和花费的总时间
long_query_time = 1 #慢查询时间,单位s
#min_examined_row_limit = 100 #查询检查返回少于该参数指定行的SQL不被记录到慢查询日志
#master_info_repository = TABLE #从机保存主节点信息方式,设成file时 会生成master.info 和 relay-log.info2个文件,设成table,信息就会存在mysql.master_slave_info表中
#relay_log_info_repository = TABLE #保存从机读取relay log的位置信息,可选值为FILE,TABLE
gtid_mode = on #启用gtid类型
#enforce_gtid_consistency = 1 #强制GTID的一致性
#log_slave_updates #从机更新是否记入日志,在做双主架构时异常重要
#relay_log =/data/slave/mysql-relay.log #relay_log保存的位置
#relay_log_recovery = 1 #当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性
#binlog_gtid_simple_recovery = 1 #这个参数控制了当mysql启动或重启时,mysql在搜寻GTIDs时是如何迭代使用binlog文件的。 这个选项设置为真,会提升mysql执行恢复的性能。因为这样mysql-server启动和binlog日志清理更快
#slave_skip_errors = ddl_exist_errors #跳过错误
####cache#####
table_open_cache=128 #指定表高速缓存的大小,表的大小一般是(max_connections* 查询同时用到的表数)
thread_cache_size=300 #线程池,线程缓存
query_cache_size=128M #查询缓存大小
query_cache_min_res_unit=128k #表示query cache 每个结果集存放的最小内存大小
sort_buffer_size=8M #每个连接设置查询排序时所能使用的缓冲区大小
read_buffer_size=8M #每个连接读查询操作使用的缓存
read_rnd_buffer_size=4M #每个连接随机读查询操作使用的缓存
join_buffer_size=2M #每个连接联合查询所使用的缓存大小
bulk_insert_buffer_size=16M #为一次插入多条新记录的INSERT命令分配的缓存区长度
max_heap_table_size=64M #这个变量定义了用户可以创建的内存表(memory table)的大小.这个值用来计算内存表的最大行数值
tmp_table_size=64M #临时表的大小
query_cache_type=1 #开启Query Cache 功能,有0,1,2三个值
###MyISAM###
#key_buffer_size=64M #索引缓存大小
#key_cache_block_size=4k 指定每个索引缓存的区块大小
#myisam_sort_buffer_size=2M
########innodb settings########
#innodb_page_size = 4k #innodb每个数据页大小
innodb_buffer_pool_size = 4G #缓存innodb表的索引,数据,插入数据时的缓冲,专用mysql服务器设置的大小: 操作系统内存的70%-80%最佳
innodb_buffer_pool_instances = 1 #可以开启多个内存缓冲池,把需要缓冲的数据hash到不同的缓冲池中,这样可以并行的内存读写
#innodb_buffer_pool_load_at_startup = 1 #默认为关闭OFF。如果开启该参数,启动MySQL服务时,MySQL将本地热数据加载到InnoDB缓冲池中
#innodb_buffer_pool_dump_at_shutdown = 1 #默认为关闭OFF。如果开启该参数,停止MySQL服务时,InnoDB将InnoDB缓冲池中的热数据保存到本地硬盘
#innodb_lru_scan_depth = 2000 #会影响page cleaner线程每次刷脏页的数量, 这是一个每1秒 loop一次的线程
innodb_lock_wait_timeout = 50 事务等待获取资源等待的最长时间,超过这个时间还未分配到资源则会返回应用失败,单位s
#innodb_io_capacity = 4000
#innodb_io_capacity_max = 8000 #这两个设置会影响InnoDB每秒在后台执行多少操作,知道美妙可执行多少次IO操作最好
#innodb_flush_method = O_DIRECT #默认值为 fdatasync. 如果使用 硬件RAID磁盘控制器, 可能需要设置为 O_DIRECT,不使用硬件RAID控制器,或者使用SAN存储时, O_DIRECT 可能会导致性能下降
#innodb_log_group_home_dir = /data/mysql3306/redolog/ #redolog重做日志存放目录
#innodb_undo_directory = /data/mysql3306/undolog/ #undolog回滚日志存放目录
innodb_undo_logs = 128 #undo回滚段的数量, 至少大于等于35,默认128
#innodb_undo_tablespaces = 3 #用于设定创建的undo表空间的个数,在mysql_install_db时初始化后,就再也不能被改动了;默认值为0,表示不独立设置undo的tablespace,默认记录到ibdata中;
innodb_flush_neighbors = 1 #InnoDB存储引擎在刷新一个脏页时,会检测该页所在区(extent)的所有页,如果是脏页,那么一起刷新。这样做的好处是通过AIO可以将多个IO写操作合并为一个IO操作。对于传统机械硬盘建议使用,而对于固态硬盘可以关闭。
innodb_log_file_size = 1G #定义了日志文件的大小,innodb日志文件的作用是用来保存redo日志
innodb_log_buffer_size = 8M #事务在内存中的缓冲。 分配原 则:控制在2-8M.这个值不用太多的。他里面的内存一般一秒钟写到磁盘一次
innodb_purge_threads = 4 #控制是否使用,使用几个独立purge线程(清除二进制日志)
innodb_large_prefix = 1 #当改为ON时,允许列索引最大达到3072
innodb_thread_concurrency = 64 #InnoDB kernel并发最大的线程数
innodb_print_all_deadlocks = 1 #是否将死锁相关信息保存到MySQL 错误日志中
innodb_strict_mode = 1 #开启InnoDB严格检查模式,尤其采用了页数据压缩功能后,最好是开启该功能,如果写法有错误,不会有警告信息,而是直接抛出错误
innodb_sort_buffer_size = 8M #ORDER BY 或者GROUP BY 操作的buffer缓存大小
######mysqld-5.7########
innodb_buffer_pool_dump_pct = 40 #表示转储每个bp instance LRU上最热的page的百分比。通过设置该参数可以减少转储的page数
innodb_page_cleaners = 4 #引入了多个page cleaner线程。从而达到并行刷脏的效果
innodb_undo_log_truncate = 1 #是否开启在线回收(收缩)undo log日志文件,支持动态设置
innodb_max_undo_log_size = 2G #当超过这个阀值(默认是1G),会触发truncate回收(收缩)动作,truncate后空间缩小到10M
innodb_purge_rseg_truncate_frequency = 128 #控制回收(收缩)undo log的频率。undo log空间在它的回滚段没有得到释放之前不会收缩, 想要增加释放回滚区间的频率,就得降低设定值
binlog_gtid_simple_recovery=1 #这个参数控制了当mysql启动或重启时,mysql在搜寻GTIDs时是如何迭代使用binlog文件的。 这个选项设置为真,会提升mysql执行恢复的性能。因为这样mysql-server启动和binlog日志清理更快
log_timestamps=system #5.7.2 之后改参数为默认 UTC 这样会导致日志中记录的时间比中国这边的慢,导致查看日志不方便。修改为 SYSTEM 就能解决问题
#transaction_write_set_extraction=MURMUR32 #用于定义一个记录事务的算法,这个算法使用hash标识来记录事务。如果使用MGR,那么这个hash值需要用于分布式冲突检测何处理#,在64位的系统,官网建议设置该参数使用 XXHASH64 算法。如果线上并没有使用该功能,应该设为off
#show_compatibility_56=on #从mysql5.7.6开始information_schema.global_status已经开始被舍弃,为了兼容性,此时需要打开 show_compatibility_56
[mysqldump]
quick
max_allowed_packet = 32M #mysql最大接受的数据包大小
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#skip-grant-tables #跳过权限
以上是关于mysql5.7配置的主要内容,如果未能解决你的问题,请参考以下文章