Articles of mysql

Percona的99%磁盘IO峰值

所以我们有一个服务器,在磁盘I / O上看似随机高峰,随机时间上升到99.x%,而且没有明显的原因,一段时间后保持高位,然后又回落。 这并不是一个问题,但最近磁盘I / O一直保持在99%的长时间,在某些情况下长达16小时。 服务器是专用服务器,具有4个CPU核心和4 GB的RAM。 它正在运行Ubuntu服务器14.04.2,运行percona-server 5.6,没有别的主要。 正在监视停机时间,我们有一个屏幕永久显示我们处理的服务器的CPU / RAM /磁盘I / O。 服务器也经常修补和维护。 这个服务器是复制链中的第三个,并作为故障转移机器。 MySQL数据stream如下。 主 – >主/从 – >问题服务器 所有3台机器具有相同的规格,并托pipe在同一家公司。 问题服务器位于第一个和第二个不同的数据中心。 'iotop'工具告诉我们磁盘I / O是由'jbd2 / sda7-8'进程造成的。 据我们所知,这将处理文件系统日志,并将东西刷新到磁盘。 我们的'sda7'分区是'/ var',我们的sda8分区是/ home。 没有什么应该定期读/写/回家。 停止mysql服务会导致磁盘I / O立即下降到正常水平,所以我们相当肯定这是导致问题的percona,并且这将与它作为/ var分区相匹配,因为这是我们的MySQL数据目录驻留(/ var / lib / mysql)。 我们使用NewRelic监视所有的服务器,当磁盘I / O出现峰值时,我们看不到任何可能导致它的事情。 平均负荷为-2。 CPU使用率徘徊在〜25%,NewRelic认为是由“IO等待”造成的,而不是一个特定的进程。 我们的mysqlconfiguration文件是通过Perconaconfiguration向导和客户端应用程序所需的一些设置的组合生成的,但没有什么特别的感觉。 MySQLconfiguration – http://pastebin.com/5iev4eNa 我们尝试了以下事情来尝试解决问题: […]

确保InnoDB数据库的ACID属性

必须采取哪些步骤来确保默认configuration的InnoDB服务器真正符合ACID标准? InnoDBconfiguration页面提到硬件本身必须configuration为实现fsync调用,即禁用任何写回caching。 这个页面提到了一些其他的问题,但是可能会混淆二进制日志和InnoDB日志,并且可能会过时地关于MySQL 5.x的默认设置。 在阅读二进制日志文档页面时,似乎一般不需要“sync_binlog = 1”的设置,只有ACID属性需要与时间点恢复和复制。 那么,禁用写回磁盘caching是否足够,还是有其他设置必须调整?

MySQL复制:再次让主设备与从设备同步

我有两台电脑在同一个networking上,在主从复制设置。 简单地testing故障转移,我直接插入一些数据到从数据库。 所以现在从属数据库包含比主数据库更多的信息。 现在我想让主机再次与从机同步,以回到真正的主从设置。 我该怎么做?

如何在MySQL 5.1上启用log_slow_queries?

如何在MySQL 5.1上启用log_slow_queries? 我正在运行redhat。

如何构buildAWS上的系统进行扩展(使用MySQL后端)

我正在尝试了解如何构buildAmazon Web Services应用程序。 据我所知,使用像AWS这样的东西的最重要的一点就是使得最终的扩展更容易,所以我正试着去了解如何做到这一点。 我有一个实例,跑EBS(基于EBS的实例,而不是一个普通的实例)。 我的应用程序(一个Django应用程序)使用MySQL作为后端。 所以问题是,我应该在哪里安装MySQL? 我是否将其安装在同一个实例上? 在这种情况下,据我所知,我不能简单地从该图像创build更多的服务器实例。 或者我应该简单地将另一台服务器作为数据库服务器来运行,然后运行? 谢谢你的帮助!

MySQL存储过程参数是NULL

我很难过,希望这里有人会有一个快速和简单的答案。 我做了一个全新的MySQL 5.5安装,并试图将parameter passing给存储过程。 参数值不被存储过程读取。 MySQL不会抛出一个错误,并用null参数处理代码。 这里是代码: DELIMITER $$ CREATE DEFINER=`root`@`%` PROCEDURE `testing`(IN parameter INTEGER) BEGIN UPDATE table_name SET valueToChange = 'Test' WHERE mainID = @parameter; END 这里是我用来调用它的查询: USE database_name; CALL testing(72); 谁能帮忙?

