MySQL 表数据归档

Posted

技术标签:

【中文标题】MySQL 表数据归档【英文标题】:MySQL Table data ARCHIVING 【发布时间】:2013-12-17 00:08:29 【问题描述】:

我在 java 桌面应用程序中有一个管理信息系统,其中 mysql 作为我的数据库。我想存档我所有的旧数据。示例我有我的 Event_Table 并且该表中记录的事件已经是 1 年前,我希望它以一种无法在我的系统和数据库中搜索的方式存档,但我只会将它保存在我的计算机中的某个位置(mysqldump ) 并在需要时恢复它。你能帮我么?我正在我的 java 程序中执行 sql 语句代码来处理我的 MySQL 数据。谢谢

【问题讨论】:

【参考方案1】:

你可以考虑:

    使用专为此目的设计的ARCHIVE存储引擎将归档记录存储在表中

    使用 MySQL event 或 cron 作业运行存储过程的 sql 脚本,以根据您的偏好(每天、每周、每月等)将数据从事实表传输到存档表)

【讨论】:

【参考方案2】:

如果你有 MySQL-Workbench,你可以从那里导出数据,这要容易得多。

打开 MySQL Workbench > 主页 > 管理导入/导出(右下角)/选择所需数据库 > 高级导出选项选项卡 > 完成插入 [选中] > 开始导出。

Export tables with MySQL Workbench with INSERT statements

【讨论】:

使用 ARCHIVE STORAGE ENGINE 不会在我的数据库中增加大小吗?它是否会生成自己的 sqldump?还是拉链? 它会生成一个 sql 转储(每行都有插入语句),因此您可以轻松地重新导入数据。 在哪里可以找到它生成的 sqldump? 您可以选择目的地。只需按照答案中描述的步骤操作,您就会知道。 如果我错了,请纠正我。所以 ARCHIVE STORAGE ENGINE 就是这个过程'1。我将创建一个(示例表)tblArchive 2. 我将一年前的所有旧数据从我的 tblEvent 表转移到 tblArchive(我仍然不知道这是什么过程) 3. 我将不再搜索那些数据在我的 tblEvent 4. tblArchive 将自动为我生成一个 sqldump(或者我将手动生成 sql 转储?)我在哪里可以找到它?如果我错了,请纠正我谢谢。【参考方案3】:

您可以使用 mysqldump 命令归档整个数据库或某些特定表。

Database Dump:

mysqldump -u "username" -p"password" "databasename" | gzip > /var/www/dump.sql.gz [location and dump file name]

Specific Tables Dump:

mysqldump -u "username" -p"password" "databasename" --tables table1 table2 table3 | gzip > /var/www/dump.sql.gz [location and dump file name]

【讨论】:

以上是关于MySQL 表数据归档的主要内容,如果未能解决你的问题,请参考以下文章

手动实现MySQL归档

RDS for MySQL 通过分区归档历史数据

Mysql - 归档数据,使用哪种解决方案?

pt-archiver 归档数据

数据库中间件数据归档

dba+工具:pt-archiver重构版,轻松搞定大表数据归档