linux MySQL数据库自动备份7天内数据,留着以后参考

Linux mysql数据库自动备份 共3个步骤

1、创建脚本
2、更改mysql默认配置文件(更改完可不用重启数据库)
3、创建定时任务

一、创建脚本
#备份文件存放目录
backupdir=/dev/mysqldata
#数据库 1 xyj-base-m1
mysqldump --defaults-extra-file=/etc/my.cnf xyj-base-m1 | gzip > KaTeX parse error: Expected group after '_' at position 22: …dir/xyj-base-m1_̲(date +%Y%m%d_%H%M%S).sql.gz
#数据库2 member-m1
mysqldump --defaults-extra-file=/etc/my.cnf member-m1 | gzip > KaTeX parse error: Expected group after '_' at position 20: …updir/member-m1_̲(date +%Y%m%d_%H%M%S).sql.gz

find $backupdir -name “xyj-base-m1*.sql.gz” -type f -mtime +7 -exec rm -rf {} ;

find $backupdir -name “member-m1*.sql.gz” -type f -mtime +7 -exec rm -rf{} ;

这里为多数据库的备份脚本 member-m1 和 xyj-base-m1两个数据库,单数据库只需写一行脚本,根据实际需要编写。

mysqldump --defaults-extra-file=/etc/my.cnf xyj-base-m1 | gzip > KaTeX parse error: Expected group after '_' at position 22: …dir/xyj-base-m1_̲(date +%Y%m%d_%H%M%S).sql.gz

Mysqldump为mysql自带的备份命令

–defaults-extra-file=/etc/my.cnf 为选择mysql的默认配置文件,mysql5.7以后不支持在脚本中直接输入数据库用户名和密码,假如按照之前的方法使用以下命令
mysqldump -uusername -ppassword DatabaseName | gzip > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz
会出现警告信息,提示在脚本中直接使用用户名密码是不安全的,同时也会导致备份失败。

脚本详细解释如下
在这里插入图片描述

二、更改mysql默认配置文件
首先查找linux mysql默认配置文件的所在位置
1、通过which mysqld命令来查看mysql的安装位置
在这里插入图片描述

2、通过/usr/sbin/mysqld --verbose --help |grep -A 1 'Default options’命令来查看mysql使用的配置文件默认路径,(注意红色标注的是通过步骤1的命令获取到的mysql安装目录路径)

在这里插入图片描述
根据以上路径查找到my.cnf默认配置文件修改配置

在配置文件中增加两列

在这里插入图片描述

[mysqldump]
user=root
password='123456’→此处密码需要使用单引号

做完以上配置以后,可测试一下脚本是否可以正常执行

使用cd命令打开脚本所在文件夹并授权,例如脚本文件backmysql.sh存放在/home/mysqldata目录下
Cd /home/mysqldata
Chmod u+x backmysql.sh 授权

./backmysql.sh 运行脚本看是否备份成功(前往保存备份文件目录查看)

三、创建定时任务
在/ect目录下查找到 crontab 文件在其中增加一行定时任务

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

For details see man 4 crontabs

Example of job definition:

.---------------- 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

| | | | |

* * * * * user-name command to be executed

0 3 * * * root /home/script/backmysql.sh #此处为每日凌晨3点执行

在这里插入图片描述

然后输入命令
/etc/init.d/crond restart #重启定时器命令

可选择一个最近时间测试定时任务是否执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值