背景
项目日志库需要重构,但是单个日志库太大(最小10G有的甚至在100G以上)。使用mysqldump
方式备份不现实,可以使用rename
操作,把数据表迁移到一个新的备份库中,速度快且不用丢数据。
- old_database:旧数据库
- new_database:新数据库(备份)
检查
操作前请先检查是否有程序占用,确保连接数据库的程序已经退出,不然操作会等待锁有可能导致卡死。
show processlist;
操作
#创建新的数据库
mysql -h127.0.0.1 -P3306 -uUSERNAME -pPASSWORD -e 'create database if not exists new_database'
#获取旧数据库中的所有表
table_list=$( mysql -h127.0.0.1 -P3336 -uUSERNAME -pPASSWORD -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='old_database'")
#将旧数据库的表和数据全部迁移到新的数据库
for table in $table_list
do
mysql -h127.0.0.1 -P3306 -uUSERNAME -pPASSWORD -e "rename table old_database.$table to new_database.$table"
done
以上流程务必先测试一下,涉及到数据库的操作请谨慎执行。