InnoDB 将所有表存储在一个大文件中ibdata1。
删除大表后,无论表有多大,文件都会保持其大小。如何缩小该文件而不必转储并重新导入整个数据库(总共有数百 GB)?
我认为原因是因为您仍然可以回滚下降。就我而言,我不需要。
我们有一个应用程序,其中只有一个表将增长到数百万行,而其余的将略低于一百万行。那么我们应该使用 innodb_file_per_table 还是保留一个 .ibd 的建议是什么?我读过一些文章说不要使用它,因为在执行连接时您需要更多磁盘访问权限?为了报告生成目的,我们将在此表和其他表之间进行连接。
我想了解这些 ibdata 文件,因为它们在崩溃恢复过程中起着至关重要的作用。我无法通过网络找到合适的资源。
所以我有一个在复制流上设置的测试数据库服务器。在名称上出现了一个优化,它迅速填满了 slaves 数据目录上的空间。Mysql 尽职尽责地等待更多空间。
这个 datadir 是一个文件系统,只用作 mysql 的 datadir,所以没有其他东西可以释放。
我有一个 4 g innodb 测试表,它不是复制流的一部分,所以我想我会尝试一些东西来看看它是否有效,作为一个测试环境,如果事情出现严重错误,我并不太担心。
这是我采取的步骤
.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)
到目前为止,我可以从所有其他表中读取数据,并且复制开始备份,没有任何抱怨。
我能做些什么来从这一点上恢复过来吗?如果需要,我可以从头开始重建它,但很好奇其他人对这次冒险的总体看法。我采取的一系列步骤是否有任何结果会导致更完美的结果?
如果这不是一个测试服务器,我不能只是“实时运行”看看会发生什么?如果我不得不喜欢,有什么最好的方法可以暂时释放生产从站上的空间?
您好,我正在运行最新版本的 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) 我有一个奇怪的问题,我似乎无法解决。我更像是一个网络程序员而不是服务器/数据库管理员,所以我希望这里有人可以帮助我。
情况
我正在开发一个处理大量update,insert和delete请求的系统。因此,我选择 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) 我的数据库速度变慢了。phpMyAdmin 中的分析器建议我OPTIMIZE TABLE在我的表上运行。
但在这样做之前,我(当然)想知道表中的数据是否会发生任何事情,或者此操作是否完全无害。
使用时我应该考虑利弊OPTIMIZE TABLE吗?索引和主键会保持不变吗?数据库中是否有优化后会变慢的区域?
我正在将 ~52GB 转储恢复到 MySQL 数据库。ibdata1 文件已经超过转储文件的大小,恢复仍然不完整。如果知道 MySQL 转储文件的大小,有没有办法估计 ibdata1 文件的最终大小?
MySQL 5.1.4x (Windows) | 数据库
我最近从 mySQL 数据库(几十万行)中清除了数据,我打算使用
OPTIMIZE TABLE LOGTABLEFOO1,LOGTABLEFOO2,LOGTABLEFOO3;
Run Code Online (Sandbox Code Playgroud)
为了减少文件系统中的空白空间占用的数据空间。
我担心的是,一旦我开始执行此命令,我将不知道要花多长时间或在此过程中处于什么位置。无论如何我可以确定这些信息吗?据我所知,没有进度指示器。
我在 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 天前,但没有那么严重,我什至没有注意到它,因为它没有填满存储空间。
我不是数据库专家,这是我的一个业余爱好项目,所以我正在努力弄清楚如何开始解决这个问题!
我开始查看@RolandoMySQLDBA 提供的答案,我意识到我遗漏了一些非常有用的细节。
写入数据库的唯一系统是两个 EC2 实例,它们每 30 分钟写入一次,这与图中看到的存储减少相对应。
这两个系统都从网络上收集相同的数据,然后它们都尝试在半小时内将收集到的数据同时写入我的数据库。我使用两个数据收集系统只是为了冗余,并且我对我的写入例程进行了编码,以便每个系统将尝试使用 INSERT IGNORE INTO 写入其所有数据,因此无论哪个系统首先写入该特定数据,第二个系统的插入尝试是干脆忽略了。
在每 30 分钟发生一次的写入期间,除了一个表外,数据库中的数千个表中的每一个都插入了一行。该表中没有插入任何内容,但其(大约)2000 行中的每一行都会更新,一次一个。
在添加了大约 2.5GB 的数据后,我从一个点恢复了数据库的实例(8/16 上的事件,如第一个屏幕截图所示),这样我就可以运行命令而不会遇到“存储已满”错误。
在@RolandoMySQLDBA 的帮助下,我能够看到使用了多少 InnoDB 和 MyISAM 数据(如何监视 MySQL …
innodb ×10
mysql ×10
disk-space ×2
performance ×2
amazon-rds ×1
logs ×1
memory ×1
myisam ×1
mysql-5.1 ×1
mysql-5.6 ×1
optimization ×1
restore ×1
windows ×1