MySQL 几种导数据的方法与遇到的问题

零、说在前面

        MySQL导数据通常使用第三方工具和MySQL自身的工具,本文分别就这两类方法分别介绍。

一、第三方工具之 Navicat

1.1、Navicat的“数据传输”工具

        打开Navicat,点击“工具”标签,找到“数据传输”,即可看到操作界面。这里不对这个工具本身做过多介绍,侧重点在于工具中的一些配置选项的含义的介绍上。如下图所示

        上图的传输选项选择好之后,点击下一步,看到如下界面。然后根据需要选择传递哪些表或哪些对象。选好后点击“下一步”

        以传输单表举例。选中左侧的某个表,然后可以在右侧看到“高级”选项,这里重点说一下高级选项中的一些参数

       点击“下一步”开始数据传输阶段,如果一切顺利,那么过一段时间传输就完成了。

1.2、感想

        上图中的“对每个记录集使用事务”勾选项,个人认为不会对数据源库有太大影响,仅仅当目标库开启了binlog后,才会对目标库有影响。众所周知有许多条件会个触发binlog写入磁盘,而完成一次事务也是触发条件之一。因此当这个选项被勾选后,那么我理解每一条插入语句都会被包装成一个事物,那么就会造成频繁的写binlog进而造成过多的IO开销,但好处就是不会造成关键数据的丢失。所以根据数据的重要程度来决定是否勾选这个选项吧。

二、MySQL自身工具之 mysqldump

2.1、使用方法

        linux 操作系统下,通常会使用mysqldump 这种基于数据的逻辑备份方式来导出数据,此方法在恢复数据阶段的速度不是很快,但胜在稳定而且备份的文件是基于数据的,所以能不受数据库引擎影响。

        导库命令格式为 "mysqldump -u登录名 -p 库名  > 路径 文件名";导表与导库方式的区别在于需要加上表名,命令格式为 "mysqldump -u登录名 -p 库名 表名 > 文件期望保存的路径 文件名",如下图所示

        上图中的导出数据的命令本身沒有什么可说的,只要命令正确就能导出成功。上图中有一点要说的就是我在导出命令前还加了一个 time 命令,目的是查看操作过程中的耗时情况。当导出操作成功后,会看到如上图下面三行所示的内容,其含义分别是 

real: 实际用时,即从命令开始到命令结束的总用时,包括所有进程执行和阻塞等待的时间
user: 用户进程的CPU用时
sys:  CPU内核中执行系统命令调用花费的时间

        当需要使用导出的文件进行数据恢复数据时的命令不再区分全库导入还是单表导入,命令都是 "mysql -u登录名 -p 库名 < 文件路径 文件名 ",成功之后会在库中看到最新的数据,如下图所示

2.2、加快dump导数据的速度

        如果MySQL打开了二进制日志,那么必然会影响写入速度,因此可以临时修改binlog的模式。关于binlog的一些原理,我将在稍后另开帖子补完。这里只说做法。

        第一,将 innodb_flush_log_at_trx_commit 参数从默认值1改为0。其含义是把数据库操作写入binlog 和 将数据写入磁盘的频率固定为一秒一次,且不受数据库操作是否含有事务的影响。

        第二,将 sync_binlog 参数设置为0,此时 数据库操作写入binlog文件和写入磁盘的频率受操作系统控制,不受数据库操作次数阈值的控制。

三、遇到的问题

3.1、磁盘空间不足

        我在使用mysqldump导入单表的数据时,发现很久很久都没有动静,其耗时远高于导出数据用时,可以在MySQL的命令行中执行 "SHOW PROCESSLIST" 命令,如下图所示

        在三次执行show processlist 命令后,观察这几次time字段的值,不难发现的一个insert 语句消耗了太多的时间却毫无进展。可以确认的是这个插入语句没有什么特殊考虑应该是某个环节出现了问题。

        通过排查发现原来是存储空间满了。解决方法见我的 VMWare虚拟机扩容并挂载磁盘 帖子扩容即可解决 ,此处就不再赘述了。

        此外,除了使用“show processlist”命令查看之外,还可以通过使用 "show status" 命令查看收发的数据量增幅大小来判断任务是否有进展。如下图所示

        需要注意的地方在于,做查询条件的参数名一定要用大写,切切!

3.2、字符集编码不一致 

       目前常用的MySQL版本多为5.7和8.0。其中5.7的编码默认为 latin1,而8.0及以后默认的utf-8编码是 utf8mb4。因此需要在互导数据之前确认一下源头与目标的字符集是否統一。同时建议新建数据库最好都使用 utf8mb4 编码。

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

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

