Chinaunix首页 | 论坛 | 博客
  • 博客访问: 278832
  • 博文数量: 52
  • 博客积分: 120
  • 博客等级: 民兵
  • 技术积分: 1189
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-03 15:41
个人简介

MySQL DBA

文章分类

全部博文(52)

文章存档

2013年(51)

2011年(1)

分类: Mysql/postgreSQL

2013-03-07 14:09:08


mysql  rename database


mysql在5.1.7中增加了rename database,由于其不安全性,在5.1.23中又取消了,日常工作中常遇到需要修改db名字的情况,整理下重命名一个数据库的方法。

1.    使用rename table。很多知道这样用:

    rename table old_name to new_name

其实它还有一个功能:

    rename table a.old_name to b.new_name

写一个存储过程就可以实现整个库的迁移,速度很快。

2.    使用mysqldump。先备份再导入新库,这应该是很常用的方法。

    mysqldump–u–p–h db>db_dump.sql    

    mysql–u–p–h–e“create database new_db;source db_dump.sql;”#确认新库正常工作后mysql–u–p–e“drop database db”

3.    使用myisam表。全部都是myisam表或者alter table为myisam表。使用下面的步骤:

    1.    停止mysql server

    2.    重命名数据目录中数据库的文件目录名称3.    启动mysql server

用脚本或者存储过程实现复制和重命名db。将其中sql改为create table a as select * from b可实现db的复制。

点击(此处)折叠或打开

  1. mysql>show create procedure p_db_renameG
  2. ***************************1.row***************************
  3.           Procedure:p_db_rename
  4.             sql_mode:
  5.    CreateProcedure:CREATE DEFINER=`root`@`%`PROCEDURE`p_db_rename`(inold_db varchar(45),innew_db varchar(45))
  6. BEGIN
  7.     declare counts,finishedintdefault0;
  8.     declare tablename varchar(45)default'';
  9.     DECLARE cur1 CURSOR FOR SELECT table_namefrom`information_schema`.tableswheretable_schema=old_db;
  10.     DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished=1;
  11.    #SELECT COUNT(*) into counts FROM `information_schema`.tables WHERE table_schema=new_db;
  12.     OPEN cur1;
  13.     FETCH cur1 INTO tablename;
  14. loop1:LOOP
  15.     IF finished=1 THEN
  16.     CLOSE cur1;
  17.     LEAVE loop1;
  18.     END IF;
  19.     select concat('rename table ',tablename,'...') as info ;
  20.     set @sql=concat('RENAME TABLE ',old_db,'.',tablename,' to ',new_db,'.',tablename);
  21.     prepare sqls from @sql;
  22.     execute sqls;
  23.    FETCH cur1 INTO tablename;
  24. end loop;
  25. END
  26. character_set_client: utf8
  27. collation_connection: utf8_general_ci
  28.  Database Collation: latin1_swedish_ci
  29. 1 row in set (0.00 sec)



阅读(4420) | 评论(0) | 转发(0) |
0

上一篇:linux系统调优思路

下一篇:nosql 资料收集

给主人留下些什么吧!~~