当前位置: 首页 > news >正文

MySQL大表直接复制文件的copy方式

看腻了就来听听视频演示吧:https://www.bilibili.com/video/BV1Bp4y1F7kd/

  • MyISAM引擎可单独将 *.MYD和 *.MYI 拷贝到远程服务器上
  • InnoDB引擎受限于版本(MySQL5.5)无法直接拷贝.ibd文件,因为在ibdata1文件保存有表的字典信息,在ibd文件保存有事务ID和日志序列号,只能用dump方式。

操作步骤:

  • 获取备份表DDL,统计数据集(用于恢复后校样)
  • 锁表,导出表对应的数据字典文件
  • 备份表对应的数据文件和数据字典文件
  • 解锁,恢复表的相关业务操作
  • 在恢复环境上创建该表DDL(测试演练在同一环境故先删表再重建该表)
  • 关闭该表的数据空间,即会删除该表的ibd数据文件
  • 将备份数据文件和数据字典文件copy到对应数据目录下
  • 应用表空间恢复数据并进行恢复后检查
  • 验证恢复的数据集

直接上案例模拟演示:

# MySQL 6+ 可以直接拷贝的前提条件是独立表空间,即innodb_file_per_table=1
mysql> show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+# 查看测试表DDL
mysql> show create table t12\G
*************************** 1. row ***************************Table: t12
Create Table: CREATE TABLE `t12` (`pid` bigint(20) unsigned NOT NULL DEFAULT '0',`pname` varchar(20) DEFAULT NULL,`project` varchar(20) DEFAULT NULL,`tvalue` decimal(5,2) DEFAULT NULL,`unit` varchar(8) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
# 查看测试表数据
mysql> select * from t12;
+-----+--------+---------+--------+------+
| pid | pname  | project | tvalue | unit |
+-----+--------+---------+--------+------+
|   1 | 王五   | 身高    | 172.34 | cm   |
|   2 | 王五   | 体重    |  69.52 | kg   |
|   3 | 王五   | 年龄    |  22.00 | 岁   |
|   4 | 赵六   | 身高    | 170.52 | cm   |
|   5 | 赵六   | 体重    |  80.52 | kg   |
|   6 | 赵六   | 年龄    |  26.00 | 岁   |
+-----+--------+---------+--------+------+
6 rows in set (0.00 sec)# 表加全局读锁,即把.cfg数据字典文件导出到磁盘上
mysql> flush tables t12 for export;
Query OK, 0 rows affected (0.00 sec)# 拷贝数据目录对应库名下的 t12.ibd 和 t12.cfg文件,然后修改属性
[root@db01 mdb]# mkdir /tmp/mysql_back
[root@db01 mdb]# ll t12.*
-rw-r----- 1 mysql mysql   585 Sep  2 16:16 t12.cfg
-rw-r----- 1 mysql mysql  8690 Sep  2 16:11 t12.frm
-rw-r----- 1 mysql mysql 98304 Sep  2 16:11 t12.ibd
[root@db01 mdb]# cp t12.ibd /tmp/mysql_back
[root@db01 mdb]# cp t12.cfg /tmp/mysql_back
[root@db01 mdb]# chown -R mysql.mysql /tmp/mysql_back/t12.*
[root@db01 mdb]# ll /tmp/mysql_back/t12.*
-rw-r----- 1 mysql mysql   585 Sep  2 16:18 /tmp/mysql_back/t12.cfg
-rw-r----- 1 mysql mysql 98304 Sep  2 16:18 /tmp/mysql_back/t12.ibd# 解锁,模拟删表
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)
mysql> drop table t12;
Query OK, 0 rows affected (0.00 sec)
# 创建原表结构
mysql> CREATE TABLE `t12` (->   `pid` bigint(20) unsigned NOT NULL DEFAULT '0',->   `pname` varchar(20) DEFAULT NULL,->   `project` varchar(20) DEFAULT NULL,->   `tvalue` decimal(5,2) DEFAULT NULL,->   `unit` varchar(8) DEFAULT NULL-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.01 sec)# 关闭表的数据空间并会删除其数据文件t12.ibd
mysql> alter table t12 discard tablespace;
Query OK, 0 rows affected (0.01 sec)# 再把备份的t12.ibd 和 t12.cfg文件拷贝过来
[root@db01 mdb]# mv /tmp/mysql_back/t12.cfg .
[root@db01 mdb]# mv /tmp/mysql_back/t12.ibd .
[root@db01 mdb]# ll t12.*
-rw-r----- 1 mysql mysql   585 Sep  2 16:18 t12.cfg
-rw-r----- 1 mysql mysql  8690 Sep  2 16:26 t12.frm
-rw-r----- 1 mysql mysql 98304 Sep  2 16:18 t12.ibd# 应用表空间恢复数据并进行恢复后检查
mysql> alter table t12 import tablespace;
Query OK, 0 rows affected (0.01 sec)
mysql> check table t12;
+---------+-------+----------+----------+
| Table   | Op    | Msg_type | Msg_text |
+---------+-------+----------+----------+
| mdb.t12 | check | status   | OK       |
+---------+-------+----------+----------+
1 row in set (0.00 sec)# 验证数据是否恢复回来
mysql> select * from t12;
+-----+--------+---------+--------+------+
| pid | pname  | project | tvalue | unit |
+-----+--------+---------+--------+------+
|   1 | 王五   | 身高    | 172.34 | cm   |
|   2 | 王五   | 体重    |  69.52 | kg   |
|   3 | 王五   | 年龄    |  22.00 | 岁   |
|   4 | 赵六   | 身高    | 170.52 | cm   |
|   5 | 赵六   | 体重    |  80.52 | kg   |
|   6 | 赵六   | 年龄    |  26.00 | 岁   |
+-----+--------+---------+--------+------+
6 rows in set (0.00 sec)

