- 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的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我一直在阅读有关汇编函数的内容,但对于是使用进入和退出还是仅使用调用/返回指令来快速执行,我感到很困惑。一种方式快而另一种方式更小吗?例如,在不内联函数的情况下,在汇编中执行此操作的最快(stdcal
我正在处理一个元组列表,如下所示: res = [('stori', 'JJ'), ('man', 'NN'), ('unnatur', 'JJ'), ('feel', 'NN'), ('pig',
最近我一直在做很多网络或 IO 绑定(bind)操作,使用线程有助于加快代码速度。我注意到我一直在一遍又一遍地编写这样的代码: threads = [] for machine, user, data
假设我有一个名为 user_stats 的资源,其中包含用户拥有的帖子、评论、喜欢和关注者的数量。是否有一种 RESTful 方式只询问该统计数据的一部分(即,对于 user_stats/3,请告诉我
我有一个简单的 api,它的工作原理是这样的: 用户创建一个请求 ( POST /requests ) 另一个用户检索所有请求 ( GET /requests ) 然后向请求添加报价 ( POST /
考虑以下 CDK Python 中的示例(对于这个问题,不需要 AWS 知识,这应该对基本上任何构建器模式都有效,我只是在这个示例中使用 CDK,因为我使用这个库遇到了这个问题。): from aws
Scala 中管理对象池的首选方法是什么? 我需要单线程创建和删除大规模对象(不需要同步)。在 C++ 中,我使用了静态对象数组。 在 Scala 中处理它的惯用和有效方法是什么? 最佳答案 我会把它
我有一个带有一些内置方法的类。这是该类的抽象示例: class Foo: def __init__(self): self.a = 0 self.b = 0
返回和检查方法执行的 Pythonic 方式 我目前在 python 代码中使用 golang 编码风格,决定移动 pythonic 方式 例子: import sys from typing imp
我正在开发一个 RESTful API。其中一个 URL 允许调用者通过 id 请求特定人员的记录。 返回该 id 不存在的记录的常规值是什么?服务器是否应该发回一个空对象或者一个 404,或者其他什
我正在使用 pathlib.Path() 检查文件是否存在,并使用 rasterio 将其作为图像打开. filename = pathlib.Path("./my_file-name.tif") 但
我正在寻找一种 Pythonic 方式来从列表和字典创建嵌套字典。以下两个语句产生相同的结果: a = [3, 4] b = {'a': 1, 'b': 2} c = dict(zip(b, a))
我有一个正在操裁剪理设备的脚本。设备有时会发生物理故障,当它发生时,我想重置设备并继续执行脚本。我有这个: while True: do_device_control() device
做组合别名的最pythonic和正确的方法是什么? 这是一个假设的场景: class House: def cleanup(self, arg1, arg2, kwarg1=False):
我正在开发一个小型客户端服务器程序来收集订单。我想以“REST(ful)方式”来做到这一点。 我想做的是: 收集所有订单行(产品和数量)并将完整订单发送到服务器 目前我看到有两种选择: 将每个订单行发
我知道在 Groovy 中您可以使用字符串调用类/对象上的方法。例如: Foo."get"(1) /* or */ String meth = "get" Foo."$meth"(1) 有没有办法
在 ECMAScript6 中,您可以使用扩展运算符来解构这样的对象 const {a, ...rest} = obj; 它将 obj 浅拷贝到 rest,不带属性 a。 有没有一种干净的方法可以在
我有几个函数返回数字或None。我希望我的包装函数返回第一个不是 None 的结果。除了下面的方法之外,还有其他方法吗? def func1(): return None def func2(
假设我想设计一个 REST api 来讨论歌曲、专辑和艺术家(实际上我就是这样做的,就像我之前的 1312414 个人一样)。 歌曲资源始终与其所属专辑相关联。相反,专辑资源与其包含的所有歌曲相关联。
这是我认为必须经常出现的问题,但我一直无法找到一个好的解决方案。假设我有一个函数,它可以作为参数传递一个开放资源(如文件或数据库连接对象),或者需要自己创建一个。如果函数需要自己打开文件,最佳实践通常
我是一名优秀的程序员,十分优秀!