方法有很多,此处只讲使用mysql-client的命令工具:
mysqldump

相同的客户端导一般都没有什么问题,但是今天用mysql8导出mysql5.7的库时,出现一个问题
1589182949045.jpg

重点信息

Unknown table 'COLUMN_STATISTICS' in information_schema (1109)

当然来不及想太多,网上的解决方案就是手动指定该配置项

当然后面还发现一个警告

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

查询后发现可以通过手动指定ext-file的方式

加上之后,恩,又发现一个新问题

mysqldump: [ERROR] unknown variable 'defaults-extra-file=./newland.cnf'.

恩,当然google之后就是该配置要放到首位

当然,此处福利就是放一个备份的脚本

#!/bin/bash
# Name:
# This is a ShellScript For Auto DB Backup and Delete old Backup
#
backupdir=/opt/db/newland
time=` date +%Y%m%d%H `
mysqldump --defaults-extra-file=./newland.cnf --column-statistics=0 -h127.0.0.1  --set-gtid-purged=OFF -R newland | gzip > $backupdir/newland$time.sql.gz
#
find $backupdir -name "newland*.sql.gz" -type f -mtime +14 -exec rm {} \; > /dev/null 2>&1

1589183814076.jpg
这个脚本有处理这几个事情:
1、mysqldump导出,-R 是包含存储过程和函数哦
2、通过指定配置文件的方式--defaults-extra-file,该配置必须做为第一个配置项参数
3、根据时间生成历史备份文件
4、只保留最近的14条历史备份文件

弄成shell做个cron就可以定时备份啦。
手动运维大师又进阶了一分

补充一下导入。
拿到该文件如果需要导入,需要解压,解压为.sql文件后,即可登录导入。
通过mysql命令行进入mysql服务

use <database>;
source xxxx.sql;

之后就可以导入了,导出的脚本中不包含创建database命令。