如何创建链接的mysql数据库

时间:2015-12-04 13:33:08

标签: mysql database

我的软件只按名称读取一个数据库。但是,每天我都要检查30天以上的记录,因此我的解决方案是每天重命名数据库(附加时间戳)并创建一个旧名称的新记录,以便我的软件可以继续运行。

我需要我的软件来读取所有数据库,但它只能读取一个。有没有办法将主数据库与存档的数据库链接而不复制数据库?我不认为我可以使用MERGE,因为我无法在白天拆分数据库。

e.g。

  • 软件仅读取数据库MAINDB
  • 每天,cronjob重命名数据库。 MAINDB变为BKDB_2015_12_04。我仍然可以从mysql访问数据库,因为它不是转储数据库。
  • 为要阅读的软件制作了新的MAINDB
  • 但是,我需要该软件来读取存储在BKDB_2015_12_04和任何其他数据库BKDP_*
  • 中的数据
  • 我想在阅读MAINDB时使用该软件,同时阅读BKDB_*

基本上,我有一些数据库&只读'我白天对数据进行分区。我正在阅读有关使用PARTITION的信息,但我处理的是大量数据,而且我不确定PARTITION是否有效处理这些数据。

2 个答案:

答案 0 :(得分:0)

重命名并重新创建数据库是个坏主意"。如何重命名和重新创建时,如何确保不访问您的数据库?

例如,假设我在购买过程中,我将篮子写入数据库表,因为我向其中添加了项目(不太可能是场景,但可能)。我在浏览周围选择更多项目。在我浏览的时候,重命名现有数据库并重新创建新数据库。我的篮子立即空了,没有任何解释。

使用备份,如果您的数据库重命名为half =通过备份,会发生什么?如何确保备份所有其他重命名的数据库?

最后一件事 - 从长远来看,重命名的数据库会发生什么?他们永远留在那里吗?经过一段时间后会掉线吗?等

如果您要检查30天以上的记录,那么您应该考虑的唯一解决方案是为每条记录添加时间戳。如果您的表格是通过单个" master"桌子,把时间戳放在那里。您的查询可以保持大致相同(除了添加时间戳检查),并且您不必计算过去30天的数据库名称

答案 1 :(得分:0)

您应该能够使用UNION对所有数据库进行查询,您需要知道的只是数据库的名称:

select * from MAINDB.table_name
union all
select * from BKDB_2015_12_04.table_name
union all
select * from database_name.table_name