FreezeJ' Blog

使用rename迁移备份mysql数据库

2022-12-20

日志库需要重构,但是单个日志库太大(10G甚至100G以上)。使用mysqldump备份不现实,可以使用rename操作,把数据表迁移到一个新的备份库中,速度快且不用丢数据。

  • sakila:旧数据库
  • new_sakila:新数据库(备份)

检查

操作前检查是否有程序占用,确保连接数据库的程序已经退出,不然操作会等待锁有可能导致卡死。

show processlist;

操作

#创建新存放数据库
mysql -h127.0.0.1 -P3306 -uUSERNAME -pPASSWORD -e 'create database if not exists new_sakila'

#获取旧数据的所有表
table_list=$( mysql -h127.0.0.1 -P3336 -uroot -pmhtx123123 -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='sakila'")

#将旧数据库的表和数据全部迁移到新的数据库
for table in $table_list
do
    mysql -h127.0.0.1 -P3306 -uUSERNAME -pPASSWORD -e "rename table sakila.$table to new_sakila.$table"
done

以上流程最好先经过测试,数据库请谨慎操作。