mysql update 参数_mysql重要参数总结---不断更新中

(0)basic configuration

character-set-server=utf8 #服务器字符集编码

lower_case_table_names=1 #用来配置数据库名和表名的大小写,建议设置成1

1#表示不区分大小写

0#表示区分大小写

skip-name-resolve #禁用DNS解析, ip解析成主机名

max_connections = 10000 #最大连接数

(1)锁相关

innodb_lock_wait_timeout=50 #innodb等行锁, 支持set global 全局修改,实时生效;

lock_wait_timeout=50 #server层行锁,支持set global 全局修改,实时生效;

innodb_autoinc_lock_mode=2 #默认insert..select是申请自增id只有等语句执行完才会释放锁, 为了提高并发性, 申请完成自增id就释放锁,为了保证数据的一致性, 需要同时设置二进制日志格式为row,binlog_format=row

0 #语句执行结束后才释放锁

1 #普通的insert语句, 自增锁在申请之后就马上释放; 类似insert..select这样的批量插入数据的语句, 自增锁还是需要等语句结束后才被释放;

2 #所有的申请自增主键的动作都是申请后就释放锁; ![]

(2)innodb

innodb_file_per_table=ON|OFF #默认为ON, 建议初始化mysql还是为ON,

ON:#表的数据放在系统共享表空间, 也就是和数据字典放在一起, 如果删除行数据, 共享表空间无法回收;

OFF:#每个innodb表数据存储在一个以.ibd为后缀的文件中

innodb_buffer_pool_size=128M #默认为128M,建议设置成物理内存的70%

(3)redo log

innodb_flush_log_at_trx_commit=0|1|2 #每次事务的redo log都直接持久化到磁盘

#设置为0的时候, 表示每次事务提交都只把redo log留在redo log buffer中,如果主机掉电,会丢失数据;

#设置为1的时候, 表示每次事务提交都把redo log持久化到磁盘中;

#设置为2的时候,表示每次事务提交都只把redo log写到page cache中, 如果主机掉电,会丢失数据;

innodb_support_xa=ON #两段式提交

innodb_log_file_size=1G #指定redo log文件的大小, 注意redo log文件过小, redo log写满, 要flush脏页, 整个系统不能更新

innodb_log_files_in_group=4 #指定redo log文件数据, 默认是2, 如果空间足够,建议设置为4

innodb_log_group_home_dir=./ #指定redo log所在路径, 默认是./ 也就是数据目录下

(4)binlog

sync_binlog=0|1|N #如果不想数据库断电设置为1,事务执行过程中, 先把二进制日志写到binlog cache中暂存; binlog cache由binlog_cache_size参数决定, 超过暂存磁盘

0: #表示每次提交事务把binlog cache中的日志写到文件系统的page cache内存中,不写到磁盘, 但是磁盘文件还能看到记录, 其实是从文件系统的page cache中读取的;

1: #表示每次事务的binlog都持久化到磁盘

N: #表示每次提交事务都会写到文件系统的page cache中, 但累计到N个事务后在写到磁盘中;、

binlog_format=statement|row|mixed #指定二进制日志文件格式,建议生产环境使用row格式, 如果delete, update, insert语句误操作, 可以使用脚本逆向恢复数据

statement: #只会记录用户输入的sql语句

row:#同一个sql语句修改了10000条数据的情况下, 基于行的额日志会有10000条记录分别记录每一行的数据修改

mix: #mysql自己会判断这条sql语句是否可能引起主备不一致, 如果有可能, 就用row格式, 否则用statement格式

max_binlog_size=1073741082 #指定二进制日志文件大小, 默认为1G

log-bin=mysql-bin|/path/file #开启二进制日志, 文件名或二进制日志保存路径

expire_logs_days = 7 #设置二进制日志的有效期

(5)slow log

slow_query_log = 1 #是否开启慢查询日志

long_query_time = 1 #超过1秒钟, 就认为是慢查询, 并记录到日志文件中

slow_query_log_file = /path/to/file #慢查询日志保存路径

(6)Replication availability , 用于主从复制中, 复制从节点;

relay-log-info-repository=TABLE #可以避免relay.info更新不及时,SLAVE 重启后导致的主从复制出错, apply event和更新relay_log_info表的操作被包含在同一个事务里,innodb要么让它们同时生效,要么同时不生效,保证位点信息和已经应用的事务精确匹配

relay_log_recovery=1 #会抛弃master_log_info中记录的复制位点,根据relay_log_info的执行位置重新从Master获取binlog,当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。默认情况下该功能是关闭的,将relay_log_recovery的值设置为 1时,可在slave从库上开启该功能,建议开启。MySQL启动时,会从relay log文件中获取已接收的GTIDs并更新Retrieved_Gtid_Set。由于relay log文件可能不完整,所以需要抛弃已接收的relay log文件。因此relay_log_recovery = ON也是必须的。

sync_relay_log=1 #这个参数和sync_binlog是一样的,当设置为1时,slave的I/O线程每次接收到master发送过来的binlog日志都要写入系统缓冲区,然后刷入relay log中继日志里,这样是最安全的,因为在崩溃的时候,你最多会丢失一个事务,但会造成磁盘的大量I/O。当设置为0时,并不是马上就刷入中继日志里

sync_relay_log_info=1 #执行的relay位置, 可以实时同步到对应的文件中和对应的表中,如果slave重启, 数据库会根据执行过的relay log(已执行过的事务)之后事件执行sqlmaster-info-repository=TABLE #默认

(7)flush

innodb_io_capacity=3500 #该值是告诉innodb的磁盘iops能力, 如果太小, 会导致刷脏页较慢, 会影响查询

innodb_flush_neighbors=0 #刷脏页的是否把隔壁的脏页也刷到磁盘, 0表示不刷,1表示刷, 默认是开启的, 如果是固态硬盘建议设置成0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值