MySQL 数据迁移

news/2025/1/9 13:47:59/文章来源:https://www.cnblogs.com/Yee-Q/p/18659732

mysqldump 实现

mysqldump 是 MySQL 自带的备份工具,可以选择性的导出库表(整库、多库、单库、多表、单表)数据为 sql 文件

导出所有数据库

# -t:等价于 --no-create-info,表示仅导出数据,不导出表结构
# -d:等价于 --no-data,表示不包含数据,仅导出表结构
mysqldump -uroot -p --all-databases [-t] [-d] > 文件路径

导出指定单个或多个数据库

mysqldump -uroot -p --databases [-t] [-d] test1 [test2] [test3] > 文件路径

导出指定数据库的单个或多个表

mysqldump -uroot -p [-t] [-d] testDB test1 [test2] [test3] > 文件路径

导出指定数据表指定条件的数据

mysqldump -uroot -p [-t] [-d] testDB test1 --where "name = '张三'" > 文件路径

得到备份 sql 文件后导入

mysqldump -h [目标服务器ip] -P [目标服务器端口] -uroot -p < 文件路径

也可以使用 source 命令直接执行 sql 文件

source 文件路径

into oufile 和 load data infile 实现

授权用户 file 权限:

mysql > select * from mysql.user where user='root' \G;
mysql > update mysql.user set File_priv='Y' where user='root';
mysql > select * from mysql.user where user='root' \G;
mysql > flush privileges;

MySQL 使用 into outfile 语法导出数据时,只能导出数据文件到 secure-file-priv 指定的安全路径下,查看安全路径命令如下:

mysql> show variables like '%secure%';

如果不想用默认安全路径,可以在 MySQL 配置文件修改参数 --secure-file-priv 为自定义路径,如修改为空字符串 "" 则表示不限制路径

使用 into outfile 导出数据文件

select * from test into outfile 'C:/xxx/test.txt' [options];

into outfile 参数说明:

  • character set utf8:设置字符集为 utf8,防止中文乱码,需要放在 fields 前面
  • fields:域,后面常用字段有 terminated/optionally/escaped
    • terminated by 'string':设置字段数据之间的分隔符
    • optionally
      • enclosed by 'char':设置字段非数值的数据,使用什么符号引起,如英文双引号
      • escaped by 'char':字段数据存在特殊符号使用的转移符,默认是反斜杠
  • lines:设置每条记录的开头starting和结尾字符terminated
    • starting by 'char':设置每条记录的开头字符,默认空字符串
    • terminated by 'char':设置每条记录的结尾字符默认换行符

得到数据文件后,使用 load data infile 导入数据库

load data infile [文件路径] into table [表名称] [options];
  • character set utf8:设置字符集为 utf8,防止中文乱码,需要放在 fields 前面
  • fields:域,后面常用字段有 terminated/optionally/escaped
    • terminated by 'string':设置字段数据之间的分隔符
    • optionally
      • enclosed by 'char':设置字段非数值的数据,使用什么符号引起,如英文双引号
      • escaped by 'char':字段数据存在特殊符号使用的转移符,默认是反斜杠
  • lines:设置每条记录的开头starting和结尾字符terminated
    • starting by 'char':设置每条记录的开头字符,默认空字符串
    • terminated by 'char':设置每条记录的结尾字符默认换行符
  • (字段1,字段2,字段3):指定字段导入数据,注意放在整个语句最后

参数大多只需要跟 into outfile 导出参数保持一致即可

与 mysqldump 对比优缺点如下:

  • mysqldump:能完整备份结构和数据,包括表结构、存储过程、触发器等,但备份文件占用空间较大,备份和恢复的效率较慢
  • into outfile / load data infile:只能备份数据,但备份文件占用空间较小,备份和恢复效率较高

Kettle

Kettle 是一款基于 Java 的 ETL 工具,当涉及异构表或异构库的数据迁移时,可以使用 Kettle 工具轻松实现

参考文章:https://blog.csdn.net/Jmayday/article/details/102860582


迁移数据一致性

1. 备份一致性

MySQL 备份数据过程中如果发生数据更新,可以用以下方式处理:

使用锁机制。在备份开始前,对相关表或者整个数据库加锁,例如使用 FLUSH TABLES WITH READ LOCK 语句,阻止其他事务对数据修改,保证备份数据的一致性。这种方式会一定程度影响数据库的可用性,在锁生效期间,其他用户对数据的写操作会被阻塞

使用事务隔离级别。将备份操作放在一个具有高隔离级别的事务中,比如可重复读(REPEATABLE READ)隔离级别,这样事务内部读取的数据是事务开始时的数据状态,不受其他事务更新数据的影响

使用 MySQL 自带的备份工具,如 mysqldump,它提供一些选项来处理备份期间的数据变化。例如,使用 --single-transaction 选项,备份时会在一个事务中进行,确保备份数据的一致性,不会阻塞其他事务的读写操作

2. 恢复一致性

备份时最好同时备份二进制日志。在恢复数据时,先从备份文件恢复数据,再依据二进制日志里记录的备份后发生的事务,按照顺序应用这些事务,达到最终的一致性状态。例如,备份是在上午 10 点完成的,之后到 11 点的数据库更改都记录在二进制日志,恢复时就需要把日志中的更改应用到恢复的数据上

使用 mysqlbinlog 工具备份二进制日志:

静态备份,可先使用 show binary logs 语句查看当前服务器的二进制日志文件列表。如需备份特定的一组日志文件,如 binlog.000130 到 binlog.000132 ,可执行 mysqlbinlog --read-from-remote-server --host=host_name --raw binlog.000130 binlog.000131 binlog.000132;。若只指定起始文件并读取到最后一个文件,可使用 --to-last-log 选项,如 mysqlbinlog --read-from-remote-server --host=host_name --raw --to-last-log binlog.000130

实时备份,若要从某个日志文件开始进行实时备份,备份后续产生的所有新日志,可使用 --stop-never 选项,如 mysqlbinlog --read-from-remote-server --host=host_name --raw --stop-never binlog.000130

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/866542.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VUE +WebSocket+speak-tt 实现在浏览器右下角实时给商家推送订单消息

先看效果 1、WebSocket服务建立1.1 引入包<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>1.2 新建配置类package com.ruoyi.web.core.config;import org.…

ASE65R180-ASEMI超洁MOS管ASE65R180

ASE65R180-ASEMI超洁MOS管ASE65R180编辑:ll ASE65R180-ASEMI超洁MOS管ASE65R180 型号:ASE100N10 品牌:ASEMI 封装:TO-220F 批号:最新 最大漏源电流:21A 漏源击穿电压:650V RDS(ON)Max:180mΩ 引脚数量:3 芯片个数: 沟道类型:P沟道MOS管、超洁MOS管 漏电流:ua 特性…

【搜索】DFS与BFS

99. 岛屿数量讲解:https://programmercarl.com/kamacoder/0099.岛屿的数量广搜.html#思路 DFS代码 #include <iostream> #include <cstring>using namespace std;const int N = 55;int n, m; int g[N][N]; bool st[N][N]; int dx[4] = {-1, 0, 1, 0}, dy[4] = {0,…

DFS与BFS专题

99. 岛屿数量讲解:https://programmercarl.com/kamacoder/0099.岛屿的数量广搜.html#思路 DFS代码 #include <iostream> #include <cstring>using namespace std;const int N = 55;int n, m; int g[N][N]; bool st[N][N]; int dx[4] = {-1, 0, 1, 0}, dy[4] = {0,…

Spinnaker

Spinnaker 是一个持续交付平台,它定位于将产品快速且持续的部署到多种云平台上。 Spinnaker 主要特性:配置一次,随时运行;随地部署,集中化管理;开源。 Spinnaker 组件:Spinnaker 最初是以实现内部的端到端持续交付为目标,作为 Asgard 的替代,该项目期望重建一个持续交…

Java基础学习(五)

Java基础学习(五):数组 目录Java基础学习(五):数组概念声明与创建初始化基本特点内存分析应用多维数组扩展内容Arrays 类冒泡排序稀疏数组 本文为个人学习记录,内容学习自 狂神说Java概念数组是相同类型数据的有序集合 每个数据称为一个数组元素,可以通过下标来访问声明…

CDS标准视图:付款锁定原因 I_PaymentBlockingReason

视图名称:付款锁定原因 I_PaymentBlockingReason 视图类型:基础视图 视图代码:点击查看代码 //Documentation about annotations can be found at http://help.sap.com searching for CDS annotations //Inserted by VDM CDS Suite Plugin @ObjectModel.usageType.sizeCateg…

欧拉OpenEuler使用nfs和rsync复制文件夹到新服务器.250109

案例: 服务器A是新服务器 服务器B为老服务器 需要将服务器B的/data/storage ,拷贝到服务器A的 /home/sync-data下一、服务器A 新服务器配置nfs 1. 安装nfs systemctl stop firewalld df -h mkdir -p /home/sync-datayum install nfs-utils systemctl status nfs-se…

在 .NET 9 中使用 Scalar 替代 Swagger

前言 在.NET 9发布以后ASP.NET Core官方团队发布公告已经将Swashbuckle.AspNetCore(一个为ASP.NET Core API提供Swagger工具的项目)从ASP.NET Core Web API模板中移除,这意味着以后我们创建Web API项目的时候不会再自动生成Swagger API文档了。那么今天咱们一起来试试把我们…

第九章 范围管理 (2025年详细解析版)

目录什么是范围管理?9.1 管理基础9.1.1 产品范围和项目范围9.1.2 产品范围和项目范围管理新实践9.2 项目范围管理过程9.2.1 过程概述9.2.2 项目范围管理过程9.2.3 裁剪考虑因素(了解)9.2.4 敏捷与适应方法总结9.3 规划范围管理1. 课程目标2. 过程定义:规划范围管…

Qt监控系统远程网络登录/请求设备列表/服务器查看实时流/回放视频/验证码请求

一、前言说明 这几个功能是近期定制的功能,也非常具有代表性,核心就是之前登录和设备信息都是在本地,存放在数据库中,数据库可以是本地或者远程的,现在需要改成通过网络API请求的方式,现在很多的服务器很强大,都提供了各种API接口,包括登录和拉取回放等,相当于直接对接…

debian10测试

https://help.aliyun.com/zh/ecs/user-guide/change-debian-9-or-10-repository-addresses?spm=a2c4g.11186623.0.0.52c44bccrP9uFq