相关疑难解决方法(0)

如何在不转储所有数据库的情况下缩小 innodb 文件 ibdata1?

InnoDB 将所有表存储在一个大文件中ibdata1

删除大表后,无论表有多大,文件都会保持其大小。如何缩小该文件而不必转储并重新导入整个数据库(总共有数百 GB)?

我认为原因是因为您仍然可以回滚下降。就我而言,我不需要。

mysql innodb memory disk-space

24
推荐指数
2
解决办法
5万
查看次数

建议使用 innodb_file_per_table 吗?

我们有一个应用程序,其中只有一个表将增长到数百万行,而其余的将略低于一百万行。那么我们应该使用 innodb_file_per_table 还是保留一个 .ibd 的建议是什么?我读过一些文章说不要使用它,因为在执行连接时您需要更多磁盘访问权限?为了报告生成目的,我们将在此表和其他表之间进行连接。

mysql innodb

19
推荐指数
2
解决办法
2万
查看次数

mysql中的iblog文件究竟是什么

我想了解这些 ibdata 文件,因为它们在崩溃恢复过程中起着至关重要的作用。我无法通过网络找到合适的资源。

mysql innodb logs

18
推荐指数
1
解决办法
4万
查看次数

如何恢复文件被移动的 InnoDB 表

所以我有一个在复制流上设置的测试数据库服务器。在名称上出现了一个优化,它迅速填满了 slaves 数据目录上的空间。Mysql 尽职尽责地等待更多空间。

这个 datadir 是一个文件系统,只用作 mysql 的 datadir,所以没有其他东西可以释放。

我有一个 4 g innodb 测试表,它不是复制流的一部分,所以我想我会尝试一些东西来看看它是否有效,作为一个测试环境,如果事情出现严重错误,我并不太担心。

这是我采取的步骤

  1. 冲洗了我正要移动的桌子
  2. 在它上面放置了一个读锁(即使没有写入它并且它不在复制流中)
  3. 将 .frm 和 .ibd 复制到带有一些空闲空间的文件系统
  4. 解锁了桌子
  5. 截断该表 - 这为优化完成释放了足够的空间,复制开始再次开始。
  6. 停止从属/关闭 mysql
  7. 将文件从 tmp 复制回数据目录
  8. 重启mysql

.err 日志中没有显示任何内容,看起来不错。我连接并使用 mydb;并查看我在展示表中弄乱的表。但是,如果我尝试

select * from testtable limit 10;
Run Code Online (Sandbox Code Playgroud)

我收到错误

ERROR 1146 (42S02): Table 'mydb.testtable' doesn't exist
Run Code Online (Sandbox Code Playgroud)

到目前为止,我可以从所有其他表中读取数据,并且复制开始备份,没有任何抱怨。

我能做些什么来从这一点上恢复过来吗?如果需要,我可以从头开始重建它,但很好奇其他人对这次冒险的总体看法。我采取的一系列步骤是否有任何结果会导致更​​完美的结果?

如果这不是一个测试服务器,我不能只是“实时运行”看看会发生什么?如果我不得不喜欢,有什么最好的方法可以暂时释放生产从站上的空间?

mysql innodb disk-space

15
推荐指数
1
解决办法
8万
查看次数

InnoDB INSERT 性能的能力

您好,我正在运行最新版本的 Percona Server。

服务器版本:5.5.24-55 Percona Server (GPL),26.0 版

我有一个10个cpu的盒子有这些特点。

processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 16
model           : 9
model name      : AMD Opteron(tm) Processor 6128
stepping        : 1
microcode       : 0x10000d9
cpu MHz         : 800.000
cache size      : 512 KB
Run Code Online (Sandbox Code Playgroud)

它具有 SSD 和 64GB 的 RAM。Innodb 大约为 10GB,因此 innodb_buffer_pool_size 设置为 10GB。

我有一张如下表:

