本次目标
mysql实现自动备份
实现步骤
一、测试导出
1、执行命令
其中root为用户名,user 为数据库名
[root@localhost mysql]#mysqldump -u root -p 数据库名 > /home/mysql/test.sql
命令解析:mysqldump -u 用户名 -p 数据库名 > 导出的文件名
2、提示无法识别mysqldump ,执行如下命令即可解决
[root@localhost mysql]#ln -fs /usr/local/mysql/bin/mysqldump /usr/bin
[root@localhost mysql]#ln -fs /usr/local/mysql/bin/mysql /usr/bin
3、再次执行步骤1的命令
在password后面输入root用户的密码,敲下回车键即可导出
[root@localhost mysql]#mysqldump -u root -p 数据库名 > /home/mysql/test.sql
Enter password:
二、设置不无需输入密码
[root@localhost mysql]#mysqldump -u root -p密码 数据库名 > /home/mysql/111.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
经查询需要隐藏密码
[root@localhost mysql]# vi /etc/my.cnf
增加如下内容:
切记加到文档最后面
[client]
host = localhost
user = 数据库名
password = '密码'
执行如下导出命令
[root@localhost mysql]# mysqldump --defaults-extra-file=/etc/my.cnf 数据库名 > /home/mysql/22.sql
导出成功。
三、配置可执行文件
增加文件bakjypt.sh
[root@localhost mysql]#vi bakjypt.sh
在文件中编辑内容如下:
#!/bin/sh
#备份环境设置
extdate=`date +"%Y_%m_%d"`
extdel=`date +"%Y_%m_%d" -d "a month ago"`
extsid='jypt'
#删除备份中一个月之前的备份文件
#rm -f /home/mysql/*$extdel*
#执行备份操作
mysqldump --defaults-extra-file=/etc/my.cnf jypt > /home/mysql/$extsid-$extdate.sql
#备份文件压缩
tar zcvf /home/mysql/$extsid-$extdate.tar.gz /home/mysql/$extsid-$extdate.sql
#rm -f /home/mysql/$extsid-$extdate.sql
分配可执行权限:
[root@localhost mysql]#chmod 755 bakjypt.sh
四、配置自动执行事件
[root@localhost mysql]#crontab -e
在crontab文件中增加如下行:
每天23:00执行bakjypt.sh
0 23 * * * /home/mysql/bakjypt.sh
[root@localhost mysql]#service crond start
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务