sql2008错误2,错误日志不断生成sqldump文件,跪求怎么处理

全文中一共有常用的(事实上你如果花1-2周阅读、理解、自己动手设一下后是需要这么多参数的)76个参数,笔者把近10年里3个亿万级项目的数据库调优用此篇浓缩到了可能读者只需要2周时间就可以掌握,同时我是按照:

在某些典型硬件配置下的db上参数该设多少?
有些参数怎么算、算法又如何
这种style来写的,相信此篇会对一些使用mysql的尤其是正在或者将要面临万级并发的项目、网站有所帮助。具体请看文档!

一千个DBA就有一千种配置方式!

大家一定记得不要轻易去看网上,要看只看官网!网上很多博客都是错的,连参数都列错了,f层面把它设成了0,如果在使用时(99%情况是用的1)时,你想要用root在生产运行时把它设成set autocommit = 1都开启不了。而如果你在一开始就没它设置成1,那么当碰到某些特殊场景特别是写store procedure时需要把它设成0时,你是可以手动临时把某一个session给开在0的。

mysql不支持前端app存表情等字符

生产上建议开启成1,这样mysql server不会对客户端连接使用反向dns解析,否则客户端连上后有时在遇有生产高速运行时直接timeout,如果设成了1带来的问题就是你不能在mysql中使用主机名来对客户端权限进行划分,而是需要使用ip。

如果要做成即允许mysql里允许使用主机名来分配客户端连接权限,又要做到不要让mysql去做dns解析,可以在mysql所在主机端的/etc/hosts文件中写上客户端的主机名,因为当客户端连接连上来时,mysql反向查找客户端连接时的域名解析的步骤是:首先查找 /etc/hosts 文件,搜索域名和IP的对应关系。但是这样做也有一个问题,那就是如果你有多个客户端多个mysql主从关系,哪到你要把mysql做成一个dns解析器吗?因此推荐设成1

mysql server每一次会对客户端连接使用反向dns解析,经常会出现客户端连上后有timeout现象。

最大连接数,以微品会:前端3万的tps并发,假设redis命中失效50%(这是灾难),那么后端mysql单个主或从开启连接数为:20,000,我们公司在前端并发曾达到过6万,80%被waf、vanish、缓存挡掉,落在db上的qps最高一次为20,000连接,再按照mysql官方,max_connections值受系统os最大打开连接数限制,因此我们需要做以下2步操作:

1)在 /etc/security/f中去分配一个暴大的值,我们这边基于128gb,1万connection的并发来说,你给个16M不算小也不算多,我推荐给到8~16M间(这是指在一开始)。

如果是128gb内存的服务器,我建议是在f中如下设置:

主从复制时用,见gtid_mode,这是牵连参数,随着gtid_mode的开启一起开启。

必须跟着gtid_mode一起开启,要不然mysql实例起不来。

它只要标注在f文件中应该是消失的或者是这样的表示的:

但是有时我们的一些表(特别是不熟悉mysql的一些开发)真的是用的是mysql5.6旧版的建表语句,这个问题在平时单机模式下很难发现,一旦主从结构一上后,在5.7上真的是有一定机率(有10%-20%的机率)碰到ddl语句是旧版mysql而运行在mysql5.7上,这时在主从复制时会抛一个无法主从复制的错,那么这时我们需要抓数据,表已经建好了,这个影响不大、微乎其微,因此我们可以把它设成”忽略“。这个是本人的吐血经验,为什么要提这个梗。。。你们懂的。

如果因为建表语句和mysql5.7有冲突时在单实例模式下mysql运行时不会发现,在主从复制时如果没有设跳过值,一旦发生,会影响主从复制,表现就是:主从复制失败。

锦上添花的值,非必要,这边给出一些best practice:

通常来说我们会设成25%。对于大并发前提下我们会使用40这个值,这个值越大,mysql启动时间越长。它是你的innodb_buffer_pool_size的百分比!

MySQL默认在InnoDB缓冲池(而不是整个缓冲池)中仅保留最频繁访问页的25%。请注意,这个变量是基于内存中的实际数据量,而不是缓冲池的大小。例如,如果有100GB的缓冲池,但只有10GB的数据,默认只有10GB的25%(即2.5GB)数据保存在内存中。

在多数使用场景下,合理的选择是:保留最有用的数据页,比加载所有的页(很多页可能在后续的工作中并没有访问到)在缓冲池中要更快。你可以更改innodb_buffer_pool_dump_pct变量的值。

推荐在默认值的2倍(默认为1GB)

推荐在默认值的2倍(默认为1GB),一般我们不会轻易去设它。

系统按照1GB来计算。

默认值在128,这个值不太会去碰。控制回收undo log的频率。 指定purge操作被唤起多少次之后才释放rollback segments。当undo表空间里面的rollback segments被释放时,undo表空间才会被truncate。由此可见,该参数越小,undo表空间被尝试truncate的频率越高。

系统默认按照:128去设定。

前提是你的mysql必须>5.7.6,否则要设为关闭。

这个参数控制了当mysql启动或重启时,mysql在搜寻GTIDs时是如何迭代使用binlog文件的。

这个选项设置为真,会提升mysql执行恢复的性能。因为这样mysql-server启动和binlog日志清理更快。该参数为真时,mysql-server只需打开最老的和最新的这2个binlog文件。

这个参数主要是控制错误日志、慢查询日志等日志中的显示时间。但它不会影响查询日志和慢日志写到表 (mysql.general_log, mysql.slow_log) 中的显示时间,此参数是全局的,可以动态修改。

这个值不需要去设,因为你用的不是mysql8.0,在5.7.6版以后这个制不是很成熟,如果要开启一般会使用:XXHASH64.

这个值是基于group(并行)复制用的,推荐值为:XXHASH64,如果没有开启基于group(并行)的复制千万不要去设这个参数,设都不用去设,保持默认就可以了。

默认为off状态,即不生效。

默认是off。相当于严格模式。

————————————————
版权声明:本文为CSDN博主「TGITCIC」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

发布时间: 14:21:00 来源:亿速云 阅读:138 作者:iii 栏目:

这篇文章主要介绍“数据库日志文件过大清理的方法有哪些”,在日常操作中,相信很多人在数据库日志文件过大清理的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”数据库日志文件过大清理的方法有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

设置检查点,自动截断日志

  一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大
1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的-->双击打开数据库目录-->选择你的数据库名称(如用户数据库cwbase1)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存
2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定
3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据

方法三:通过SQL收缩日志

把代码复制到查询分析器里,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可

方法一操作起来相对麻烦一些,可是可以定制日志的大小,清理日志后其相应的数据库数据文件在也会变小,数据也不会丢失;方法二操作比较方便,可以把数据库中的日志文件清理到1M大小;

到此,关于“数据库日志文件过大清理的方法有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

我要回帖

更多关于 sql2008错误2 的文章

 

随机推荐