此服务器是一台运行 CentOS 6.0、MySQL 5.5.21 的虚拟机
有一个名为devSystem. 里面有 InnoDB 表。运行以下命令会导致错误ERROR 2006 (HY000): MySQL server has gone away。我以前没有广泛使用 InnoDB,所以还没有遇到过这种类型的问题。我只能假设它特定于 InnoDB,因为它没有使用 MyISAM 出现。无论如何,我尝试运行的命令如下。
mysql -u root -p
mysql> USE `devSystem`;
-- database changed
mysql> SHOW TABLES;
Run Code Online (Sandbox Code Playgroud)
MySQL 客户端返回的完整错误
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 1
Current database: devSystem
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
ERROR 2002 (HY000): Can't connect to local MySQL server …Run Code Online (Sandbox Code Playgroud) 我有两个经常更新的表,一个是直接的UPDATE ..,另一个是直接的,INSERT .. ON DUPLICATE KEY UPDATE ...通常这些查询是即时的,但有时需要 0.1 秒到 1+ 秒,然后又是即时的几秒钟。
另一件事要注意,我有两个 MySQL 服务器(在同一个专用网络中)。所有选择查询(除了一两个)都在从站上执行,这里看到的插入当然在主站上。当数据库处于大负载下时,速度减慢最为明显。最后,我正在使用 xtradb(看看它是否有帮助),但在纯 MySQL 5.5 InnoDB 上发生了相同的行为。
-- CustomData
+-----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| Server | int(11) | NO | PRI | NULL | |
| Plugin | int(11) | NO | PRI | NULL | |
| ColumnID | int(11) | NO | PRI | NULL | |
| DataPoint | …Run Code Online (Sandbox Code Playgroud) 我面临这个问题:https : //serverfault.com/questions/104618/out-of-resources-for-mysqldump
问题
我正在将 ~52GB 转储恢复到 MySQL 数据库。ibdata1 文件已经超过转储文件的大小,恢复仍然不完整。如果知道 MySQL 转储文件的大小,有没有办法估计 ibdata1 文件的最终大小?
我从多个来源看到和听到,将数据库日志和数据文件写入不同的磁盘可能是一个好主意,在性能方面。
推荐的方法是什么(例如在 EC2 上)?
我想使用脚本来监控 MySQL 数据库的复制状态,就像在这个 bash 脚本中一样:https : //gist.github.com/wesdeboer/1791632
我想创建一个仅用于查询复制状态的用户。所以基本上这个用户只需要运行以下命令:
"SHOW SLAVE STATUS \G"
Run Code Online (Sandbox Code Playgroud)
我需要授予用户的最低权限集是什么?
(这甚至是可以GRANT编辑的东西吗?
有时,我会在我的 PHP 错误日志中发现很多这些错误:
MYSQL.1213: Deadlock found when trying to get lock; try restarting transactionSQL
Run Code Online (Sandbox Code Playgroud)
问题持续约 2 或 3 分钟。感谢stackoverflow,原因很容易找到:
------------------------
LATEST DETECTED DEADLOCK
------------------------
130320 15:53:37
*** (1) TRANSACTION:
TRANSACTION 0 83395751, ACTIVE 35 sec, process no 26405, OS thread id 140507872417536 starting index read
mysql tables in use 3, locked 3
LOCK WAIT 3 lock struct(s), heap size 1216, 2 row lock(s)
MySQL thread id 1163191, query id 199629038 localhost sosci Updating
UPDATE `database`.`table` SET `invalidate`='2013-03-21 03:53:02' …Run Code Online (Sandbox Code Playgroud) 我正在尝试比较两个 MySQL 转储文件。一个是通过全新安装的 Web 应用程序制作的,另一个是来自同一 Web 应用程序的转储,该应用程序已从先前版本升级到与全新安装相同的版本号。
基本上我想确保升级脚本正常工作,并且所有正确的列和约束都在升级版本中,就像它们在全新安装中一样。我认为一个简单的 diff/sdiff 就足够了,但我遇到了问题:列顺序。
全新安装和升级之间的列顺序不同,导致许多误报“差异”。在查看输出时很容易看出同一列只是在不同的位置,但是对于数百个表,检查和识别这些误报需要很长时间。
是否有更好的方法来比较这两个将忽略列顺序的转储(或强制转储具有按字母顺序或类似顺序排列的列的方法)或一种更好的完全不同的方法。无可否认,我对 MySQL 还是很陌生,并且正在学习,所以任何帮助都将不胜感激。
谢谢。
我们的服务器有磁盘空间问题。因此,复制的 IO 线程无法启动。
以下是mysql错误日志中的错误:
[注意] Slave I/O 线程:连接到 master 'user@host:3307',复制开始于 log 'mysql-bin.000030' at position 196820914
[错误] 从 I/O:从网络读取时复制事件校验和验证失败。错误代码:1743
[错误] 从站 I/O:中继日志写入失败:无法将来自主站的事件排队,错误代码:1595
我该如何解决问题?
执行WITH ROLLUP多字段分组时,MySQL 会为每个组返回一个汇总行,以及总体摘要:
CREATE TABLE test (name VARCHAR(50), number TINYINT);
INSERT INTO test VALUES
('foo', 1), ('foo', 1), ('foo', 2), ('foo', 3), ('foo', 3),
('bar', 1), ('bar', 2), ('bar', 2), ('bar', 2), ('bar', 3),
('baz', 1), ('baz', 2), ('bar', 2);
SELECT name, number, COUNT(1) FROM test GROUP BY name, number WITH ROLLUP;
+------+--------+----------+
| name | number | count(1) |
+------+--------+----------+
| bar | 1 | 1 |
| bar | 2 | 3 |
| bar | …Run Code Online (Sandbox Code Playgroud) mysql ×9
innodb ×4
performance ×3
replication ×3
backup ×2
mysqldump ×2
amazon-ec2 ×1
deadlock ×1
group-by ×1
locking ×1
mongodb ×1
myisam ×1
mysql-5.5 ×1
permissions ×1
restore ×1
schema ×1