Articles of mysql

生产服务器有16GB的RAM和一个32位的操作系统。 replace为64位操作系统?

我有一台带有16GB RAM的生产服务器,配有32位CentOS安装。 托pipe在这台服务器上的网站每天的stream量越来越大,这导致了一些MySQL性能问题。 我运行mysqltuner.pl并得到以下消息: [!!] Switch to 64-bit OS – MySQL cannot currently use all of your RAM *** MySQL's maximum memory usage is dangerously high *** *** Add RAM before increasing MySQL buffer variables *** 我可以用32位操作系统来存活吗?还是我需要安装64位版本?

PHP / mySQL:如何debugging“太多连接”的错误?

我现在正在我的客户端的专用服务器上使用PHP网站,我周期性地收到了too many connections错误,但有5个用户正在浏览此页面。 在phpMyAdmin我可以看到max connectionsvariables设置为400 。 在我们公司的本地MySQL服务器上,我们将max connections设置为200 ,其他配对在同一时间使用此服务器。 我听说在他们的服务器上有一些其他的网站正在使用同一个大的交易MySQL。 这是我的问题: 如何debugging这个问题? 我可以查看一下在过去10分钟内执行的SQL查询列表,以检查它是我们的问题还是他们的?

主 – 主复制的恢复策略

我已经实现了一个基于主 – 主复制的高可用性解决scheme。 在前端部分有一个机制,保证在给定的时间只有一个数据库被读/写(即我们只使用HA进行复制)。 我已经确认复制按预期工作,但我想知道故障情况和恢复。 特别是,我担心当一个主服务器在一个不可恢复的状态下失败,并且需要从另一个主服务器重新创build时,会发生什么情况: 由于另一个主服务器是活的并且最有可能使用,所以我无法将其locking并从mysqldump创build转储(我们的数据库非常大,而mysqldump在几个月的使用后可能需要几个小时)。 即使假设我有一个转储,关键是SHOW MASTER STATUS所显示的binlog位置对应于数据库被locking后所做的转储。 第一个问题的简单解决scheme是使用第三个数据库作为备份,从中我可以执行mysqldump 。 但是,如何确保重新创build的主服务器能够以一致的方式从运行的主服务器启动复制?

Mysql奴隶陷入“系统locking”

我的MySQL从属在Slave_SQL_Running_State: System lock花费了很多时间Slave_SQL_Running_State: System lock 。 我可以看到系统当前I / O写入绑定,并且它正在处理日志,尽pipe缓慢。 当处于这种状态时, Show processlist不显示“等待主站发送事件”和“系统locking”以外的任何内容。 我的所有表(系统表除外)都是InnoDB,并且禁用了外部locking。 奴隶在这个状态下做什么? 以下是一些要求的信息: 首先,这是Amazon EC2实例上的MySQL 5.6社区,EBS上的所有存储。 mysql> show processlist; +—-+————-+———–+—————+———+——–+———————————-+——————+ | Id | User | Host | db | Command | Time | State | Info | +—-+————-+———–+—————+———+——–+———————————-+——————+ | 1 | system user | | NULL | Connect | 26115 | Waiting for […]

添加CPU使MySQL 5.5(Debian)的性能下降

我正要在OpenVZ容器中设置一个数据库服务器(MySQL),我想知道应该为它分配多less个CPU。 我决定以此为基准。 我比较了两个OS / MySQL发行版,并testing了它们如何使用1,2,3和4个CPU来执行。 第一个软件configuration是: CentOS版本6.5(最终版) mysql Ver 14.14 Distrib 5.1.71,用于使用readline 5.1的redhat-linux-gnu(x86_64) 第二: Debian GNU / Linux 7 \ n \ l mysql Ver 14.14 Distrib 5.5.31,用于使用readline 6.2的debian-linux-gnu(x86_64) 两者都在同一个内核上运行 – 2.6.32-openvz-042stab083.2-amd64#1 SMP Fri Nov 8 17:59:25 MSK 2013 x86_64 GNU / Linux。 所有的软件都是从软件包中安装的,并且不需要任何自定义configuration就可以直接使用。 硬件:6GB RAM,1-4个CPU 3.5 GHz。 对于基准testing,我使用sysbench和以下情况: sysbench –test=oltp –oltp-table-size=1000000 –mysql-db=test –mysql-user=root –db-driver=mysql […]

如何从单一服务器设置发展

