mysql数据库自动备份

每日定时备份是网站的必要机制,我们可以使用mysqldump进行,

 

正常手动备份是

 

mysqldump -uroot -p 需要备份的数据库 >> 备份文件存放位置

 

输入密码,备份。

 

如果我们直接使用命令

mysqldump -uroot -p密码 需要备份的数据库 >> 备份文件存放位置

会提示 Warning: Using a password on the command line interface can be insecure

 

换一个思路去实现,我们在my.cnf增加配置:

[mysqldump]

user=your_backup_user_name

password=your_backup_password

 

修改完配置文件重启数据库, 只需要执行mysqldump 脚本就可以了。备份脚本中不需要涉及用户名密码相关信息。

最后的命令:mysqldump 需要备份的数据库 >> 备份文件存放位置

 

如果要实现每日的备份,那定时脚本不可少,我们用PHP来调用mysqldump生成每日的备份。

 

直接上代码:

 

<?php
 set_time_limit(1800);

 $path=‘/XXX/‘.date('Ym').'/';

 if(!is_dir($path)){

  @mkdir($path);

 }

 $cmd_db1="/usr/local/mysql/bin/mysqldump XXX>".$path.”xxx”.date('YmdHis').".sql";

 $cmd_db2="/usr/local/mysql/bin/mysqldump XXX>".$path.”xxx”.date('YmdHis').".sql";

 
 exec($cmd_db1);

 exec($cmd_db2);

 

加上定时任务

crontab 基本格式 :
*  *  *  *  *  command
分 时 日 月 周 命令

1列表示分钟1~59 每分钟用*或者 */1表示
2列表示小时1~23(0表示0点)
3列表示日期1~31
4列表示月份1~12
5列标识号星期0~6(0表示星期天)
6列要运行的命令

 

添加新任务:

0 23 * * * /usr/local/php/bin/php xxx.php > /dev/null 2>&1;

 

每天晚上23点执行。

 

PHP的路径要使用完整路径,这里使用的可能会与真实服务器不同,要以实际的为主。

posted @ 2018-04-13 17:46  兜兜转转几多个圈  阅读(141)  评论(0)    收藏  举报