更新 :终于想起来看看慕尼黑,似乎硬盘之一是问题的根源毕竟,除非我完全读这个错误。 这是munin输出: http : //imagizer.imageshack.com/img536/1070/9d5c62.png 。 我是否正确地认为我的一个硬盘可能需要更换,或者其他的东西能解决那些I / O尖峰? 我有一个非常强大的服务器(四核i7,32GB RAM),在LAMP堆栈上运行Drupal 7网站(pixelscrapper.com),利用Varnish,Memcached,APC和CloudFlare。 我们每天获得大约2万次网页浏览量,通常这个网站已经在3-4秒内为authentication用户加载,服务器总时间约为0.5秒,在php和mysql之间平均分配(大约0.2秒在MySQL每个请求)…所有通过New Relic(精简版,所以我不能看到数据库跟踪)报告。 3-4秒的页面加载时间,在MySQL中0.2秒已经持续了好几个月。 然后几天前,该网站开始花费更多的时间来加载,并看看新的遗物,我注意到,MySQL现在每个请求大约2秒,而不是0.2秒。 这是没有任何重大的网站改变…只是定期的网站使用。 所以我的问题是,什么可能突然导致MySQL花费2秒每个请求,而不是0.2秒,没有变化部署到网站,并没有重大的stream量变化? 我的最好的直觉是,这可能是由以下原因造成的: 根据my.cnf中当前的内存分配情况,某些表增长过大,或者总的db增长过大,所以以前在内存中的内存现在正在抖动硬盘。 某些硬件问题,如导致磁盘访问的其中一个HDD出现问题(我在RAID中有两个HDD)。 关键是,基于看mysqltuner输出,内存分配似乎是好的,基于初步的驱动器testing,硬盘似乎不会被打破…所以… 有什么想法可能会导致这样的事情发生,我应该如何解决这个问题? 这里的mysqltuner输出(mysql运行98天): ——– General Statistics ————————————————– [–] Skipped version check for MySQLTuner script [OK] Currently running supported MySQL version 5.5.28-0ubuntu0.12.04.2-log [OK] Operating on 64-bit architecture ——– Storage Engine Statistics ——————————————- [–] Status: […]
性能比我想在MySQL服务器上慢一点,我们不使用复制,也不需要时间点恢复。 所以一个推荐的提高性能的方法似乎是closuresbin-logging。 我在my.cnf中有以下内容: ## Replication / Transaction Logging # binlog_format = row log-bin = /var/lib/mysql/mysql-bin.log expire_logs_days = 3 sync-binlog = 1 我注释了所有四行,并重新启动MySQL。 该服务启动正常,没有任何问题在任何错误日志或缓慢的查询日志中显示。 除了写入性能降低到无法使用的水平之外,一切看起来都很好。 它确实继续工作。 取消注释上述四行并重新启动服务立即恢复以前的性能级别。 以前的性能水平并不是我想要的,但我希望在closuresbin-logging的情况下,希望能够提高性能。 为什么会发生? 如何成功closures垃圾箱logging以获得性能? 眼镜: 所有的表都是innodb(一些相当大的) mysql版本14.14 Distrib 5.6.19,用于使用EditLine wrapper的debian-linux-gnu(x86_64) Ubuntu 12.04 LTS服务器
我们的服务器上周崩溃,我们失去了很多的信息。 我们能够恢复表ib_logfile0 , ib_logfile1和ibdata1 .frm文件,但没有.ibd 。 我已经尝试了1到6级的所有级别的innodb-force-recovery以及我在网上find的很多其他“解决scheme”,但没有取得任何成功。 现在我试图做一个mysqldump和数据库restore ,但遇到同样的问题Mathew在这里 。 这个答案看起来像可能工作。 我的问题是,第一 – 我的服务器是基于Windows的,第二 – 我缺乏在Windows命令行上应用此知识和技能。 有什么机会有一个类似的Windows解决scheme 编辑 我们没有使用innodb_file_per_table所以所有的数据都应该存储在ibdata1
所以,在成功复制数据库的文件之后,InnoDB日志的旧版本被传输,MySQL无法启动的时间less于innodb_force_recovery=6 。 由于这个原因,我们不能将数据库转换成MyIsam,因为InnoDB处于只读模式,这要归功于上面的强制恢复编号。 由于InnoDB日志文件不存在,我们将来会出现LSN的错误 – 我们从备份中唯一的备份仍然是过去的方式。 尝试转储数据库,而在恢复6失败,无论我们尝试,给我们的错误代码mysqldump: Couldn't execute 'SELECT /*!40001 SQL_NO_CACHE */ * FROM {random selection of one of our tables}: Lost connection to MySQL server during query (2013) 我们不太确定在这里做什么,因为我们已经尝试了很多事情来解决它。 任何人有任何提示? 如果你需要它,下面是错误的一个片段: 2017-02-08T16:22:50.463643Z 0 [ERROR] InnoDB: Page [page id: space=14, page number=5] log sequence number 65609017550 is in the future! Current system log sequence […]
我在MySQL5.0中设置了以下configuration innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend:max:16000M 虽然数据增加,ibdata2的大小不变 为什么mysql ibdata2的大小不变?
我试图优化一个长期未被优化的表格。 它有大约250万行,1.3 GB的数据和152 MB的索引。 大约15分钟前我开始优化,我不知道需要多长时间。 该服务器是相当强大的(四Xeon与4GB内存),并有500MB的innodb缓冲池大小。 我应该期望这需要几分钟,几小时或几天吗?
我在我的机器(Windows Server 2008)上安装了MySQL Server 5.1,我selectMyISAM作为默认的数据库存储引擎。 我只是为了testing而在其上创build了一个空的数据库。 后来,我使用MySQL服务器实例configuration向导重新configuration它以使用InnoDB作为默认存储引擎。 现在,当我做出更改并尝试重新启动MySQL服务时,它不断崩溃。 它只是不启动。 我怎样才能访问错误日志,看看有什么问题? 只有当我再次运行服务器configuration向导并select默认的MyISAM引擎时才会启动。 一旦开始,当我做“SHOW ENGINES”时,它会连续显示我InnoDB,但是当我做“SHOW ENGINE INNODB STATUS”时,它会给我发送Unknown table engine'innodb错误。 请帮忙。 谢谢。
我有一个有InnoDB和MyISAM表的MySQL服务器。 InnoDB表空间在4 GB以下是相当小的。 MyISAM总共大约250GB,其中50GB用于索引。 我们的服务器有32 GB的RAM,但通常只使用〜8GB。 我们的key_buffer_size只有2GB。 但是我们的关键caching命中率是〜95%。 我觉得很难相信.. 这是我们的关键统计数据: | Key_blocks_not_flushed | 1868 | | Key_blocks_unused | 109806 | | Key_blocks_used | 1714736 | | Key_read_requests | 19224818713 | | Key_reads | 60742294 | | Key_write_requests | 1607946768 | | Key_writes | 64788819 | key_cache_block_size默认为1024。 我们有52 GB的索引数据和2 GB的密钥caching足以达到95%的命中率。 那可能吗? 另一方面,数据集是200GB,并且由于MyISAM使用OS(Centos)caching,我期望它使用更多的内存来caching访问的myisam数据。 但在这个阶段,我看到key_buffer被完全使用了,我们的innodb的缓冲池大小是4GB,并且也被完全使用,总计达到了6GB。 这意味着数据仅使用1 GB进行caching? 我的问题是如何检查所有可用内存的使用位置? […]
我有一个网站,有一个体面大的数据库,3GB的大小,几十万张表的纪录。 目前它在MyISAM上是100%的,而且我觉得服务器由于过多的locking而比预期的要慢,所以我想尝试去InnoDB,看看是否让事情变得更好。 但是,我需要直接在生产中这样做,因为显然没有负载,这并没有什么区别。 不过,我有点担心,因为InnoDB实际上有可能会变慢,所以问题是: 如果我把所有表转换成InnoDB,结果比以前更糟,我可以返回MyISAM而不会丢失任何东西吗? 你能想到我可能遇到的任何问题吗? (例如,我知道InnoDB将所有数据存储在一个只有更大的大文件中,这是否会成为问题?) 非常感谢你 丹尼尔
Mac服务器崩溃之后,我正忙着从InnoDB表中恢复logging。 所有表共享一个数据文件。 我已经将ibdata1和两个日志文件复制到Windows上托pipe的新的mysql服务器以进行恢复,以及我需要的表的单个.frm文件。 到目前为止,复苏已经惨败。 尝试将各种innodb_force_recovery选项与lower_case_table_names选项组合在这些数据文件的副本上,并不能解决问题。 即使正常开始使用这些文件的副本,最初也会检测到崩溃并进行修复,而且其他初创公司不会出错。 删除ib_logfiles并让Mysql在重新启动时重新创build它们并不能解决问题。 将.frm文件名更改为全部小写并重新启动不能解决问题。 SHOW TABLES查询显示表,但是对表本身的任何查询失败,错误1146.当运行innodb_table_monitor ,在输出中我可以清楚地看到表定义(或多或less)和行计数。 查看ibdata1文件的内容,我以纯文本的方式查看所有logging数据,但没有可用的模式来parsing它。 从我可以告诉,这个问题似乎都归结为“错误1146 – 表'db.my_table'不存在”当我尝试引用任何命令或查询中的表。 你看,这个表是用Mac上的大写字符创build的,根据Mysql,Windows无法处理。 任何人都知道解决scheme来提取这些logging?