当前位置: DB社区 > 02-mysql > 阅读正文

mysql 数据库迁移

2020.12.29.   670 次   1238字

1.注意事项

导入导出先别删库,导完后看看是否报错,mysql 的迁移很容易报错

新旧数据库设置相同的“字符集”

2.导出旧数据库

首先,你应该先使用 cmd 登录 mysql ,查看要导出的数据库的编码格式

( address 是远程 ip 地址,此时才需要 -h ,本机不要加 -h,不要 localhost)

( -P 是端口,-u 是账号,-p 是密码,注意空格规范如下)

(需要配置 Path ,否则你需要先进入mysql的bin目录下才可执行该命令)

mysql -h address -P 3306 -u root -p123456

按照前面的方法,查看数据库 “原本的编码格式” ,等会最好以这个编码导出

接着,使用 mysqldump 导出数据库(也需要配置 path,这里不赘述)

(其中的 -h 与 address 是远程地址,-P是端口,-u 与 -p 是密钥)

( –default-character-set 是导出的编码格式,mytest数据库名,后存放位置)

mysqldump -haddress -P3306 -uroot -p123456 --default-character-set=utf8mb4 mytest > D:\MyDesk\mytest.sql

(命令行导出,看似没问题,但导入时报错多,推荐使用工具导出,如 navicat)

(navicat 连接后,选中对应的数据库,点击右键导出结构和数据,也很方便)

(navicat 导出后的数据,导入时报错少,原因自己猜。。。。。。。。。)

3.数据导入看是否本地数据库,因为云数据库需要先进行远程连接

使用 cmd 登录 mysql ,操作和前面一样

mysql -h address -P 3306 -u root -p123456

这次我们使用 source 命令导入数据(可以实时观察导入结果)

首先设置数据库编码(确保和导入sql编码一致,假设为 utf8mb4)

(您必须先设置编码,再创建数据库,否则编码不生效)

(或者在创建后,使用 alter 命令强制修改)

set names utf8mb4;
set character_set_database = utf8mb4;
set character_set_server = utf8mb4;

创建一个新的数据库

create database mytest;

使用该数据库

use mytest;

使用 source 命令导入(该命令在一些软件中不可用,请在 cmd 或终端使用)

source D:\MyDesk\mytest.sql;

( 即使小心翼翼,导入可能还是会有错误,建议使用 “导入工具” 导入数据库)

4.为什么导入还是有错误?

一般来说,数据库中有很多表,可能没个表都用了不同的字符集,整个数据库设置统一编码导出其实是有问题的,你需要仔细、谨慎的进行数据迁移操作。

导入的数据,与你导出的数据有很大的关系,导出不正确,就很容易导不进去。

导出时,推荐使用 navicat 工具;导入时,使用宝塔面板导入,几乎不报错。

5.还有什么更好的办法?

安装数据库时,首要就是设置编码

尽量不迁移,可以使用云数据库统一管理(内网速度不错,外网就算了)

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群