MySQL改数据库名称

MySQL里可以很容易地改表名:

RENAME TABLE tbl_name TO new_tbl_name;

但是要改数据库名就不是那么容易了。rename是不支持改数据库名的。

如果MySQL是可以停服的,那就很简单,因为数据库名其实对应了磁盘的一个路径名,直接mv就可以。

如果MySQL不能停服,但是数据量比较小,那就使用mysqldump,整个导出,再建新库,再整个导入。

如果MySQL不能停服,而且数据量还非常之巨大,而之所以要改名,是要把db改成db_bak,在确保线上确实不会出问题后,再选择合适的空闲时间drop掉这个db_bak。这就是我遇到场景。

此时有个小技巧,就是rename可以用于表的迁移,即可以将一个表从db1移动到db2下。所以改数据库名字的步骤就是:1. 新建库;2. 把表依次迁移到新库;3. drop掉原来的库。SQL举例:

CREATE DATABASE `db_bak`;
rename table db.t1 to db_bak.t1;
rename table db.t2 to db_bak.t2;
...
drop database db;

 

发表于 2023年03月20日 16:03   评论:0   阅读:463  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo