- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章MySQL 数据库定时备份的几种方式(全面)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法
1
2
|
#MySQLdump常用
mysqldump -u root -p --databases 数据库1 数据库2 > xxx.sql
|
备份全部数据库的数据和结构 。
1
|
mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql
|
备份全部数据库的结构(加 -d 参数) 。
1
|
mysqldump -uroot -p123456 -A -d > /data/mysqlDump/mydb.sql
|
备份全部数据库的数据(加 -t 参数) 。
1
|
mysqldump -uroot -p123456 -A -t > /data/mysqlDump/mydb.sql
|
备份单个数据库的数据和结构(,数据库名mydb) 。
1
|
mysqldump -uroot-p123456 mydb > /data/mysqlDump/mydb.sql
|
备份单个数据库的结构 。
1
|
mysqldump -uroot -p123456 mydb -d > /data/mysqlDump/mydb.sql
|
备份单个数据库的数据 。
1
|
mysqldump -uroot -p123456 mydb -t > /data/mysqlDump/mydb.sql
|
备份多个表的数据和结构(数据,结构的单独备份方法与上同) 。
1
|
mysqldump -uroot -p123456 mydb t1 t2 > /data/mysqlDump/mydb.sql
|
一次备份多个数据库 。
1
|
mysqldump -uroot -p123456
--databases db1 db2 > /data/mysqlDump/mydb.sql
|
有两种方式还原,第一种是在 MySQL 命令行中,第二种是使用 SHELL 行完成还原 。
在系统命令行中,输入如下实现还原:
1
|
mysql -uroot -p123456 < /data/mysqlDump/mydb.sql
|
在登录进入mysql系统中,通过source指令找到对应系统中的文件进行还原:
1
|
mysql> source /data/mysqlDump/mydb.sql
|
在 Linux中,通常使用BASH脚本对需要执行的内容进行编写,加上定时执行命令crontab实现日志自动化生成.
以下代码功能就是针对mysql进行备份,配合crontab,实现备份的内容为近一个月(31天)内的每天的mysql数据库记录.
在Linux中,使用vi或者vim编写脚本内容并命名为:mysql_dump_script.sh 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#!/bin/bash
#保存备份个数,备份31天数据
number=31
#备份保存路径
backup_dir=/root/mysqlbackup
#日期
dd=`
date
+%Y-%m-%d-%H-%M-%S`
#备份工具
tool=mysqldump
#用户名
username=root
#密码
password
=TankB214
#将要备份的数据库
database_name=edoctor
#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir;
fi
#简单写法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
$tool -u $username -p$
password
$database_name > $backup_dir/$database_name-$dd.sql
#写创建备份日志
echo
"create $backup_dir/$database_name-$dd.dupm"
>> $backup_dir/log.txt
#找出需要删除的备份
delfile=`ls -l -crt $backup_dir/*.sql | awk
'{print $9 }'
| head -1`
#判断现在的备份数量是否大于$number
count
=`ls -l -crt $backup_dir/*.sql | awk
'{print $9 }'
| wc -l`
if [ $
count
-gt $number ]
then
#删除最早生成的备份,只保留number数量的备份
rm $delfile
#写删除文件日志
echo
"delete $delfile"
>> $backup_dir/log.txt
fi
|
如上代码主要含义如下:
1.首先设置各项参数,例如number最多需要备份的数目,备份路径,用户名,密码等.
2.执行mysqldump命令保存备份文件,并将操作打印至同目录下的log.txt中标记操作日志.
3.定义需要删除的文件:通过ls命令获取第九列,即文件名列,再通过实现定义操作时间最晚的那个需要删除的文件.
4.定义备份数量:通过ls命令加上 wc -l 统计以sql结尾的文件的行数.
5.如果文件超出限制大小,就删除最早创建的sql文件 。
在 Linux 中,周期执行的任务一般由cron这个守护进程来处理 [ps -ef|grep cron] 。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。cron的配置文件称为“crontab”,是“cron table”的简写.
cron是一个 Liunx 下 的定时执行工具,可以在无需人工干预的情况下运行作业.
1
2
3
4
5
|
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看服务状态
|
crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把需要执行的命令序列放到crontab文件中以获得执行。每个用户都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以直接创建或者直接修改。该crontab文件是通过crontab命令创建的.
在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。每个域之间使用空格或者制表符分隔.
格式如下:
12minute hour day-of-month month-of-year day-of-week commands
合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday)
除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字.
-l 在标准输出上显示当前的crontab。 -r 删除当前的crontab文件。 -e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。当结束编辑离开时,编辑后的文件将自动安装.
第一步:写cron脚本文件,命名为mysqlRollBack.cron。15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt 表示,每隔15分钟,执行打印一次命令 。
第二步:添加定时任务。执行命令 “crontab crontest.cron”。搞定 。
第三步:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本 。
注意:这操作是直接替换该用户下的crontab,而不是新增 。
定期执行编写的定时任务脚本(记得先给shell脚本执行权限) 。
1
|
0 2 * * * /root/mysql_backup_script.sh
|
随后使用crontab命令定期指令编写的定时脚本 。
1
|
crontab mysqlRollback.cron
|
再通过命令检查定时任务是否已创建:
(1).每天早上6点 。
1
|
0 6 * * * echo
"Good morning."
>> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。
|
(2).每两个小时 。
1
|
0 */2 * * * echo
"Have a break now."
>> /tmp/test.txt
|
(3).晚上11点到早上8点之间每两个小时和早上八点 。
1
|
0 23-7/2,8 * * * echo
"Have a good dream"
>> /tmp/test.txt
|
(4).每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 。
1
|
0 11 4 * 1-3 command line
|
(5).1月1日早上4点 。
1
|
0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 HOME=/
|
(6).每小时执行/etc/cron.hourly内的脚本 。
1
|
01 * * * * root run-parts /etc/cron.hourly
|
(7).每天执行/etc/cron.daily内的脚本 。
1
|
02 4 * * * root run-parts /etc/cron.daily
|
(8).每星期执行/etc/cron.weekly内的脚本 。
1
|
22 4 * * 0 root run-parts /etc/cron.weekly
|
(9).每月去执行/etc/cron.monthly内的脚本 。
1
|
42 4 1 * * root run-parts /etc/cron.monthly
|
注意: "run-parts" 这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名.
(10).每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令.
1
|
5,15,25,35,45,55 16,17,18 * * * command
|
(11).每周一,三,五的下午3:00系统进入维护状态,重新启动系统.
1
|
00 15 * * 1,3,5 shutdown -r +5
|
(12).每小时的10分,40分执行用户目录下的innd/bbslin这个指令:
1
|
10,40 * * * * innd/bbslink
|
(13).每小时的1分执行用户目录下的bin/account这个指令:
1
|
1 * * * * bin/account
|
以下是我的测试每分钟的截图效果,其对应代码如下:
1
|
* * * * * /root/mysql_backup_script.sh
|
效果截图:
到此这篇关于MySQL 数据库定时备份的几种方式(全面)的文章就介绍到这了,更多相关MySQL 数据库定时备份的几种方式内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://www.tuicool.com/articles/vUf2Yb6 。
最后此篇关于MySQL 数据库定时备份的几种方式(全面)的文章就讲到这里了,如果你想了解更多关于MySQL 数据库定时备份的几种方式(全面)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我对开发领域有点陌生,我正在开发一个 Android 项目。我正在尝试使用手机相机闪光灯。我试图让它以重复的 Action 闪烁。下面是我的 .java 文件中的一个剪辑。 public vo
我正在制作一个 ios 应用程序,它是一种诗集。我想要的功能之一是定时“阅读”,因此一首诗中的单词出现的时间与我阅读时的时间相同。所以我有一个数组,里面有诗中的词,还有延迟。 现在我想遍历单词,在屏幕
这个问题在这里已经有了答案: Loop doesn't see value changed by other thread without a print statement (1 个回答) 关闭
我如何才能使用计时器?例如,我想显示某个文本 10 秒,然后我想在剩余时间内显示不同的文本。 谢谢 凯文 最佳答案 延迟操作的最简单方法是使用 NSObject 的 PerformSelector:w
我在这里的措辞上有点困难,但要点是我使用返回一个对象的 Promise.race (如下所示)。大多数时候,至少有一些 promise 会崩溃,但这是故意的。这仅意味着未找到产品。为了避免 Promi
我正在寻找定时 JDialog,它会在指定时间过后消失,并且找到的代码运行正常。 JFrame f = new JFrame(); final JDia
我试图让选择器在不同的时间轮换,我想我会尝试一个简单的 if/else 语句,让第一个选择器在 3 秒后轮换,接下来的选择器在 30 秒后轮换。然而,它只是每三秒旋转一次。如果我想出了如何完成这项工作
这个问题已经有答案了: How to implement a timer in c? (7 个回答) Creating a Timer in C (2 个回答) 已关闭 9 年前。 我需要根据用户输入
我有一个在我文档的 head 标签中调用的 javascript 文件,每隔 30 秒,我希望重新加载这个 javascript 文件。 我对此做了一些研究,似乎它在提取本地存储的文件副本或跨浏览器问
我想看看运行 bash 函数需要多长时间。在做了一些研究之后,我想出了这种使用子 shell 的方法: function test-function() { time ( rs
我正在使用 jQuery,并且我有一个 aAax 请求,如下所示; $.ajax({ type: 'POST', url: 'test.php',
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度的了解。包括尝试的解决方案、为什么它们不起作用以及预期结果
我想为系统的每笔交易制定一个程序任务,以预留15分钟的等待时间。如果超过15分钟,程序将改变状态/状态。如果状态在 15 分钟内发生变化,则结束任务。我可以应用更多更好的代码吗?比如Wait/Slee
我正在制作一个打字速度测试程序,它有一个循环需要运行 60 秒然后退出并显示结果。我读过其他关于为 C++ 程序计时的地方,但我的研究没有定论。该程序正在运行 (llbd),我希望有人有解决方案/更好
我试图在一个简单的游戏中每 0.5 - 2 秒随机创建一个障碍。我已经有了创建障碍的功能,但我无法为实例化计时。我试过研究这个,但我还没有想出任何相关的东西。你们能帮帮我吗? 最佳答案 您可以使用 p
我有以下测试,在运行特别长的 fib 断言时不会失败。 未正确失败的测试 #!/usr/env/bin python2.7 import unittest from fib import fib fr
我想知道这是否可行。有没有一种方法可以使用 PHP 每 24 小时更新一次行的值。为什么?我正在创建一个使用在线货币(称为 Yads)的 child 网站。 Row 的值是用户拥有的 Yad 数量。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
有 Cron API 这样的东西吗? 我的意思是,是否有一种编程方式可以在不影响 Cron 的情况下添加/删除 Cron 作业? 最佳答案 UNIX cron 的 API 是文件系统。有一个用于安装/
1、SpringBoot:集成Swagger终极版 学习目标: 了解Swagger的概念及作用 掌握在项目中集成Swagger自动生成API文档 1.1、Sw
我是一名优秀的程序员,十分优秀!