MySQL的binlog系列和奇技操作:

先来聊聊MySQL的binlog文件解析
接着说说mysqlbinlog解析工具如何做数据恢复
再来谈谈如何从binlog文件恢复误update的数据,模拟Oracle的闪回功能
接着聊聊如何从binlog文件恢复误delete的数据,模拟Oracle的闪回功能
借用binlog2sql工具轻松解析MySQL的binlog文件,再现Oracle的闪回功能
再来介绍另一个binlog文件解析的第三方工具my2sql
顺带来聊聊MySQL误删ibdata数据文件的恢复
MySQL大表直接复制文件的copy方式

相关文章:

MySQL大表直接复制文件的copy方式

看腻了就来听听视频演示吧:https://www.bilibili.com/video/BV1Bp4y1F7kd/ MyISAM引擎可单独将 *.MYD和 *.MYI 拷贝到远程服务器上InnoDB引擎受限于版本(MySQL5.5)无法直接拷贝.ibd文件,因为在ibdata1文件保存有表的字典信息&…...

Redis-集群

Redis-集群 主从复制和哨兵只能在主节点进行写数据,从节点读取数据,因此本质上,是进行了读写的分离,每个节点都保存了所有的数据,并不能实现一个很好的分布式效果。 1.哈希求余算法 假设有N台主机,对每台…...

使用CrawlSpider爬取全站数据。

CrawpSpider和Spider的区别 CrawlSpider使用基于规则的方式来定义如何跟踪链接和提取数据。它支持定义规则来自动跟踪链接,并可以根据链接的特征来确定如何爬取和提取数据。CrawlSpider可以对多个页面进行同样的操作,所以可以爬取全站的数据。CrawlSpid…...

【JUC】Java并发编程从挖坑到入土全解(4-一文讲通LockSupport与线程中断->长图预警)

目录 LockSupport与线程中断 线程中断机制 什么是中断机制? 与中断相关的3个API 如何停止中断运行中的线程? 当前线程的中断标识为true,是不是线程就会立刻停止? 如何理解静态方法Thread.interrupted() LockSupport是什么…...

Springboot学习笔记——3

Springboot学习笔记——3 一、热部署1.1、手动启动热部署1.2、自动启动热部署1.3、热部署范围配置1.4、关闭热部署 二、配置高级2.1、第三方bean属性绑定2.2、松散绑定2.3、常用计量单位应用2.4、bean属性校验2.5、进制数据转换规则 三、测试3.1、加载测试专用属性3.2、加载测试…...

jupyter 切换虚拟环境

当前只有两个环kernel 我已经创建了很多虚拟环境,如何在notebook中使用这些虚拟环境呢?请看下面 比如说我要添加nlp 这个虚拟环境到notebook中 1. 切换到nlp环境 2. 安装如下模块 pip install ipykernel 3. 执行如下命令 python -m ipykernel install …...

