Articles of mysql

我怎样才能find一个MySQL秒杀的原因?

昨天,我的一台服务器的MySQL查询数量出现了不寻常的高峰。 有什么办法可以检查我的日志来检测主要原因是什么? 谢谢。 编辑:添加穆宁图。

设置MySQL数据库的自动备份,包括表锁等 – MySQL Workbench?

我们有一个虚拟服务器,在Ubuntu服务器上运行完整的ssh和root权限运行LAMP。 我在运行ubuntu的办公室里有一台小电脑,这个电脑没有被使用。 我以为我应该使用它来制作和存储(我们的MySQL数据库备份的副本)。 但是,我如何去备份我们的数据库呢? MySQL Workbench会locking表以避免在其他一些function中发生错误,但是没有计划的任何计划的自动备份位。 MySQL Dumper没有指定他们可以保持数据库的一致性。 来自本段的资料: 我没有看到在我的服务器上运行php脚本,并在有SSH访问时通过电子邮件发送备份。 由于备份是如此重要,我认为必须有一个标准(或真棒)的方式做到这一点,我还没有find! 那么我怎么去备份我们的数据呢? 而且,最好是我们的用户,configuration等!

Linux Nginx + php-fpm + cron + mysqld =总是内存不足

我不明白。 我有一个VPS与Nginx和PHP的FMP和MySQL。 应该是非常轻量级的。 没有Apache,对吧? 当我重新启动时,它是非常轻量级的。 〜50/481 MB MEM使用。 非常可以接受的IMO 几天之后,有大约20个mysqld进程正在运行,7个php-fpm进程和〜8个getty进程,以及1024 MB交换满的3/4,服务器内存不足! 我不是专业人士,但我很确定这是不正确的… 我认为crons与它有关。 我有3个工作计划: 每分钟一个简单的(阅读新的邮件smtp) (每天晚上从大约30篇博客中阅读RSS) 每天早上一个简单的(2个小型数据库的mysqldump) 我不知道为什么我认为=)可能是因为简单的工作(SMTP,每分钟)总是在htop列表中。 (但总是用0%cpu,0%mem和0:00:00时间…) 20个mysqld也很奇怪,但是它们似乎并不需要太多内存。 php-fpm显然确实消耗了大量的内存。 在写这个10分钟内,内存已经从66 MB变成了120 MB! 最重要的6个消费进程是php-fpm: pool www 。 当我重新启动/etc/init.d/php5-fpm ,内存下降到〜70 MB。 php-fpm如何需要400 MB以上的内存? 那是怎么回事? 在过去的10分钟,交换空间已经稳定在98MB左右。 任何人都知道可能会发生什么? (我知道这是在整个服务器上的信息非常less。)如果你愿意,我可以添加细节。 我甚至没有运行任何像样大小的网站! 更多信息: htop –sort-key PERCENT_MEM的屏幕 – htop –sort-key PERCENT_MEM : 与ps xv , cat /proc/meminfo和top cat /proc/meminfo : […]

Amazon S3网站和MySQL备份

