linux/window定时备份mysql数据库

Linux定时备份数据库是比较简单的事情,可以使用crontab定时备份,如果用windows可能会比较麻烦。


1.Linux:

第一步:在服务器上配置备份目录代码:

mkdir /var/lib/mysqlbackup 

cd /var/lib/mysqlbackup


第二步:编写备份脚本代码:

vi dbbackup.sh
黏贴以下代码,务必更改其中的username,password和dbname。

#!/bin/sh

mysqldump -uuser -ppassword dbname | gzip > /var/lib/mysqlbackup/dbname`date +%Y-%m-%d_%H%M%S`.sql.gz

cd  /var/lib/mysqlbackup

rm -rf `find . -name '*.sql.gz' -mtime 10`  #删除10天前的备份文件

第三步: 更改备份脚本权限
chmod +x dbbackup.sh


第四步:用crontab定时执行备份脚本代码
crontab -e
若每天晚上21点00备份,添加如下代码
00 21 * * * /var/lib/mysqlbackup/dbbackup.sh


会遇到的问题:
1.mysqldump 是备份数据库的命令,不懂直接百度就好。

2.Crontab 是定时任务的命令,如果不懂可以访问http://www.thinkphp.cn/code/1003.html

3.备份数据首先要确定已经给root设置了密码,否则会报mysqldump执行时Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect
解决办法:

登录mysql客户端
mysql -hserverip -uroot -p
mysql> use mysql; Database changed
mysql> update user set password=password('new password') where user='root'; Query OK, 4 rows affected (0.00 sec) Rows matched: 4  Changed: 4  Warnings: 0
mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) //这个命令是给用户赋予了新的权限或者密码,直接读到内存中不需要重启数据库防止出错
mysql> quit

2.Windows

第一步:新建test.bat文件,并写入代码

D:
"D:\php\php.exe" -f "D:\wwwroot\demo\export_mysql\demo.php"

注意:找到自己的php.exe路径以及自己的项目路径。


第二步:在自己的项目路径下(我的是"  D:\wwwroot\demo\export_mysql\")下新建demo.php文件,代码为

<?php  
    error_reporting(0);
    $cfg_host="localhost";
    $cfg_dbuser="root";  
    $cfg_dbpwd="root";  
    $cfg_dbname="demo";  
    // 设置保存文件名   
//     $filename=date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql";  
    $filename=date("Y-m-d")."-".$cfg_dbname.".sql";
    // 获取当前页面文件路径,SQL文件就导出到此文件夹内   
    $tmpFile = (dirname(__FILE__))."/".$filename;
    header("Content-Disposition: attachment; filename=" . $filename);
    header("Content-type: application/octet-stream");
    header("Pragma:no-cache");
    header("Expires:0");
    // 用mysqldump命令导出数据库   
    system("D:/MySQL/bin/mysqldump -h$cfg_host -u$cfg_dbuser -p$cfg_dbpwd $cfg_dbname --default_character-set=utf8 > $tmpFile");
    $file = fopen($tmpFile, "rb"); // 打开文件   
    echo fread($file,filesize($tmpFile));   
    
    //删除 5 天前的文件
    $time=time();
    $rar=date("Y-m-d",$time-86400*5)."-".$cfg_dbname.".sql";

    if(file_exists($rar))
    {
        @unlink($rar);
    }
    ob_flush();
    flush();
    
    fclose($file);
    ob_end_flush();
    exit;

第三步:使用windows任务计划开启定时功能,具体任务计划设置比较简单,可以google。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值