我有一个脚本需要将数据添加到mysql数据文件夹中创建的文件夹中,然后以某种方式强制mysql服务器重新加载数据,以便数据库可靠地显示出来。我目前正在使用system
调用/etc/init.d/mysql
脚本来重启服务器,但这很慢,我找不到任何在mysql中通过某种查询重新加载数据库的任何东西。我只是想知道是否有办法做得更快一点?
答案 0 :(得分:1)
这取决于您正在使用的存储引擎。
一旦MySQL下次触摸表格,就会自动重新加载MyISAM表格(显然,您需要确保.MYI,.MYD和.frm文件一致)。 InnoDB有点复杂,取决于它是否是同一表空间中所有表的传统配置,或者是否使用innodb_file_per_table
。对于前者,您几乎必须重新启动服务器。使用file-per-table,您可以复制单个.ibd文件,但是您必须使用ALTER TABLE
语句来导入该表空间。
有关在不重新启动服务器的情况下使用各个.ibd文件的信息,请参阅here。
This page对于了解如何将InnoDB数据从一个地方移动到另一个地方也非常有用。
答案 1 :(得分:0)
你说“很慢”是什么意思?
您可以在名为orginal_db_name_temp
的数据库中转储/加载 new 数据库,重命名original
数据库,然后将orginal_db_name_temp
重命名为{ {1}} - 然后您将拥有新的数据库。
但是,我不知道哪种方法更快 - 因为转储和加载往返可能比文件副本慢。但重命名数据库可能比重新启动服务器更快