MySQL Cluster适用于小型,低容量的多宿主系统吗?

我想多家一个专有的基于Web的应用程序,为一个相对较小的用户群,数据库大小适中。 可伸缩性不像极高的可用性那么重要。 该系统具有非常基本的架构:运行在单个Linux VPS上的PHP攻击标准MySQL服务器。 我正在考虑在不同地理位置的数据中心中使用多个VPS,这样如果用户连接到一个服务器位置时遇到问题,他们可以尝试另一个位置(我有关于如何半自动化故障转移和可能地理位置的单独想法,但这是另一个问题)。 PHP应用程序代码和其他文件将被rsynced; 然而,我还没有解决如何同步数据库…这是合理的使用MySQL群集呢? 如果一个节点发生故障,其他节点必须继续工作。 当节点恢复时,它应该自动恢复同步。 考虑到数据中心之间将存在WANtypes的延迟,写入速度不能依赖于群集内连接。 数据一致性是可取的,但不是首要的优先事项。 系统的简单性很重要 – 我不能花费下一个月的时间来计算数据库的细微差别。 如果MySQL Cluster不适合这个,那么还有什么其他的select可以考虑?

获取所有select查询的平均执行时间

tl; dr :如何获得正在运行的MySQL服务器的select语句的平均查询执行时间? 在他们的这一刻,我们有几个数据库服务器,一些从服务器被视为只读服务器。 为了有希望提高性能,我们用分区表(包含经常访问的新数据以及所决定的权力应保留在该表中的极端数量的历史数据)build立testing。 现在,我们已经基于date时间列进行了分区,在一些手动testing中,一些查询速度更快,一些查询速度更慢(显然,好的部分明确地限制了该列的结果,有些查询显然不希望)。 一切正常,似乎一切正常,在分区服务器上,然后在非分区服务器上稍微高一点的平均慢查询计数。 这是可以预料的,但是通常情况下,这些查询的优先级低于那些需要最新数据的查询。 然而客观地比较两个奴隶的performance是相当困难的。 大多数加速的查询不在慢日志中,服务器上的平均负载大致相同。 理想情况下,我想要在2个从站上的所有select查询的平均执行时间,所以我可以比较分配后是否有整体加速或降级。 在mysqlreport或者mysqladmin ext没有什么东西可以作为一个值来使用,甚至一般的查询日志都没有包含这个值。 我曾经考虑过将long_query_time为0一段时间,但是这会真的减慢服务器的速度,所以我打开其他选项,如果有的话?

确保守护进程是安全的

所以我想知道,我们应该采取哪些步骤来确保PHP守护进程是安全的? 我读到的一个事情是分配守护进程作为一个有限priveleges用户运行? 但是我们怎么能在UNIX上做到这一点? 我猜测使用useradd函数,但我们如何确保用户ADDED具有有限的权限? 当涉及到PHP守护进程时,我们还应该采取哪些其他步骤来提高安全性? 编辑:我使用Centos 5.5(Linux)

从奴隶恢复崩溃的MySQL主服务器

我们正在使用asynchronous复制构build一个简单的主/从MySQLconfiguration,在服务器和基于innoDB的表上都使用MySQL企业版5.5.17。 在主服务器崩溃的情况下,我们希望向用户提供使用从服务器的最新数据库内容恢复主服务器的可能性。 在主服务器上,数据库和二进制日志存储在不同的磁盘设备上,以提高可靠性。 什么是最好的方法来做到这一点? 我试图概述一个这样的程序,但我不确定这是否正确: 确保从站的中继日志中包含的所有语句都已执行。 理想情况下,我可以执行一个STOP SLAVE IO_THREAD,即使不应该有必要,因为主设备已经崩溃,没有其他语句来到从设备,并等待其余的继电器事件完成。 closures从站上的数据库并将文件复制到数据库文件到主站。 从relay-log.info和slave上的master.info,我应该能够找出从设备正在从哪个位置读取最新的二进制日志。 在主服务器崩溃到日志中最后一条语句之前,我可以从主服务器执行的最后一条语句重播主服务器上的二进制日志。 我应该重置从服务器并在主服务器崩溃之前重新启动从服务器执行的最后一个语句的复制。 这个可以吗?