Mysql数据库实例重命名(踩坑小记)

本文记录了在测试环境中,为避免代码扫描工具产生的垃圾数据影响,尝试通过重命名数据库实例来解决清理问题的过程。作者分享了在重命名数据库时遇到的问题,如方法耗时过长和名称中含有特殊字符导致的脚本执行错误,并提供了经过优化的shell脚本代码,实现了在保持数据完整性的前提下,便捷地切换测试与安全测试数据库实例名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mysql数据库实例重命名

背景小记

最近,出于安全需求不定期在测试环境对系统进行代码扫描,可代码扫码工具会模拟攻击方调用api接口,会在测试环境产生大量垃圾数据,给平时测试带来些麻烦,因此需要对数据库做清理,又嫌清理麻烦,想着再建一套安全测试用的数据库,但如此一来,测试服务便要在两个数据库实例间来回切换,每次切换都需要改代码部署,因此最终采用更改数据库实例名的方案。

踩坑记

开始实现前在网上找到了一些方法
https://blog.youkuaiyun.com/tjcwt2011/article/details/79451764
在此之前曾经采用过这边文章提到的第二种方法:

  1. 创建需要改成新名的数据库
  2. mysqldum 导出要改名的数据库
  3. 删除原来的旧库(确定是否真的需要)

但随着测试库数据量越来越大,这种方法的耗时越来越长,显然已经不可取了。便采用了第三种方法,原有测试库为test-database,安全测试库为security-database

  1. 创建需要改成新名test-database-bak的数据库
  2. 将test-database下的表通过重命名的方式迁移到test-database-bak下
  3. 将security-database下的表通过重命名的方式迁移到test-database下

安全测试结束后再按上述步骤将两个库的实例名再置换下即可。

但按照上述链接文章所提供的第三种方法的脚本代码直接运行是行不通的,原因是我们的数据库实例都是带“-”的,在MySQL中需要用反引号`圈起来,but在shell脚本语言中反引号是用来替换命令的,以下举两个例子便于大家理解。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值