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 #重启定时器命令
可选择一个最近时间测试定时任务是否执行。