如何创建链接的mysql数据库

如何创建链接的mysql数据库,mysql,database,Mysql,Database,我的软件只能读取一个数据库的名称。但是,每天我都要检查30天以上的记录,因此我的解决方案是每天重命名数据库(添加时间戳),并使用旧名称创建一个新的数据库,以便我的软件可以继续运行 我需要我的软件读取所有的数据库,但它只能读取一个。有没有一种方法可以在不复制数据库的情况下将主数据库与存档数据库链接起来?我认为我不能使用MERGE,因为我无法在白天拆分数据库 e、 g 软件仅读取数据库MAINDB 每天,cronjob都会重命名数据库MAINDB变成BKDB\u 2015\u 12\u 04。我仍

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

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

e、 g

  • 软件仅读取数据库
    MAINDB
  • 每天,cronjob都会重命名数据库
    MAINDB
    变成
    BKDB\u 2015\u 12\u 04
    。我仍然可以从mysql访问数据库,因为它不是转储数据库
  • 新的
    MAINDB
    用于软件读取
  • 但是,我需要软件来读取存储在
    BKDB_2015_12_04
    和任何其他数据库
    BKDP*
  • 我想让软件在阅读
    MAINDB
    时也阅读
    BKDB.*

本质上,我有一些数据库是“只读”的,我每天都在对数据进行分区。我正在阅读有关使用
PARTITION
的文章,但是我正在处理大量的数据,我不确定
PARTITION
是否能有效地处理这些数据

重命名和重新创建数据库是一个“坏主意”。在重命名和重新创建数据库时,如何确保数据库未被访问

例如,假设我在购买过程中,我的篮子被写到数据库表中,当我向它添加项目时(不可能的场景,但可能)。我正在浏览选择更多的项目。在我浏览时,现有数据库被重命名,并重新创建一个新数据库。瞬间,我的篮子空了,没有任何解释

对于备份,如果数据库在备份过程中被重命名,会发生什么情况?如何确保备份所有其他重命名的数据库

最后一件事——从长远来看,重命名数据库会发生什么?他们会永远留在那里吗?是否经过一定时间后才停止?等


如果您正在检查30天以上的记录,那么您应该考虑的唯一解决方案是给每个记录加上时间戳。如果您的表是通过单个“主”表链接的,请在其中添加时间戳。您的查询基本上可以保持不变(除了添加时间戳检查),并且您不必计算过去30天的数据库名称

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

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

我目前已经为表设置了时间戳,但是要查找30多天以前记录的每个实例,表需要花费太多的停机时间,因为在进行清理时表会锁定。我正在使用snort/barnyard,因此软件可以容忍一些停机时间。我只是不想失去10个小时的能见度。重命名数据库似乎很快。重命名后的数据库应该可以使用30天,然后被删除以清除空间。我不知道您正在处理多少数据,但是如果您的行数不足数十亿,并且需要10个小时,那么您还需要解决另一个问题…要尝试加快速度,请在时间戳字段上添加一个索引。它会增加存储需求,但会加快查询速度。此外,正如@FélixGagnon Grenier所说,如果运行需要10个小时,那么您还有其他问题需要解决