修改MySql数据库名称及附带脚本

一、 在开发流程中,我们会部署多环境,其中数据库结构及数据同步是非常重要的一环,为了便于项目复盘,我们往往会保留数据库一段时间,比如类似这样的方式:db_20200210,db_20200220,db_20200229,db_xxxxxxxx,但MySql是不支持直接修改数据库名称的,我们在从阿里云的RDS生产环境同步到仿真环境就遇到这个问题,每次都是直接这样命名,但项目的配置文件配置的数据库名称是db,避免不了要改配置文件,就是用分布式配置,也是多了一个环节,人为的操作是不能保证不出错误的,所有就有了这个脚本来完成这个过程。

二、 脚本主要完成的功能:

1、数据表迁移,

2、是否删除原来数据库(因为RDS做DTS迁移是不能存在相同数据库名称的,所有加了这个功能)

三、 脚本的使用:

1、 source:源数据库名称

2、 target:目标数据库名称

3、 是否删除源数据库

四、 脚本运行

1、在客户端运行

  1 CREATE DEFINER=`root`@`%` PROCEDURE `move_tables`( IN `source` VARCHAR ( 20 ), IN `target` VARCHAR ( 20 ), IN `is_delete_database` TINYINT )
  2
  3 BEGIN
  4
  5 DECLARE
  6
  7 v_index INT UNSIGNED DEFAULT 0;
  8
  9 DECLARE
 10
 11 v_table_name VARCHAR ( 50 );
 12
 13 CREATE TEMPORARY TABLE table_list (
 14
 15 id INT auto_increment,
 16
 17 table_name VARCHAR ( 50 ),
 18
 19 KEY ( id ));
 20
 21 INSERT INTO table_list ( table_name ) SELECT
 22
 23 table_name
 24
 25 FROM
 26
 27 information_schema.`TABLES`
 28
 29 WHERE
 30
 31 TABLE_SCHEMA = source;
 32
 33 SELECT
 34
 35 count( 1 ) INTO v_index
 36
 37 FROM
 38
 39 table_list;
 40
 41 LOOP_LABEL :
 42
 43 LOOP
 44
 45 SELECT
 46
 47 table_name INTO v_table_name
 48
 49 FROM
 50
 51 table_list
 52
 53 WHERE
 54
 55 id = v_index;
 56
 57 SET @strsql = concat( ‘RENAME TABLE ‘, source, ‘.‘, v_table_name, ‘ to ‘, target, ‘.‘, v_table_name );
 58
 59 PREPARE dysql
 60
 61 FROM
 62
 63 @strsql;
 64
 65 EXECUTE dysql;
 66
 67 DEALLOCATE PREPARE dysql;
 68
 69 SET v_index = v_index - 1;
 70
 71 IF
 72
 73 v_index < 1 THEN
 74
 75 LEAVE LOOP_LABEL;
 76
 77 END IF;
 78
 79 END LOOP;
 80
 81 DROP TABLE table_list;
 82
 83 IF
 84
 85 is_delete_database = 1 THEN
 86
 87 SET @strdropsql = concat( ‘DROP DATABASE ‘, source );
 88
 89 PREPARE dysql
 90
 91 FROM
 92
 93 @strdropsql;
 94
 95 EXECUTE dysql;
 96
 97 DEALLOCATE PREPARE dysql;
 98
 99 END IF;
100
101 END

2、调用

call move_tables(‘db,‘db_20200222‘,0);

显示结果如下:

这样数据库db就同步到了db_20200222,如果想直接删除db数据库,可以设置 is_delete_database为1即可,这样就变通的把数据库名称有db改成了db_20200222,接下来你想做什么,就根据业务需求继续吧。

脚本下载
链接:https://pan.baidu.com/s/1D3q0iBc56W6JSmPgHwmoSQ
提取码:dljv

原文地址:https://www.cnblogs.com/lzh-boy/p/12346216.html

时间: 2024-11-05 15:56:09

