数据库运维:mysql 数据库迁移方法-mysqldump

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。

数据库运维:mysql 数据库迁移方法

数据库运维需要掌握的技能之一数据库的迁移,而MySQL数据库是我们常用的数据库之一,掌握mysql 数据库的数据迁移,也是必备的技能选项。数据库的迁移,我们必须要思考如下几个点:

  1. 需要迁移数据库的数据量大小
  2. 需要迁移的数据库对象是什么,
  3. 考虑使用何种迁移方法!
    这三个思考要点,适合于所用的数据库迁移,请大家留意。
    思考mysql 数据库迁移,第一步就需要基于数据库或表,统计每一个数据库或表占用存储空间,根据所占用的空间大小以及实际迁移时遇到的应用场景,决定使用什么迁移方法。比如数据库大小在10 GB 以下,可以考虑使用mysqldump 作为逻辑导出source导入,实现迁移。数据库大小在10 GB 以上,就可以考虑mydumper ,myloader工具导出导入。如果导出数据库大小在100 GB 以上就可以考虑使用物理迁移等方法!以上三种迁移思路针对的一般方法,如果一个数据库的表数量比较多(100个以上),单个表占用空间为1G左右,也适合用mydumper导出,myloader导入。所以本系列mysql 数据库迁移基于数据量大小,结合不同的应用场景,实现mysql 数据库快速迁移。用户掌握一些特定的应用场景与使用工具,结合自己实际应用场景,做出灵活选择方法,实现快速数据迁移的方法。
    Mysql 数据库需要迁移的对象包括表,索引,视图,触发器,事件,存储过程与函数
    迁移方法主要有两种,逻辑备份迁移与物理备份迁移,mysqldump/mydumper/myloader 都是逻辑备份与恢复工具。

使用mysqldump 导出与source 导入

Mysqldump 导出工具,mysql数据库安装后都有该工具,所以使用mysqldump 工具导出也时最方便的工具。使用mysqldump 的优点就是方便快捷的使用,不用安装;缺点是导入时受目标服务器的内存与CPU 资源限制,导入会花很长的时间导入。

Mysqldump 使用-B 参数,默认导出数据库的表,索引,视图,触发器等对象,需要导出存储过程与函数,需要使用-R 参数,不同参数的组合,可以帮助我们操作一些失败的对象。

统计mysql 数据库需要迁移的数据量大小

统计mysql数据库的数据库大小主要考虑的数据与索引占用的空间,需要使用的系统表为information_schema.tables

  1. 计算数据库总空间大小

csharp

体验AI代码助手

代码解读

复制代码

select table_schema as ‘数据库’,  concat(round((sum(DATA_LENGTH)+sum(INDEX_LENGTH))/1024/1024/1024,2),'G') as total_size from information_schema.tables group by table_schema;
  1. 计算数据库的数据大小

csharp

体验AI代码助手

代码解读

复制代码

SELECT table_schema as ‘数据库’, concat(round(sum(DATA_LENGTH/1024/1024/1024),2),'GB') as data_size FROM information_schema.TABLES group by TABLE_SCHEMA;
  1. 计算数据库索引长度

csharp

  1. 体验AI代码助手
  2. 代码解读
  3. 复制代码
SELECT table_schema as ‘数据库’, concat(round(sum(INDEX_LENGTH/1024/1024/1024),2),'GB') as index_size FROM information_schema.TABLES group by TABLE_SCHEMA;

基于某一个库计算每一个表的空间大小

  1. 计算数据库的表占用空间大小,并按表的大小降序排列

sql

体验AI代码助手

代码解读

复制代码

 #select table_schema as '数据库',table_name,  concat(round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2),'MB') as total_size from information_schema.tables where table_schema='XXXX' order by round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2) desc;
  1. 计算数据库的表数据占用空间大小, ,并按表的大小降序排列

csharp

体验AI代码助手

代码解读

复制代码

 SELECT table_schema as '数据库', table_name,  concat(round(DATA_LENGTH/1024/1024,2),'MB') as data_size FROM information_schema.TABLES where table_schema='XXXX' order by round(DATA_LENGTH/1024/1024,2) desc;
  1. 计算数据库的表索引占用空间大小

csharp

  1. 体验AI代码助手
  2. 代码解读
  3. 复制代码
SELECT table_schema as '数据库', table_name,  concat(round(INDEX_LENGTH/1024/1024,2),'MB') as index_size FROM information_schema.TABLES where table_schema='XXXX' order by round(INDEX_LENGTH/1024/1024,2) desc;

查看mysql 需要迁移的存储过程与函数

Mysql 的非表对象比较少,主要包括函数,存储过程,视图

Mysql8 查询的系统表为information_schema.routines

sql

体验AI代码助手

代码解读

复制代码

select * from information_schema.routines where routine_schema ='XXXX';  -- XXXX代表数据库名称

mysql5.7 查询

sql

体验AI代码助手

代码解读

复制代码

select `name` from mysql.proc where db = 'XXXX' -- -- XXXX代表数据库名称

使用mysqldump 导出数据库

vbnet

体验AI代码助手

代码解读

复制代码

#mysqldump -uroot -p11111111 -B dt_news -R --single-transaction >dt_news.sql

mysqldump: [Warning] Using a password on the command line interface can be insecure.

-B 参数,会在备份的sql 语句中产生CREATE DATABASE /*!32312 IF NOT EXISTS*/ `dt_news` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;

如果目标库中的数据库与源库不一致,需要单独在目标库中创建数据库,同时源库中导出就不使用-B 参数, 直接使用数据库名称,使用source 导入

导入数据库

将数据复制到目标库中,使用source 数据文件路径 导入数据库

shell

体验AI代码助手

代码解读

复制代码

# source /home/mysql/dt_new.sql

参考信息

  • Mysql 数据库只导出数据的存储过程与函数

css

体验AI代码助手

代码解读

复制代码

 #mysqldump -uroot -p11111111  -ndt -B dt_news -R --single-transaction >dt_news.sql

-n  不创建数据库,-d 不迁移数据,-t 不产生创建表格的语句

  • Mysql 数据库只导出数据结构

css

体验AI代码助手

代码解读

复制代码

mysqldump -uroot -p11111111 -d -B dt_news >dt_news_view1.sql

导出创建数据库语句,表语句,以及视图信息


转载来源:https://juejin.cn/post/7443740566976233487

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
1月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
79 3
|
1月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
1月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
1月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
1月前
|
SQL 关系型数据库 MySQL
Mysql数据恢复—Mysql数据库delete删除后数据恢复案例
本地服务器,操作系统为windows server。服务器上部署mysql单实例,innodb引擎,独立表空间。未进行数据库备份,未开启binlog。 人为误操作使用Delete命令删除数据时未添加where子句,导致全表数据被删除。删除后未对该表进行任何操作。需要恢复误删除的数据。 在本案例中的mysql数据库未进行备份,也未开启binlog日志,无法直接还原数据库。
|
1月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
101 1
|
1月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
1月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
2月前
|
存储 运维 关系型数据库
从MySQL到云数据库,数据库迁移真的有必要吗?
本文探讨了企业在业务增长背景下,是否应从 MySQL 迁移至云数据库的决策问题。分析了 MySQL 的优势与瓶颈,对比了云数据库在存储计算分离、自动化运维、多负载支持等方面的优势,并提出判断迁移必要性的五个关键问题及实施路径,帮助企业理性决策并落地迁移方案。
|
1月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
290 7

推荐镜像

更多