方法有很多,此处只讲使用mysql-client的命令工具:
mysqldump
相同的客户端导一般都没有什么问题,但是今天用mysql8导出mysql5.7的库时,出现一个问题
重点信息
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
这个脚本有处理这几个事情:
1、mysqldump导出,-R 是包含存储过程和函数哦
2、通过指定配置文件的方式--defaults-extra-file,该配置必须做为第一个配置项参数
3、根据时间生成历史备份文件
4、只保留最近的14条历史备份文件
弄成shell做个cron就可以定时备份啦。
手动运维大师又进阶了一分
补充一下导入。
拿到该文件如果需要导入,需要解压,解压为.sql文件后,即可登录导入。
通过mysql命令行进入mysql服务
use <database>;
source xxxx.sql;
之后就可以导入了,导出的脚本中不包含创建database命令。