专栏首页AustinDatabasesMYSQL 8 数据导出导入怎么更快 与 阻止最大权限删库

MYSQL 8 数据导出导入怎么更快 与 阻止最大权限删库

MySQL 的数据导出导入其实从MYSQL 5.5 到 5.7 大部分采用的方法有如下几种

1 备份法,通过mydumper , mysqldump, mysqlpump 等方式将某个表的数据导出,在导入到目的端的的表种,但这样导出导入除了mydumper的速度上还比较快以外,其他mysqldump 的速度上是不敢恭维的,尤其导入数据的时候是比较慢的,并且导入数据的时候还会给复制造成压力,导致复制延迟等问题。

2 select into file and load data INFILE的方法,通过这样的方法是可以快速的将数据导入导出的。

但第二种方式的问题也是在于要使用客户端和服务器端的之间的数据流,添加服务器的负担,在大数据量的情况下,要考虑批量或者调整 group_replication_communication_max_message_size 的方法来进行限流的操作。当然还要考虑INDEX 是同时建立还是导入后在建立的问题等等。

3 整体表的卸载和加载,其实这个事情在MYSQL 5.X上就可以去做,但实际上是有一定的危险性的,而在MYSQL 8 以后整体的数据表的信息不再分别存放,FRM 文件已经是过去式,所以这样的操作就变得安全的多,同时这样的操作的速度也是最快的,避免了通过服务端将数据导入。

下面操作

1在目的端需要导入的库上创建同名的表

create table salaries (id int);

2在源端将表salaries 停止插入数据

FLUSH TABLES salaries FOR EXPORT;

3 拷贝数据到目的库

4 解锁源端的表的锁,让数据能正常插入

5 将文件import 到目的端

6 解锁目的端表

完成

看上去操作时比较方便的,但这里有几点需要注意,否则可能会酿成大祸

1 必须要使用FLUSH TABLES FOR EXPORT; 命令在源端,目的不仅仅是要阻止写入数据,并将脏页刷到数据文件中,更重要的是防止误操作 discard 将你的原表直接删除,那可是根本就找不回来的。

2 目的端的表必须和你的原表的字段数量和设置一致,可以去掉外键约束等,否则导入会失败

为什么要强调第一点,因为目前写如何快速导出MYSQL 数据的文字,我看基本上没有强调注意 discard 是直接将文件清理掉的(对于小白那是不负责的),并要操作者注意误操作会丢失元数据的问题,并且网上也有一部分人在问,我DISCARD 表后,怎么能恢复(就可见一般了)。

另外最近有人问我,他公司的开发的开发的MYSQL 数据库经常被莫名其妙的删库,虽然是测试库,但也着实要人讨厌,并且就算安装了审计也无可奈何,因为人家就是误操作了,你又能怎样, 这里教大家一个方法,让他纵使有ROOT的权限,也删除不了库。

方法就是在你要防止删库的数据文件夹下,放置一个文件,例如下面

删除会直接报错。

如果还能删除,我只能说他是“诚心诚意”的,那你该怎么和他去“真爱”,就怎么办吧

本文分享自微信公众号 - AustinDatabases(AustinDatabases)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数据库系统概述

    数据是数据库中存储的基本对象。描述事物的符号记录称为数据。数据是有结构的,记录是计算机中表示和存储数据的一种格式或一种方法。

    爱学习的孙小白
  • 基于数据库的分布式锁实现

    续上次用nginx搭建好反向代理负载均衡的俩个实例后,我在项目中关联了如下这张表:

    用户6055494
  • 【程序员软实力】如何构建?他坚持了2100多天,收获了这些心得

    导语 | 程序员的软实力体现哪些方面?技术输出对于程序员来讲,其意义有哪些?提升软实力的主要步骤是什么?坚持每天写作,对个人来讲,其挑战有哪些?如何平衡其与本质...

    TVP官方团队
  • 五分钟搞清楚MySQL事务隔离级别

    首先创建一个表 account。创建表的过程略过(由于 InnoDB 存储引擎支持事务,所以将表的存储引擎设置为 InnoDB)。表的结构如下:

    哲洛不闹
  • 数据库系统的特点

    爱学习的孙小白
  • 聊聊db和缓存一致性常见的实现方式

    数据存储在数据库中,为了加快业务访问的速度,我们将数据库中的一些数据放在缓存中,那么问题来了,如何确保db和缓存中数据的一致性呢?我们列出了5种方法,大家都了解...

    黄泽杰
  • Oracle 12C 最新补丁下载与安装操作指北

    上一篇安装文档中说过 Oracle 也有一份安装手册,虽是英文版但很是详细,很有参考意义,如下是官方地址可查看详细内容:https://docs.oracle....

    JiekeXu之路
  • 一日一技:如何正确获取 MongoDB 集合里面的最后一条数据

    在我们使用 Python 查询 MongoDB 的时候,一般会使用MongoDB 的集合(collection)对象的 find()方法或者find_one()...

    青南
  • 专家访谈 | 腾讯云数据库新特性揭秘

    本文为「3306π」成都站系列专访,本期专访嘉宾为腾讯云TXSQL数据库研发工程师赖铮。 ? 赖铮-腾讯 TXSQL数据库研发工程师 在即将举办的10月26日...

    腾讯云数据库 TencentDB
  • 使用Prometheus监控MySQL性能指标

    这里使用--web.listen-address=":9200"修改默认启动端口,防止跟上文中启动的服务器监控冲突。

    JAVA日知录

扫码关注云+社区

领取腾讯云代金券