前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MYSQL 8 数据导出导入怎么更快 与 阻止最大权限删库

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

作者头像
AustinDatabases
发布2019-11-09 19:33:27
1.2K0
发布2019-11-09 19:33:27
举报
文章被收录于专栏:AustinDatabasesAustinDatabases

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的权限,也删除不了库。

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

删除会直接报错。

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档