【前言】

来了一需求,开发组前项目前期开发时创建了一个测试库,存储引擎使用的是innodb;此库DataBase/Schema存放了一些表和索引,并无存储过程、视图、触发器、函数等;因名字和生产库名称类似,太敏感,需要改下名字。此需求咋个搞?

如要修改DataBase/Schema 的名称为ethanDB,需改名为ts_db_01。

先简单了解下Mysql的几种常用对象:

1. DataBase/Schema

2. Table

3. Index

4. View/Trigger/Function/Procedure

操作步骤

如果库使用的是MyISAM存储引擎,那么可以直接去到数据库目录mv就可以;步骤如下:

MYISAM引擎把库名字对应的文件夹名更改:

1. 关闭mysqld

2. 把data目录中的db_name目录重命名为new_db_name

3. 打开mysqld

但生产环境使用的存储引擎为Innodb,做过测试的朋友可以试试,会提示相关表不存在。

Innodb存储引擎的DataBase/Schema,大概有如下三种方法:

方法1:RENAME database olddbname TO newdbname

mysql> rename database ethandb to ts_db_02;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘database ethandb to ethan’ at line 1

注意:

此非异常,原因该命令是5.1.7到5.1.23版本可用,5.1.23后被取消。因为我处版本为5.7.26,所以该命令不适用。

方法2:使用Mysqldump逻辑备份的方式

此方法当然可行,简单有效;但是如果碰到比较大的表,则耗时比较长。

方法3:自己编写shell脚本

INNODB引擎分为下面几个步骤:

1. 创建新库

2. 备份原有库中所有表上的触发器

3. 使用navicat备份库index/View/Function/Procedure/Events脚本

4. 使用rename table命令将表从原数据库复制到新数据库

5. 在新数据库上重新创建2中被删除的触发器

6. 在新数据库上重新创建index/View/Function/Procedure/Events等

因本文只涉及表和索引,故

RENAME TABLE命令语法:

RENAME TABLE db_name.table1 TO new_db_name.table1,                     db_name.table2 TO new_db_name.table2;

根据上述命令,编写脚本cp_db_tables.sh如下:

该脚本已经上传至个人github上,感兴趣的朋友可以查看如下链接:

https://github.com/polestarYang/mysqlgit/blob/master/cp_db_tables.sh

【总结】

本文使用脚本方式可快速创建一个新库的案例,可以快速的创建一个新的库,但只创建了源库相关的表,trigger/index/View/Function/Procedure/Events还需要重新创建;但不是为一种快速创建测试库的方法。

如果是迁移数据库,建议还是使用逻辑备Mysqldump, 或者mysqlbackup物理备份形式。

【参考】

https://blog.csdn.net/ghlfllz/article/details/8092068

mysql中更改数据库名字_【实操篇】_MySQL如何更改数据库名字?相关推荐

  1. 在MySQL中第一章选择题_北大青鸟第二学期 123章数据库选择题

    1  第一章: 1.假定一位教师可讲授多门课程,一门课程可由多位老师讲授.教师与课程之间是:C A. 一对一的关系 B. 一对多的关系 C. 多对多的关系 D. 多对多的关系 2.在E-R图中,用长方 ...

  2. 数据库运维实操优质文章分享(含Oracle、MySQL等) | 2023年3月刊

    本文为大家整理了墨天轮数据社区2023年3月发布的优质技术文章,主题涵盖Oracle.MySQL.PostgreSQL等数据库的基础安装配置操作.故障处理.性能优化等日常实践操作,以及概念梳理.常用脚 ...

  3. 数据库运维实操优质文章分享(含Oracle、MySQL等) | 2023年5月刊

    本文为大家整理了墨天轮数据社区2023年5月发布的优质技术文章,主题涵盖Oracle.MySQL.PostgreSQL等数据库的安装配置.故障处理.性能优化等日常实践操作,以及常用脚本.注意事项等总结 ...

  4. mysql集群(主从复制)实操

    mysql集群(主从复制)实操 1.环境准备 1.准备5台全新的机器 ​ 192.168.31.23 master1 ​ 192.168.31.24 master2 ​ 192.168.31.89 s ...

  5. MySQL 到 MongoDB 实时数据同步实操分享

    MySQL数据怎么实时同步到 MongoDB 实践分享系列 摘要:很多 DBA 同学经常会遇到要从一个数据库实时同步到另一个数据库的问题,同构数据还相对容易,遇上异构数据.表多.数据量大等情况就难以同 ...

  6. MySQL 到 PostgreSQL 实时数据同步实操分享

    摘要:很多 DBA 和开发同学经常会遇到要从一个数据库实时同步到另一个数据库的问题,同构数据还相对容易,遇上异构数据.表多.数据量大等情况就难以同步.最近了解到一款实时数据同步工具 Tapdata C ...

  7. mysql中Bname表示什么_《MY SQL实用教程》期末考试题

    一.单选 1.在SQL语言中的SELECT语句中,用于实现选择运算的句子是(B) A.FOR B.WHERE C.WHILE D.IF 2.设置语句结束的命令是(C) A.set B.end C.de ...

  8. Linux实操篇笔记

    Linux实操篇 远程登陆Linux 先检查一下sshd服务打开没有( " * " 表示打开): setup 选择系统设置,进入下面页面: Xshell 是一个强大的安全终端模拟软 ...

  9. CRM项目开发【实操篇----市场活动模块】

    CRM项目开发[实操篇----市场活动模块] 前言:本项目来源于B站动力节点视频,CRM项目开发 使用的后端技术栈主要是SSM框架,不涉及boot,老师讲的非常细致,推荐 关于流程图部分,由于是老师创 ...

  10. Linux入门笔记-尚硅谷韩顺平-基础篇实操篇

    文章目录 课程导论 基础篇 Linux入门 Linux介绍 Linux和Unix的关系 Linux和Windows比较 基础篇 Linux的目录结构 基本介绍 具体的目录结构 实操篇 vi和vim的使 ...

最新文章

  1. deeplearning算法优化原理
  2. 什么是shell【TLCL】
  3. 全文详解:「深度学习」如何协助处理医疗中的「数据难题」
  4. 【转】QString 与中文问题
  5. aliddns ipv6_群晖使用阿里云DDNS(ipv4和ipv6)
  6. 面向对象重写(override)与重载(overload)区别
  7. css x轴不滚动_css – 固定div,动态内容不滚动
  8. VNCServer在Linux下设置
  9. mysql hash分区 创建_如何建mysql hash数据库分区
  10. ant编译mysql驱动
  11. 性能分析工具Linux perf使用经验
  12. 如何通过Multitouch为Mac电脑添加更多手势控制?
  13. java生成json字符串的方法
  14. citypicker城市选择+高德定位,城市编码统一设置
  15. 代码在线执行工具(PHP,Java,C++ 等)
  16. 2022软件测试常见抓包工具
  17. 一个流氓眼中的物联网
  18. Google着手与 Open AI 合作预防人工智能暴走
  19. git小游戏通关攻略(基础、高级、远程)
  20. KeyError: 'data'

热门文章

  1. java实现飞机大战小游戏——————【附素材、源码、逐行注释讲解】
  2. 古希腊数学家毕达哥拉斯数学题
  3. 字典树(Trie,前缀树)
  4. Android官方文档翻译 九 2.2Adding Action Buttons
  5. BATMAN-ADV
  6. 脑机接口等在线学习课堂视频分享(供下载)
  7. Android 系统,Wifi连接后,显示wifi已连接但无法访问网络。
  8. Proguardgui
  9. Java学习必备武林秘籍,大侠请收好!
  10. python中的prettify