修改MySql数据库名称及附带脚本的相关文章

修改Mysql数据库默认存储路径

(修改) # cd /usr/local # mkdir db(建立Mysql数据库新的存放目录) # cp -r /var/db/mysql /var/db/mysql_bk(备份默认的mysql数据库) # cp -r /var/db/mysql /usr/local/db(拷贝Mysql数据库到新的存放目录) # mysqladmin shutdown(把mysql关闭) # cd /var/db # rm -r mysql(把以前的Mysql数据库删除了,才不碍眼) # ee /usr/

CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动

CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动1.关于mysql?MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.特点: Mysql是开源的,所以你不需要支付额外的费用.Mysql支持大型的数据库.可以处理拥有上千

如何修改MySQL数据库引擎

对于MySQL数据库,如果你要使用事务以及行级锁就必须使用INNODB引擎.如果你要使用全文索引,那必须使用MyISAM. INNODB的实用性,安全性,稳定性更高但是效率比MyISAM稍差,但是有的功能是MyISAM没有的.修改MySQL的引擎为INNODB,可以使用外键,事务等功能,性能高.本文主要介绍如何修改MySQL数据库引擎为INNODB,接下来我们开始介绍. 首先修改my.ini,在[mysqld]下加上: default-storage-engine=INNODB 其中的蓝色字体是

修改MySQL数据库的密码

通过MySQL命令行,可以修改MySQL数据库的密码,下面就为您详细介绍该MySQL命令行,如果您感兴趣的话,不妨一看. 格式:mysqladmin -u用户名 -p旧密码 password 新密码 1.给root加个密码ab12.首先在DOS下进入目录mysql\bin,然后键入以下命令mysqladmin -u root -password ab12注:因为开始时root没有密码,所以-p旧密码一项就可以省略了. 2.再将root的密码改为djg345.mysqladmin -u root

批量修改mysql数据库表前缀。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

查看和修改MySQL数据库表存储引擎

要做一名合格的程序员,除了把代码写的漂亮外,熟知数据库方面的知识也是不可或缺的,下面总结一下如何查看和修改MySQL数据库表存储引擎:        1.查看数据库所能支持的存储引擎:show engines;        2.查看某个数据库中某个表所使用的存储引擎:show table status from db_name where name='table_name';        3.修改表引擎方法:alter table table_name engine=innodb;     

用phpMyAdmin修改mysql数据库密码

1初始数据库密码为空.用phpMyAdmin修改mysql数据库密码2第一步,点击phpMyAdmin里的用户选项.用phpMyAdmin修改mysql数据库密码3选择root localhost用户名,点击编辑权限.用phpMyAdmin修改mysql数据库密码4此时会出来修改权限的页面,里面可以设置的选项还是比较多的,暂时不管其他的,往下拖,会有一个修改密码的区域.用phpMyAdmin修改mysql数据库密码5输入两次新的密码,下面有个生成按钮,这是根据你当前设置的密码加密之后生成新的密码

Linux下修改MySQL数据库字符编码为UTF-8解决中文乱码

由于MySQL编码原因会导致数据库出现乱码. 解决办法: 修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家需要用到的字符,是国际编码. 具体操作: 1.进入MySQL控制台 >mysql -uroot -p #输入密码进入 >status; #查看当前MySQL运行状态,如下图所示: 2.修改mysql配置文件 [[email protected] ~]# vi /etc/my.cnf #在[client]段增加下面代码 default-character-set=utf

如何查看和修改mysql数据库的编码

笔者网站曾经在把数据库从虚拟空间换到独立服务器上,只是上面安装的数据库编码跟我原来的不同,原来是latin1 ,当前的是GBK格式,由于编码的不同,有时候网站会出现乱码,下面简单介绍一下如何查看和修改mysql数据库的编码: 1.查看数据库编码首先查看当前使用的数据库编码,登陆数据库管理,运行语句: mysql> use testsqlDatabase changedmysql> show variables like 'character_set_database';+-----------