75142913在线留言
我使用的Mysql大量数据迁移方案_服务器与网络_网络人

我使用的Mysql大量数据迁移方案

Kwok 发表于:2020-02-02 20:02:13 点击:55 评论: 0

当数据量比较少的时候,我直接通过PHPMYADMIN或者命令导出SQL文件,然后上传恢复的方案,但是当数据量达到TB级,这个方案就完全不可行了。

搬数据库是一个很麻烦的工作,经过很多次的实践,我总结出来了一个高效的方案。

首先开放源服务器的远程数据库访问权限,帐号的HOSTNAME为%,防火墙开放数据库端口。

然后在新服务器执行以下命令:

mysqldump -uroot -p -h 源服务器IP DBname  TableName1 > TableName1.sql

确保ROOT用户或者数据库用户有远程访问权限(hostname=%);要不然会出现以下错误:

mysqldump: Got error: 1045: Access denied for user 'root'@'192.168.1.6' (using password: YES) when trying to connect

 -p后面也可以带上密码,用于执行多条命令,但是会出现一个警告:

mysqldump: [Warning] Using a password on the command line interface can be insecure.

这只是一个警告信息,并不影响数据的正常导出。

如果我们有多个表导出,这样一行一样的写太麻烦了。我们可以合并执行语句:

mysqldump -uroot -p -h 源服务器IP DBname  TableName1 > TableName1.sql&&mysqldump -uroot -p -h 源服务器IP DBname  TableName2 > TableName2.sql&&mysqldump -uroot -p -h 源服务器IP DBname  TableName3 > TableName3.sql&&mysqldump -uroot -p -h 源服务器IP DBname  TableName4 > TableName4.sql&&...

大量数据直接使用分表操作。我们直接分表导出即可。

如果使用MYSQL8.0+的版本,会出现以下错误:

Unknown table 'COLUMN_STATISTICS' in information_schema (1109)

我们需要在此处需要添加新参数--column-statistics=0,格式如下:

mysqldump --column-statistics=0 -uroot -p -h 源服务器IP DBname  TableName1 > TableName1.sql

假设我们有100个表需要导出,你可以发现部分文件已生成,我们可以进入这个目录下,使用导入命令:

mysql -uroot -p
use DBname;
source TableName1.sql;

DBname 是你的数据库名字,TableName1.sql是导出的文件名字。需要先进入这个目录。然后再连接Mysql才能这样导入,要不然请使用绝对命令。

除非注明,网络人的文章均为原创,转载请以链接形式标明本文地址:https://www.55mx.com/post/62
29
感谢打赏!

《我使用的Mysql大量数据迁移方案》的网友评论(0)

本站推荐阅读

热门点击文章