如何在Apache和Resin环境中实现HTTP到HTTPS的自动跳转:一次全面的探讨与实践

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...

安全防御—密码学

1. 什么是APT? APT(Advanced Persistent Threat)是指高级持续性威胁,本质是针对性攻击。 利用先进的攻击手段对特定目标进行长期持续性网络攻击的攻击形式,APT攻击的原理相对于其他攻击形式更为高级和先进,…...

灯具从深圳寄国际物流到墨西哥

在国际贸易的日益频繁的今天,越来越多的企业开始将产品销往海外市场。然而,如何将这些产品安全、快速地送达目的地,成为了每个企业都需要面对的问题。对于灯具这种重量大、体积大的物品来说,如何选择合适的国际物流方式&#xff0…...

spark3使用hive zstd压缩格式总结

ZSTD(全称为Zstandard)是一种开源的无损数据压缩算法,其压缩性能和压缩比均优于当前Hadoop支持的其他压缩格式,本特性使得Hive支持ZSTD压缩格式的表。Hive支持基于ZSTD压缩的存储格式有常见的ORC,RCFile,Te…...

直线导轨精度等级在设备中有什么影响?

直线导轨的精度选择是直线导轨应用中的重要环节,需要根据具体的应用场景和设备要求来选择合适的精度等级(常见分3个等级:N/H/P)。下面我们来详细了解一下直线导轨的精度选择。 1、精度等级的概念:直线导轨的精度等级是…...

windows平台FairMOT的实现

环境:python3.6pytorch1.1.0torchvision0.3.0cuda9.2vs2015 该项目需要装3个c库(dcn_v2,apex,cython_bbox)特别坑,各种环境不匹配,各种bug。本人c小白,但是一路摸索总算成功了。下面…...

系统架构设计:12 论软件维护方法及其应用

目录 一 软件维护方法 1 影响软件维护工作的因素 2 软件维护类型 (1)正确性维护...

SS命令使用介绍

ss 一. 命令介绍 先使用手册查看命令介绍信息 NAME ss - another utility to investigate sockets DESCRIPTION ss is used to dump socket statistics. It allows showing information similar to netstat. It can display more TCP and state informations than other tools.…...

让你的对象变得拗口:JSON.stringify(),我把对象夹进了 JSON 魔法帽!

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 引言 1. JSON.stringify() 属性 replacer …...

TDengine时序数据库学习使用

数据库要求: 1.目前服务器只能在linux运行,先安装服务器版本v1 2.下载与v1完全匹配的客户端版本v1(客户端与服务器的版本号不匹配可能访问不了服务器) 第一步 安装 安装服务器注意,安装教程: 使用安装…...

算法通过村第十三关-术数|青铜笔记|数字与数学

文章目录 前言数字统计专题符号统计阶乘0的个数 溢出问题整数反转字符串转整数回文数 进制专题七进制数进制转换 总结 前言 提示:生活是正着来生活,倒着去理解。 --戴维迈尔斯《社会心理学》 数学是学生时代掉头发的学科,那算法是毕业后掉头发…...

【SpringMVC篇】详解SpringMVC入门案例

🎊专栏【SpringMVC】 🍔喜欢的诗句:天行健,君子以自强不息。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 文章目录 🎍SpringMVC简介⭐优点 🌺SpringMVC入门…...

Programming abstractions in C阅读笔记:p166-p175

《Programming Abstractions In C》学习第58天,p166-p175总结。 一、技术总结 1.斐波那契数列(Fibonacci Sequenc) (1)斐波那契数列来源 斐波那契数列来自于《Liber Abaci》一书里兔子繁殖问题,相关资料很多,这里不赘述。 (2)关于《Libe…...

【List-Watch】

List-Watch 一、定义二、工作机制三、调度过程 一、定义 Kubernetes 是通过 List-Watch 的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件,向 APIServer 发送命令,在 …...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则&#xf…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

git: early EOF

macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...

数据库正常,但后端收不到数据原因及解决

从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...

在Spring Boot中集成RabbitMQ的完整指南

前言 在现代微服务架构中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个流行的消息中间件,支持多种消息协议,具有高可靠性和可扩展性。 本博客将详细介绍如何在 Spring Boot 项目…...