我正在寻找如何发展我们的服务器设置的资源。 我们目前在英国有一个Rackspace专用服务器,规格如下: HPDL385_G2_PrevGen 惠普单核双核皓龙2214(2.2Ghz) 4GB内存 RAID 1中有两个10,000个SCSI驱动器 我们的stream量每月高达550,000 UVs。 该网站运行一个PHP和MySQL的设置。 数据库得到一个绝对的锤击,我们有许多复杂的查询joinmultilpe表。 我们正在使用APC进行PHPcaching。 我已经到了我已经完成尽可能多的DB和查询优化的阶段,并且想知道下一步应该是什么…… 我已经看了memcache,但我有一个印象,他需要大量的内存,理想情况下专用的盒子…. 下一步有两个盒子。 一个用于数据库,一个用于Apache? 还是有一个我忽略了一步。 我们的负荷通常在2分左右,但现在是20点! 来自Munin的一些图表:

不安全的MySQL'root'@'localhost'帐户远程访问?

一点背景:我们刚才有我们的PBX系统被黑客入侵。 服务器本身似乎是安全的(没有logging未经授权的控制台访问 – SSH等),但不知何故,黑客设法注入一个新的pipe理用户到PBX软件(FreePBX,由MySQL支持)。 Apache日志意味着黑客设法添加用户而不使用Web界面(或Web界面中的任何漏洞)。 现在,我已经发现MySQL运行没有根密码(!!),并公开绑定到外部IP地址(显然,我现在已经locking了这个)。 但是,MySQL中唯一的根级用户是'root'@'localhost'和'root'@'127.0.0.1' ,这两个用户只能在本地访问。 所以,我的问题是这样的: 有没有欺骗连接到MySQL的方法,以便它允许从远程IP地址连接到'root'@'localhost'用户,而不在本地运行任何其他利用? 作为参考,该框是运行Mysql 5.0.95的Centos 5(Linux 2.6.10)。

如何禁用MySQL InnoDB表中的键?

是否可以禁用InnoDB表中的键? 如果是的话,怎么样? 如果没有,为什么?

在MySQL / InnoDB中设置事务的时间限制

这是从这个相关的问题出发,我想知道如何强迫两个事务顺序发生在一个平凡的情况下(其中两个都只在一行上运行)。 我得到了一个答案 – 使用SELECT … FOR UPDATE作为两个事务的第一行 – 但这会导致一个问题: 如果第一个事务从不提交或回退,那么第二个事务将被无限期地阻塞。 innodb_lock_wait_timeoutvariables设置客户端尝试进行第二个事务的秒数,然后告诉“对不起,再试一次”……但据我所知,他们会再次尝试,直到下一次服务器重新启动。 所以: 如果一个交易永远持续下去,肯定有办法强制ROLLBACK ? 我必须诉诸使用守护进程来杀死这样的事务,如果是这样的话,这样的守护进程是什么样的? 如果连接被wait_timeout或interactive_timeout中间事务wait_timeout ,事务是否回滚? 有没有办法从控制台testing这个? 澄清 : innodb_lock_wait_timeout设置事务在放弃之前将等待锁释放的秒数; 我想要的是一种迫使锁被释放的方式。 更新1 :下面是一个简单的例子,它演示了为什么innodb_lock_wait_timeout不足以确保第二个事务不被第一个事务阻塞: START TRANSACTION; SELECT SLEEP(55); COMMIT; 使用innodb_lock_wait_timeout = 50的默认设置,此事务在55秒后完成而没有错误。 如果在SLEEP线之前添加UPDATE ,则从另一个客户端启动第二个事务,该客户端尝试SELECT … FOR UPDATE同一行,这是第二个事务超时,而不是睡着的那个事务。 我正在寻找的是一种强制结束这个交易的安宁睡眠的方法。 更新2 :为了响应hobodave关于上述示例的真实性的问题,以下是一个备用scheme:DBA连接到活动的服务器并运行 START TRANSACTION SELECT … FOR UPDATE 第二行locking应用程序频繁写入的行。 然后DBA被打断,走开,忘记结束交易。 应用程序停止运行,直到行被解锁。 我想尽量减less由于这个错误导致应用程序被卡住的时间。

如何创build远程Amazon RDS MySQL数据库的本地备份?

如何创build远程Amazon RDS MySQL数据库的本地备份? 我需要知道的是,如何在任何MySQL服务器上(相同版本的课程),在任何地方,使用MySQL数据库(不是远程Amazon快照)完整地完整备份本地数据库。 注意:我知道如何通过MySQL从平面文件导入数据。 这是我如何连接: mysql -h mydb.xxxxx.us-east-1.rds.amazonaws.com -u myuser -P 3306 -p 以下是我如何加载单个数据库表: mysql> LOAD DATA LOCAL INFILE 'C:/Temp/t1.tab' INTO TABLE t1 LINES TERMINATED BY '\r\n';