我在一个多主 Galera 集群中有三台服务器。我最近导入了一些旧数据库,并注意到三个表都在创建,但数据没有被复制。原来我没有注意,这些旧数据库都在使用 MyISAM 表。所以我知道将来我需要将它们转换为 InnoDB,然后再将它们引入以使它们工作。
但是,我没有找到同步现有数据的官方方法。运行ALTER TABLE
将现有表转换为 InnoDB 不会同步现有数据。
我的想法是用 转储表(现在它已被转换)mysqldump
,然后用mysql -u user -p db < db.sql
. 我看不出有什么理由不这样做,但我想知道是否有更好的方法。
我找不到官方的方法来处理这个问题,所以我想到了单独转储表并重新导入它们的想法。不想手动做,我鞭打了一个 PHP 脚本来为我做这件事。我把它贴在这里,以防其他人觉得这很有用。
我成功地用它在大约两分钟内转换了几十个数据库中的数百个表。