该方法使用命令导出和导入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_ci
为 utf8mb4_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_timeout
、interactive_timeout
两个变量,设置值为
wait_timeout=2880000 interactive_timeout = 2880000
如果没有这两个参数,直接添加即可
再找到max_allowed_packet
,增加这个变量的值,比如 100M (也可以设置自己需要的大小)
max_allowed_packet = 100M
max_allowed_packet
参数的作用是,用来控制其通信缓冲区的最大长度。
参考链接
- https://www.leevii.com/2017/03/lnmp-import-export-mysql.html
- https://www.wpdaxue.com/unknown-collation-utf8mb4_unicode_520_ci.html
- https://blog.csdn.net/hnlyyk/article/details/49299909