mysql这个垃圾迁移数据费劲半天

mysql垃圾得很!  对于一些小系统还可以。大型系统自己找麻烦--必须有高昂的人工费!

没有高昂的人工(必须有好的程序员和工程师才能解决一些复杂的问题),构建基于大量数据的应用,非常麻烦。

而这些费用,如果用于采购oracle之类的,也许一次只要支付几个月人工就可以解决了。

例如用铁钎挖个小洞是不是很好用?还可以吧。

如果用铁钎挖一个10米深的石洞?可以吗?可以,不过你要付出很多的人工的!例如找很多工人,或者雇佣大力士之类的

俗话不会错的:便宜基本没有好货!

你所经常开发的应用都是基于互联网的吗?如果不是,那么需要谨慎考虑使用mysql

不过这些都是题外话,我们还是来说MYSQL的少量数据迁移吧!

 

mysql,对于dba而言非常麻烦,尤其是迁移数据的时候,如果数据是几百个G,或者上T之后。

就算不迁移几百个G,迁移几十个M的数据,也是颇为费劲!

--

它让我们非常想念oracle.

 

开发的时候,有一个要求,要传输20万数据。

用了source,一点也不好用! 各种设置还是和蜗牛差不多!(说实话,我对于mysql基本属于门外汉)

于是只好采用 select into + load data的方式

(版本 8.0.x)

不过在执行前,得先设置

secure_file_priv=''

这样设置的意思是,可以指定任意目录。

如果不再my.cnf等配置参数指定,则默认是NULL,表示不可以导出导入。

 

secure_file_priv得官方解释是:

The secure_file_priv system variable limits import and export operations to a specific
directory. Create a directory whose location can be specified as the value of that variable:
mkdir mysql-files
Grant directory user and group ownership to the mysql user and mysql group, and set the
directory permissions appropriately:
chown mysql:mysql mysql-files
chmod 750 mysql-files

 

这个参数的作用类似于oracle的directory概念,不过oracle这个值是非常灵活的。

配置好之后:

源库:

SELECT * INTO OUTFILE  '\data\dump\data.txt' FIELDS TERMINATED BY ',' FROM c117_scores;

目标库:

LOAD DATA INFILE 'e:\\temp\\data.txt' INTO TABLE c117_scores FIELDS TERMINATED BY ',';

速度是快了不少!

--

所以迁移几个表的时候得准备一套脚本,否则让您够受得!

导入几张表的数据,在开发和维护中是很常见的!

可以考虑开发一个小工具用于迁移!不过好像navicate,sqlyog有类似功能!

但依然不够好用,这种专业工具最好稍微配置下,可以批处理执行!

 

posted @ 2021-03-27 23:16  正在战斗中  阅读(193)  评论(0编辑  收藏  举报