liunx服务器mysql定时备份
-
创建脚本,文件路径:/usr/sbin/bakmysql.sh
#!/bin/bash # DATE=`date +%Y%m%d%H%M` #every minute DATABASE=wechat #database name DB_USER=root #database username DB_PASS="密码" #database password BACKUP=/mnt/data/back/mysqldata #backup path DATE=`date +%Y%m%d%H%M` #every minute #backup command #测试 #/usr/bin/mysqldump -uroot -p"密码" -h 127.0.0.1 -R --opt $DATABASE |gzip > /mnt/data/back/mysqldata\/ei_2018061303.sql.gz /usr/bin/mysqldump -u$DB_USER -p$DB_PASS -h 127.0.0.1 -R --opt $DATABASE |gzip > ${BACKUP}\/${DATABASE}_${DATE}.sql.gz #just backup the latest 5 days #测试:find /data/bak/mysqldata -name "ei_*.sql.gz" -type f -mtime +5 -exec rm {} \; > /dev/null 2>& find ${BACKUP} -name "${DATABASE}_*.sql.gz" -type f -mtime +5 -exec rm {} \; > /dev/null 2>&1
-
测试脚本 : sh /usr/sbin/bakmysql.sh
-
添加可执行权限:chmod u+x /usr/sbin/bakmysql.sh
-
查看权限 ls -l bakmysql.sh
-
设置定时任务
添加任务: crontab -e00 03 * * * /usr/sbin/bakmysql.sh
查看任务:crontab -l
mysqldump使用详解
- 参考
-A 备份所有的database -B 备份哪几个数据库 -R 备份存储过程(-- routines) -E 备份定时任务(-- events) -d 只备份表结构 -w 备份过滤数据 -t 只备份数据 -q 直接读数据,绕过缓冲池,默认已加 --triggers 备份触发器 --master-data=2 在备份文件中以注释的形式记录备份开始时binlog的position,默认值是1,不注释 tips: ①--set-gtid-purged=OFF 如果实例开了gtid最好加上这个参数,不然备份时候会报warning,且备份出来的数据恢复到其他版本的实例上会报错:A partial dump from a server that has GTIDs is not allowed. ②--dump-slave,该参数可以用作在从库做备份获取主库的位置点,来做一个新从库,避免在主库做备份影响业务,带该参数备份时,从上sql线程会被kill,备份完再拉起