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 表数据归档的主要内容,如果未能解决你的问题,请参考以下文章