LNMP命令导出/导入MySQL数据库

该方法使用命令导出和导入MySQL数据库,适用于数据库过大,无法在phpmyadmin使用浏览器或后台上传导入。

导出MySQL数据库
原服务器定位到根目录:

mysqldump -u数据库用户名  -p数据库密码 --add-drop-table --complete-insert 数据库名 | gzip > database_bak.sql.gz

database_bak.sql.gz默认生成在root目录下,可用ls命令查看。

导入MySQL数据库
新服务器新建相同数据库名,用户名及密码,定位到根目录:

先使用wget或者scp等方法下载原服务器上的database_bak.sql.gz文件到新服务器。

1.解压缩

gzip -d database_bak.sql.gz

2.导入

mysql -u数据库用户名 -p数据库密码 数据库名 < database_bak.sql --default-character-set=utf8

可能出现的问题
1.如果导入时提示Unknown collation: 'utf8mb4_unicode_520_ci',原因是数据库版本差异,导致wordpress数据库的编码整理方式不一样。MySQL 5.6 以及以上版本下,安装 WordPress 4.6 及以上版本的时候,默认的编码整理方式为 utf8mb4_unicode_520_ci,但是 MySQL 5.5 及以下版本的数据库,不支持 utf8mb4_unicode_520_ci,所以无法导入。处理的办法,就是使用 sublime text 等代码编辑器,打开 .sql 数据库,然后批量查找替换所有的 utf8mb4_unicode_520_ciutf8mb4_unicode_ci 后再执行导入。

sed -i "s/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g" database_bak.sql

2.MySQL 错误 server has gone away
这是数据库太大,缓存不够或操作超时导致的,可以修改下 mysql 的配置来解决:

打开配置文件(这里演示的是军哥的LNMP下的配置文件,如果你的路径不是这个,自己找到)

vi /etc/my.cnf

找到 wait_timeoutinteractive_timeout 两个变量,设置值为

wait_timeout=2880000
interactive_timeout = 2880000

如果没有这两个参数,直接添加即可
再找到max_allowed_packet,增加这个变量的值,比如 100M (也可以设置自己需要的大小)

max_allowed_packet = 100M

max_allowed_packet 参数的作用是,用来控制其通信缓冲区的最大长度。

参考链接