相关文章

AI究竟能提升多少效率?哈佛已揭秘量化结果

在工作中使用AI可以带来工作效率的显着的改善。使用AI的被测试者比没有使用AI的被测试者平均多完成了 12.2% 的任务&#xff0c;完成任务的速度提高了 25.1%&#xff0c;并且产生的结果质量提高了 40%。大型语言模型&#xff08;LLM&#xff09;的公开发布引发了人们对人工智能…

Linux文件管理命令

Linux命令行 命令空格参数(可写可不写)空格文件(可写可不写)ls/opt 根目录下的opt文件夹ls-a 显示所有文件及隐藏文件/optls -l 详细输出文件夹内容 ls -h 输出文件大小(MB...)ls--full-time 完整时间格式输出ls-d 显示文件夹本身信息&#xff0c;不输出内容ls-t 根据最后修改…

mysql redo 日志 、 undo 日志 、binlog

事务四大特性 ACID 原子性 、一致性、隔离性、持久性 事务的隔离性由锁机制实现 事务的原子性、一致性、持久性由事务的redo 日志 和 undo 日志 保证 **redo log **是事务持久性的保证 undo log 是事务原子性的保证 redo log 是存储引擎层&#xff08;innodb&#xff09;生成…

Pytorch实现的LSTM、RNN模型结构

一、LSTM模型 import torch from torch import nn import torchvision.datasets as dsets import torchvision.transforms as transforms import matplotlib.pyplot as plttorch.manual_seed(1)# Hyper Parameters EPOCH 1 # 训练整批数据多少次, 为了节约时间, 我们…

BMS电池管理系统的蓝牙芯片 国产高性能 低功耗蓝牙Soc芯片PHY6222

电池管理系统是对电池进行监控与控制的系统&#xff0c;将采集的电池信息实时反馈给用户&#xff0c;同时根据采集的信息调节参数&#xff0c;充分发挥电池的性能。但是&#xff0c;前技术中&#xff0c;在管理多个电池时&#xff0c;需要人员现场调试与设置&#xff0c;导致其…

科学家首次为地球“全面体检”;国产光刻机或系误传;推特或将按月收费丨RTE开发者日报 Vol.52

开发者朋友们大家好&#xff1a; 这里是「RTE 开发者日报」&#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…

【Linux初阶】信号入门2 | 信号阻塞、捕捉、保存

文章目录 ☀️前言☀️一、信号阻塞&#x1f33b;1.信号其他相关常见概念&#x1f33b;2.信号在内核中的表示 ☀️二、信号捕捉&#xff08;重点&#xff09;&#x1f33b;1.用户态 & 内核态&#x1f33b;2.如何判断进程处于用户态或内核态&#x1f33b;3.OS接口的访问方法…

uniapp——生成一个签字板

在开发项目中有签名/签字的需求&#xff0c;以下实现&#xff1a; <template><view class"new_file" v-if"showAutograph"><view class"popupBox"><view class"popupTopBox">签字板</view><canvas c…

分布式id的概述与实现

文章目录 前言一、分布式id技术选型二、雪花算法三、在项目中集成雪花算法 前言 随着业务的增长&#xff0c;数据表可能要占用很大的物理存储空间&#xff0c;为了解决该问题&#xff0c;后期使用数据库分片技术。将一个数据库进行拆分&#xff0c;通过数据库中间件连接。如果…

QT-day1

实现华清远见登陆界面 #include "mywnd.h" #include <iostream> #include <QDebug> #include <QPushButton> #include <QLineEdit> #include <QLabel>MyWnd::MyWnd(QWidget *parent): QWidget(parent) {//设置固定窗口大小长400&…

大数据-玩转数据-oracel字符串分割转化为多列

一、建表 create table split_string_test(id integer primary key,test_string varchar2(500) );二、插入测试数据 insert into split_string_test values(1, 10,11,12,13,14,22); insert into split_string_test values(2, 22,23,24); insert into split_string_test valu…

Discuz论坛网站首页窄屏自定义宽度修改教程

discuz论坛管理中心默认有窄屏和宽屏的选择&#xff0c;窄屏默认是960px宽度&#xff0c;很多论坛为了页面美观&#xff0c;基本都是1200px的宽度&#xff0c;如何修改DZ论坛首页窄屏宽度大小的呢&#xff1f;今天飞飞和你们分享。 1、在网站根目录中依次打开文件 /template/de…