create table TODAY
( symbol_id       integer not null
, openp           decimal(10,4)
, high            decimal(10,4)
, low             decimal(10,4)
, last            decimal(10,4) not null
, volume …
Run Code Online (Sandbox Code Playgroud)

mysql innodb performance percona-server

11
推荐指数
1
解决办法
9113
查看次数

INNODB 性能漏洞在哪里?

我有一个奇怪的问题,我似乎无法解决。我更像是一个网络程序员而不是服务器/数据库管理员,所以我希望这里有人可以帮助我。

情况

我正在开发一个处理大量update,insertdelete请求的系统。因此,我选择 INNODB 作为我的存储引擎,因为它具有行锁定功能。我们每 10 分钟更新 60,000 条记录,使用 Gearman 在不同服务器上并行处理我们的工作。代码是用 PHP 编写的,我们使用的是 Zend Framework。

问题

SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction
Run Code Online (Sandbox Code Playgroud)

我们几乎每 30 分钟就会收到一次上述错误,来自我们的一名 Gearman 工人。

mysql_report

MySQL 5.1.63-0+squeeze1  uptime 15 9:52:12      Tue Sep 11 21:25:23 2012

__ Key _________________________________________________________________
Buffer used    55.00k of  16.00M  %Used:   0.34
  Current       2.92M            %Usage:  18.24
Write hit      99.95%
Read hit      100.00%

__ Questions ___________________________________________________________
Total         122.05M    91.7/s
  DMS         106.63M    80.1/s  %Total: …
Run Code Online (Sandbox Code Playgroud)

mysql innodb performance

11
推荐指数
1
解决办法
4131
查看次数

OPTIMIZE TABLE 对我的数据有什么影响吗?

我的数据库速度变慢了。phpMyAdmin 中的分析器建议我OPTIMIZE TABLE在我的表上运行。

但在这样做之前,我(当然)想知道表中的数据是否会发生任何事情,或者此操作是否完全无害。

使用时我应该考虑利弊OPTIMIZE TABLE吗?索引和主键会保持不变吗?数据库中是否有优化后会变慢的区域?

mysql innodb myisam optimization

9
推荐指数
1
解决办法
2万
查看次数

MySQL 数据库相对于转储文件有多大?

我正在将 ~52GB 转储恢复到 MySQL 数据库。ibdata1 文件已经超过转储文件的大小,恢复仍然不完整。如果知道 MySQL 转储文件的大小,有没有办法估计 ibdata1 文件的最终大小?

mysql innodb restore

7
推荐指数
1
解决办法
5723
查看次数

OPTIMIZE TABLE 进度是否有进度指示器?

MySQL 5.1.4x (Windows) | 数据库

我最近从 mySQL 数据库(几十万行)中清除了数据,我打算使用

OPTIMIZE TABLE LOGTABLEFOO1,LOGTABLEFOO2,LOGTABLEFOO3;
Run Code Online (Sandbox Code Playgroud)

为了减少文件系统中的空白空间占用的数据空间。

我担心的是,一旦我开始执行此命令,我将不知道要花多长时间或在此过程中处于什么位置。无论如何我可以确定这些信息吗?据我所知,没有进度指示器。

mysql innodb windows mysql-5.1

6
推荐指数
1
解决办法
2万
查看次数

什么会导致 RDS MySQL 数据库可用存储空间快速下降?

我在 Amazon RDS 上的 MySQL 数据库最近如何在大约 1.5 小时内从 10.5 GB 免费变为“存储已满”状态?

这是一个运行在 db.t2.micro 实例上的 15GB MySQL 5.6.27 数据库。通常每天只有几百 KB 被添加到它。

大约一天前,免费存储空间在大约 1.5 小时内从 10.5 GB 变为基本上 0 GB。写入 IOPS 图表仅显示在那段时间内我的常规低流量流量,因此显然数据必须是在服务器端生成的。

一个可能相关的说明是我的数据库有大约 7,000 个表,并且将 innodb_file_per_table 设置为 1。

类似的事件显然发生在 8 天前,但没有那么严重,我什至没有注意到它,因为它没有填满存储空间。

屏幕截图显示了 8 天前的事件以及一天前的存储填充事件 在此处输入图片说明

屏幕截图显示了存储填充事件的详细视图 在此处输入图片说明

我不是数据库专家,这是我的一个业余爱好项目,所以我正在努力弄清楚如何开始解决这个问题!

编辑 1

我开始查看@RolandoMySQLDBA 提供的答案,我意识到我遗漏了一些非常有用的细节。

写入数据库的唯一系统是两个 EC2 实例,它们每 30 分钟写入一次,这与图中看到的存储减少相对应。

这两个系统都从网络上收集相同的数据,然后它们都尝试在半小时内将收集到的数据同时写入我的数据库。我使用两个数据收集系统只是为了冗余,并且我对我的写入例程进行了编码,以便每个系统将尝试使用 INSERT IGNORE INTO 写入其所有数据,因此无论哪个系统首先写入该特定数据,第二个系统的插入尝试是干脆忽略了。

在每 30 分钟发生一次的写入期间,除了一个表外,数据库中的数千个表中的每一个都插入了一行。该表中没有插入任何内容,但其(大约)2000 行中的每一行都会更新,一次一个。

编辑 2

在添加了大约 2.5GB 的数据后,我从一个点恢复了数据库的实例(8/16 上的事件,如第一个屏幕截图所示),这样我就可以运行命令而不会遇到“存储已满”错误。

在@RolandoMySQLDBA 的帮助下,我能够看到使用了多少 InnoDB 和 MyISAM 数据(如何监视 MySQL …

mysql innodb mysql-5.6 amazon-rds

6
推荐指数
1
解决办法
6025
查看次数