我有一个网站(一个数字资产pipe理系统/画廊 – http://www.resourcespace.org )有大量的图像。 网站的总大小,包括图像大约6GB。 该网站是在PHP中,并使用MySQL数据库。 自动备份网站和MySQL数据库并每天晚上推送到Amazon S3的最佳方式是什么? 有没有现成的脚本可以做到这一点?

用复制的数据*和*自己的数据创build一个testing数据库

我想创build一个testing数据库,每天使用生产数据库中的数据进行刷新。 但是 ,我想能够在testing数据库中创buildlogging,并保留它们而不是被覆盖。 我想知道是否有一个简单的方法来做到这一点。 这两个数据库运行在同一台服务器上,显然是排除了复制? 澄清,这是我想要发生的事情: testing数据库是使用生产数据创build的 我创build了一些我想要在testing服务器上运行的testinglogging(基本上我可以创build一些我可以玩的示例logging) 第二天,数据库被完全刷新,但是当天创build的logging被保留。 那天未被触动的logging被生产数据库中的loggingreplace。 这很复杂,如果删除了生产数据库中的一个logging,我也希望它在testing数据库上也被删除,所以我想删除testing数据库中不再存在于生产数据库中的logging,除非这些logging在testing数据库中创build。 看起来像这样做的唯一方法是有一些表存储关于正在创build的logging的元数据? 举个例子,像这样的东西: CREATE TABLE MetaDataRecords ( id integer not null primary key auto_increment, tablename varchar(100), action char(1), pk varchar(100) ); DELETE FROM testdb.users WHERE NOT EXISTS (SELECT * from proddb.users WHERE proddb.users.id=testdb.users.id) AND NOT EXISTS (SELECT * from testdb.MetaDataRecords WHERE testdb.MetaDataRecords.pk=testdb.users.pk AND testdb.MetaDataRecords.action='C' AND […]

如何在防止MITM攻击的同时连接到Amazon RDS MySQL实例

我有一个运行MySQL的Amazon RDS实例。 我已经创build了一个用户帐户,并且我已经configuration了MySQL,要求所有login帐户都使用SSL。 我希望MySQL客户端能够对服务器进行身份validation,以确保不会发生中间人攻击。 MySQL命令行客户机有一个选项,即–ssl-verify-server-cert 。 但是,当我尝试它时,我得到以下,无意义的错误消息: 错误2026(HY000):SSL连接错误 所以这个命令工作正常: mysql –host $ RDS_host –user $ username \ –password = $ password \ –ssl -ca mysql-ssl-ca-cert.pem -e'\ s' 但是,如果我添加选项–ssl-verify-server-cert ,则会收到刚刚引用的错误消息。 (顺便说一下,CA文件是从https://rds.amazonaws.com/doc/mysql-ssl-ca-cert.pem获得的。) 有没有办法让这个选项工作? 从某种意义上说,这个选项不起作用也就不足为奇了,因为亚马逊的文档(使用右边的框架)陈述如下: Amazon RDS中的SSL支持严格用于encryption客户端和数据库实例之间的连接; 不应该依赖它来validation服务器。 然而,从亚马逊的angular度来看,我并不明白这个问题在哪里。 在我看来,他们可以很容易地configuration他们的服务器,以便我可以使用–ssl-verify-server-cert 。

大post服务器错误

在一个大的drupal站点上,数据库服务器位于直接连接到Web服务器的单独的服务器上。 Web服务器使用apache和memcached。 问题是,每当post很大,比如大于10KB,服务器不能正确返回。 我检查了Apache和MySQL日志,但无法find任何logging错误的痕迹。 当我使用nginx / php5-fpm而不是apache时,错误也会发生。 尽pipe如此,大post是注册,但不正确,以便他们显示为pipe理员,当我在网站上打开一个新的页面。 我真的很困惑,并感谢您的提示,以查明可能的来源,如果这个长期的问题。

MySQL 5.5(Percona)断言失败日志..什么会造成这种情况?

256GB内存,64核心,AMD运行Ubuntu 12.04与Percona MySQL 5.5.28。 以下是断言失败。 我们只是在运行大量的插入操作时发生了第二个断言失败(不同的“文件”,位置等)。 第一次失败后,MySQL仅在重新启动后重新启动 – 在尝试恢复后不断循环相同的错误。 我决定用-o进行mysqlcheck进行优化。 由于这些都是Innodb表(非常大的表,60 + GB),这将在所有表上做一个改变表。 在这中间,下面的断言失败再次发生: 121115 22:30:31 InnoDB: Assertion failure in thread 140086589445888 in file btr0pcur.c line 452 InnoDB: Failing assertion: btr_page_get_prev(next_page, mtr) == buf_block_get_page_no(btr_pcur_get_block(cursor)) InnoDB: We intentionally generate a memory trap. InnoDB: Submit a detailed bug report to http://bugs.mysql.com. InnoDB: If you get repeated assertion […]

MySQL复制和更新优先级

我有一个主服务器,我想修改操作,如更新为LOW_PRIORITY,以便他们不阻止SELECT等。这对于最终用户可见的行为更好。 我有一个从服务器,在那里我做批处理,我不关心优先SELECTs通过更新。 实际上,由于从服务器使用UPDATE并将其作为LOW_PRIORITY执行,并且复制是单线程的,所以批处理会延迟复制。 理想情况下,在这个从属服务器上,我会告诉MySQL优先SELECTs上面的UPDATE,这样两个服务器保持同步,代价是稍微延迟了我的批处理操作。

如何创build一个Capistrano任务来将生产备份导入本地开发数据库?

我正在尝试使用类似于heroku db:pullfunction的Capistrano任务,如果您熟悉的话。 我有一个远程服务器。 在该服务器上,我在/path/db_backups/文件夹中有一堆备份。 在那个文件夹中,每天都有一个数据库备份。 我想要做的就是 在客户端机器上的/ path / to / backups_dir / 解开它在本地。 导入到本地的MySQL数据库。 任何人都知道处理这个好方法? 有没有我不知道的gem? 有你喜欢的脚本吗?