Linux下实现mysql数据库每天自动备份
Linux下实现mysql数据库每天自动备份 1、基本操作步骤 a、创建备份目录 mkdir -m 777 /home/wwwroot/backup b、创建备份脚本sh vim /home/wwwroot/backup/sqlback.sh mysqldump -uroot -p123456 databasename | gzip > /home/wwwroot/backup/sql/databasename_$(date +%Y%m%d).sql.gz c、设置脚本权限为可执行 chmod 777 /home/wwwroot/backup/sqlback.sh d、创建计划任务 vim /var/spool/cron/root 10 2 * * * /home/wwwroot/backup/sqlback.sh e、查看计划任务执行日志 tailf /var/log/cron d、删除7天前的备份数据 find /home/wwwroot/backup/sql/ -mtime +7 -name "*.sql.gz" -exec rm -rf {} \; 2、mysqldump命令 a、只导出数据库表结构 mysqldump -h主机 -P端口 -u用户 -p密码 -d 数据库名 > 备份存储路径 b、导出数据库表结构及数据 mysqldump -h主机 -P端口 -u用户 -p密码 数据库名 > 备份存储路径 备注:密码有特殊字符例如:!@#时候可以变成\!\@\# (特殊字符转义一下) 3、crontab定时任务 a、crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务 b、任务调动有两类:系统任务调动和用户任务调动 系统任务调动:/etc/crontab文件 (创建命令时需要在5个8之后加上root command) 用户任务调动:/var/spool/cron文件夹中创建以用户组命名的文件(root或者userxxx) (执行命令时可不加用户名) 任务调动格式: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * command c、crontab服务操作 service crond start //启动服务 service crond stop //关闭服务 service crond restart //重启服务 service crond reload //重新载入配置 service crond status //启动服务 4、删除7天前的备份数据 find /home/wwwroot/backup/sql/ -mtime +7 -name "*.sql.gz" -exec rm -rf {} \; a、/home/wwwroot/backup/sql/ 想要清理的目录 b、-mtime 标准语句写法 c、+7 查找7天前的文件 d、-name 标准语句写法 e、"*.sql.gz" 查找文件后缀是以.sql.gz结束的所有文件 f、-exec 标准语句写法 g、rm -rf 强制删除文件,包括目录 h、{} \; 标准语句写法 5、10 2 * * * /home/wwwroot/backup/sqlback.sh > /home/wwwlogs/cron 2>&1 此处只解释:2>&1 标准错误2输出重定向到标准输出1
备注:MySQL 5.6 警告信息 mysqldump: [Warning] Using a password on the command line interface can be insecure的处理方式 vim /etc/my.cnf 最下面添加如下代码: [mysqldump] user=your_backup_user_name password=your_backup_password
最后直接执行:
mysqldump databasename | gzip > /home/wwwroot/backup/sql/databasename_$(date +%Y%m%d).sql.gz
posted on 2017-08-31 18:36 loveking_阳 阅读(310) 评论(0) 编辑 收藏 举报