mysql数据库迁移整理笔记.md
2019-11-10 09:45
309 查看
钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>
mysql数据库迁移
数据库迁移包括数据迁移和用户创建及授权,数据迁移的时候需要考虑本身数据库容量大小,根据数据库容量的大小调整合适的迁移方案。
1.数据迁移
- 1.容量500M以下 :采用navicat工具迁移,直接点击
工具
--->数据传输
,具体参考navicat用户手册,这里不作过多说明。 - 2.容量500M以上 :因为容量在500M左右,数据迁移的话时间大概要20分钟,所以超过500M,甚至达到几G的数据,我们可以把大的数据表剥离出来,进行单独导入。
如我们以35生产环境的californium库为例,经过sql语句查询,查询californium大概有1140.5M
select concat(round(sum(data_length/1024/1024),2),'M') as data from information_schema.tables where table_schema='californium';
经过分析我们知道californium库大表主要有这几个:t_logteststep,testcase,testcase_bak,testcase_exe_bak,testcase_execute,这里我们以大表t_logteststep为例。
1、从源库导出数据: 用root账号登录35数据库服务器,进行数据导出,这里我们用到mysq支持大数据表的导出SELECT INTO OUTFILE的用法。
[root@db2 mysqldump]# mysql //开启缓存提高效率 mysql> SET SESSION BULK_INSERT_BUFFER_SIZE=256217728; Query OK, 0 rows affected (0.08 sec) mysql> SET SESSION MYISAM_SORT_BUFFER_SIZE=256217728; Query OK, 0 rows affected (0.08 sec) mysql> set global KEY_BUFFER_SIZE=256217728; Query OK, 0 rows affected, 1 warning (0.10 sec) //导出数据 mysql> SELECT * INTO OUTFILE '/home/mysqldata/mysqldump/t_logteststep' CHARACTER SET utf8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM californium.t_logteststep; Query OK, 1641328 rows affected (5 min 8.25 sec) [root@db2 mysqldump]# ll -h total 639M -rw-rw-rw- 1 mysql mysql 639M Jul 16 19:56 t_logteststep
数据文件保存在服务器/home/mysqldata/mysqldump目录下,需要通过sftp工具下载到本地,如我本地目录/home/zhangyh/mysqldump
2、数据导入目标库: 在本地环境开启终端,先连接到需要导入的目标库地址。这里我们用到mysq支持大数据表的导出LOAD DATA INFILE的用法。
zhangyh@xiao-Travelsky:~$ mysql -h10.221.*.* -P3306 -uroot -p****** //开启缓存提高效率 mysql> SET SESSION BULK_INSERT_BUFFER_SIZE=256217728; Query OK, 0 rows affected (0.08 sec) mysql> SET SESSION MYISAM_SORT_BUFFER_SIZE=256217728; Query OK, 0 rows affected (0.08 sec) mysql> set global KEY_BUFFER_SIZE=256217728; Query OK, 0 rows affected, 1 warning (0.10 sec) mysql> use californium; mysql> LOCK TABLES `t_logteststep` WRITE; Query OK, 0 rows affected (0.08 sec) //关闭索引更新提高效率 mysql> ALTER TABLE `t_logteststep` DISABLE KEYS; Query OK, 0 rows affected, 1 warning (0.08 sec) //导入数据 mysql> LOAD DATA local INFILE '/home/zhangyh/mysqldump/t_logteststep' INTO TABLE t_logteststep CHARACTER SET utf8 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (stepid,stepname,type,runResult,comment,reason,stepTime,caseid,orderBy); Query OK, 1641328 rows affected, 65535 warnings (2 min 55.26 sec) Records: 1641328 Deleted: 0 Skipped: 0 Warnings: 3101237 //开启索引 mysql> ALTER TABLE `t_logteststep` ENABLE KEYS; Query OK, 0 rows affected, 1 warning (0.15 sec) mysql> UNLOCK TABLES; Query OK, 0 rows affected (0.09 sec)
从上述数据表迁移来看,t_logteststep导出的数据640M,导出与导入的时间花费不到10分钟,可以很明显的提升迁移效率。
- 3.容量500M以上 :执行mysqldump命令通过管道的方式进行迁移,节省IO的时间,注意这里在源库需要安装mysqldump工具。
这里我们同样以californium数据库进行迁移,首先需要在目标库创建一个新的空库,然后ssh登录源库服务器,执行mysqldump命令,迁移californium数据库到10.221.*.*目标库。
//目标库创建数据库 mysql> CREATE DATABASE `californium` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'; //执行mysqldump命令,等待迁移完成 $ mysqldump -S /home/mysqldata/mysql/mysql.sock -uroot -xxx --opt californium| mysql -h10.221.*.* -P3306 -uroot -pxxx -C californium
- 更多关于mysqldump的用法,请点击这里
综上三种方式,第三种方式迁移效率最高!
2.用户创建及授权
//创建数据库 CREATE DATABASE `honeybee` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'; //创建用户及授权 CREATE USER `honeybee`@`%` IDENTIFIED BY '******'; GRANT Alter, Alter Routine, Create, Create Routine, Create Temporary Tables, Create View, Delete, Drop, Event, Execute, Index, Insert, Lock Tables, References, Select, Show View, Trigger, Update ON `honeybee`.* TO `honeybee`@`%`; //迁移完成之后源库删除用户 DROP USER `honeybee`@`%`;
至此,数据库迁移已完成.
相关文章推荐
- 做ex2007邮箱迁移时参考的KB整理的笔记
- PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
- 做ex2007邮箱迁移时参考的KB整理的笔记
- 形式语言与自动机_笔记整理(五)_迁移系统
- 【小白日记】Java中关于使用JDBC连接Mysql数据库的笔记整理
- idea使用mybatis来实现MySQL数据库查询的一些语法 (学生笔记整理(*^__^*) )
- MySQL数据库基础学习笔记(整理自苏勇老师的MySQL基础课程视频)
- Oracle和MySQL数据库操作语句笔记整理【持续更新】
- 【小白日记】Java中关于使用JDBC连接Mysql数据库的笔记整理
- MySQL数据库迁移笔记
- [笔记迁移][Redis][3]阅读整理配置文件常用项
- MD整理笔记(1)
- 韩顺平_轻便搞定网页设计(html+css+javascript)_第34讲_js超级玛丽小游戏_学习笔记_源代码图解_PPT文档整理...
- 《高难度谈话》笔记整理
- 软件工程笔记整理
- FreeBSD学习笔记17-FreeBSD下安装MySQL数据库
- jQuery整理笔记目录
- 笔记整理1_1:解决在ScrollView中嵌套ListView不能显示全部item的问题
- DirectX学习笔记--3D基本数学知识整理
- php扩展开发笔记(4)常用宏整理(更新中)