怎么做家具网站,安卓应用软件开发,视频网站开发框架,输入代码即可玩的小游戏【MySQL系列】- MySQL自动备份详解 文章目录 【MySQL系列】- MySQL自动备份详解一、需求背景二、Windows mysql自动备份方法2.1 复制date文件夹备份实验备份环境创建bat直接备份脚本 2 .2 mysqldump备份成sql文件创建mysqldump备份脚本 2 .3 利用WinRAR对MySQL数据库进行定时备…【MySQL系列】- MySQL自动备份详解 文章目录 【MySQL系列】- MySQL自动备份详解一、需求背景二、Windows mysql自动备份方法2.1 复制date文件夹备份实验备份环境创建bat直接备份脚本 2 .2 mysqldump备份成sql文件创建mysqldump备份脚本 2 .3 利用WinRAR对MySQL数据库进行定时备份创建WinRAR备份脚本 三、Linux Mysql自动备份3.1 查看磁盘空间情况3.2 创建备份目录3.3 编写备份shell脚本3.4 Shell压缩备份3.5 清除历史备份文件3.6 添加计划任务3.7 测试任务是否执行 四、参考链接 一、需求背景
数据库在一个系统中处于非常重要的地位是整个系统底层也是核心当数据库被误删会造成非常严重的失误所有数据库备份可以说是重中之重。本文将梳理Mysql在windows与Liunx中的备份方法。
二、Windows mysql自动备份方法
2.1 复制date文件夹备份 实验备份环境
MySQL 安装位置D:\Program Files\MySQL数据库名称为GoyeerDB数据库备份目的地F:\Mysql\db_bak\ 创建bat直接备份脚本
*******************************Code Start*****************************
net stop mysql
xcopy D:\Program Files\MySQL\data\GoyeerDB\*.* F:\Mysql\db_bak\goyeerdb_bak\%date:~0,10%\ /S /I
net start mysql
*******************************Code End *****************************然后使用Windows的“计划任务”定时执行该批处理脚本即可。例如每天凌晨1点执行back_db.bat 解释备份和恢复的操作都比较简单完整性比较高控制备份周期比较灵活例如用%date:0,10%。此方法适合有独立主机但对mysql没有管理经验的用户。缺点是占用空间比较多备份期间mysql会短时间断开例如针对30M左右的数据库耗时5s左右,针对%date:0,10%的用法参考 .
2 .2 mysqldump备份成sql文件 创建mysqldump备份脚本
rem *******************************Code Start*****************************
echo off
set Ymd%date:~,4%%date:~5,2%%date:~8,2%
D:\Program Files\MySQL\bin\mysqldump --opt -u root --password123456 GoyeerDB F:\Mysql\goyeerdb_bak\goyeerdb_%Ymd%.sql
echo on
rem *******************************Code End*******************************将以上代码保存为backup_db.bat 然后使用Windows的“计划任务”定时执行该脚本即可。例如每天凌晨2点执行back_db.bat
说明此方法可以不用关闭数据库并且可以按每一天的时间来名称备份文件。
通过%date:5,2%来组合得出当前日期组合的效果为yyyymmdd,date命令得到的日期格式默认为yyyy-mm-dd(如果不是此格式可以通过pause命令来暂停命令行窗口看通过%date:,20%得到的当前计算机日期格式)所以通过%date:5,2%即可得到日期中的第五个字符开始的两个字符例如今天为2009-02-05,通过%date:5,2%则可以得到02。日期的字符串的下标是从0开始的
2 .3 利用WinRAR对MySQL数据库进行定时备份
对于MySQL的备份最好的方法就是直接备份MySQL数据库的Data目录。下面提供了一个利用WinRAR来对Data目录进行定时备份的方法。
首先当然要把WinRAR安装到计算机上。
创建WinRAR备份脚本
*******************************Code Start***************************
net stop mysql
c:\Program Files\winrar\winrar a -ag -k -r -s F:\Mysql\goyeerdb_bak\goyeerdb_%Ymd%.rar D:\Program Files\MySQL\data\GoyeerDB\
net start mysql
*******************************Code End*****************************保存然后将文本文件的扩展名修改成CMD。进入控制面版打开计划任务双击“添加计划任务”。在计划任务向导中找到刚才的CMD文件接着为这个任务指定一个运行时间和运行时使用的账号密码就可以了。 这种方法缺点是占用时间比较多备份期间压缩需要时间mysql断开比第一种方法更多的时间但是对于文件命名很好。
三、Linux Mysql自动备份
3.1 查看磁盘空间情况
既然是定时备份就要选择一个空间充足的磁盘空间避免出现因空间不足导致备份失败数据丢失的恶果推荐使用NAS做为备份存储。
df -h #查看磁盘空间3.2 创建备份目录
在有磁盘空间的目录上创建文件夹下面例子已在/home文件夹下创建目录
cd /home #切换目录到home下
mkdir backup #常见目录并进入backup
cd backup3.3 编写备份shell脚本
语法mysqldump -u数据库用户名 -p密码 数据库名称 /路径/备份文件名.sql
#!/bin/bash
mysqldump -uroot -p123456 demo /home/backup/demo_$(date %Y%m%d_%H%M%S).sql #按日期时间备份database_name_ ( d a t e (date %Y%m%d%H%M%S)为生成的备份文件名称可自定义这里文件名是数据库名 下划线 具体时间 (date(date %Y%m%d%H%M%S)可获取到当前日期%Y %m %d %H %M %S 分别对应年、月、日、时、分、秒
3.4 Shell压缩备份
语法mysqldump -u数据库用户名 -p密码 数据库名称 | gzip /路径/备份文件名.sql.gz
#!/bin/bash
mysqldump -uusername -ppassword DatabaseName | gzip /home/backup/DatabaseName_$(date %Y%m%d_%H%M%S).sql.gz3.5 清除历史备份文件
#!/bin/shfind /usr/local/backups -mtime 10 -name *DatabaseName_* -exec rm -rf {} \;#删除七天之前的备份 find $backup_dir -name $db_name.sql.gz -type f -mtime 7 -exec rm -rf {} ; /dev/null 21 #删除一分钟之前的备份 find $backup_dir -name $db_name.sql.gz -type f -mmin 1 -exec rm -rf {} ; /dev/null 21
关键字说明
-type f 表示查找普通类型的文件f 表示普通文件可不写 -mtime 7 按照文件的更改时间来查找文件7表示文件更改时间距现在7天以前;如果是-mmin 7表示文件更改时间距现在7分钟以前 -exec rm {} ; 表示执行一段shell命令exec选项后面跟随着所要执行的命令或脚本然后是一对{ }一个空格和一个\最后是一个分号; /dev/null 21 把标准出错重定向到标准输出然后扔到/DEV/NULL下面去。通俗的说就是把所有标准输出和标准出错都扔到垃圾桶里面其中的 表示让该命令在后台执行。
3.6 添加计划任务
执行命令crontab -e
*/1 * * * * /home/backup/bkDatabaseName.sh分 时 日 月 周 执行命令 第 1 列 分钟 159每分钟用 或者/1表示整点分钟数为00或0 第 2 列 小时 1230 表示 0 点 第 3 列 日 131 第 4 列 月 112 第 5 列 星期 060 表示星期天 第 6 列 要运行的命令 例子 0 3 * * * /backup.sh此命令表示在每天的凌晨三点执行一次脚本可自行调整时间
3.7 测试任务是否执行
如果任务执行失败了可以通过以下命令查看任务日志
tail -f /var/log/cron四、参考链接
https://blog.csdn.net/qq_32684319/article/details/86996369https://www.jianshu.com/p/be1e581acb8ehttps://www.cnblogs.com/taomylife/p/8022253.htmlhttps://blog.csdn.net/stonexmx/article/details/72974500