当前位置: 首页 > news >正文

cuteftp可以上传网站吗杨谦教授编的营销课程

cuteftp可以上传网站吗,杨谦教授编的营销课程,购物商城网站开发目的文档,wordpress 变装目录 环境准备 增量备份 增量备份和差异备份 完整代码如下 测试脚本是否正常 星期天运行脚本(完全备份) 星期一运备份脚本(增量备份) 星期二备份数据(其他天--增量备份) 星期三备份数据(差异备…

目录

环境准备

增量备份

增量备份和差异备份

完整代码如下

测试脚本是否正常

星期天运行脚本(完全备份)

星期一运备份脚本(增量备份)

星期二备份数据(其他天--增量备份)

星期三备份数据(差异备份)


使用第三方工具percona-xtrabackup


基于Innobackupex的MySQL备份脚本

环境准备

  • 操作系统: Linux(CentOS 7.9)。
  • MySQL: 已安装并运行着MySQL 5.7.35。
  • Innobackupex: Percona XtraBackup套件的一部分,用于物理备份InnoDB和MyISAM表。
  • Shell脚本: 将编写的自动化脚本。

增量备份


具体要求:

1、周日全备
2、周一至周六增量备份
3、备份使用backup用户

标题:自动化的MySQL数据库备份策略:结合Shell脚本与Innobackupex的实践

引言

在现代数据驱动的世界里,定期备份数据库是维护业务连续性和数据安全不可或缺的一环。本文将介绍一种利用Shell脚本和Percona XtraBackup工具中的innobackupex命令来实现MySQL数据库自动化备份的策略。我们的目标是设置一个灵活的备份计划,其中周日执行全量备份,而其他日子则执行增量备份,从而高效地管理存储空间并加快恢复速度。

Shell脚本详解

首先,让我们深入理解所提供的脚本。该脚本主要包含以下几个部分:

日期变量设置:

whichday=$(date +%u)  # 获取当前是一周中的第几天(1-7)
today=$(date +%F)     # 设置今日日期格式为YYYY-MM-DD
yesterday=$(date -d '-1 day' +%F)  # 计算昨日日期
Login='--user=backup --password=Openlab123! --no-timestamp'  # 定义备份用户认证信息

定义备份功能:

  • FULL(): 执行全量备份,使用innobackupex命令,备份保存到/db/full_YYYY-MM-DD目录。
  • INCR(): 执行增量备份,需要指定基于哪个目录的增量,这里使用前一天的全量或增量备份作为基础。

逻辑判断:

  • 如果今天是周日 (whichday 等于7),执行FULL()函数,创建全量备份。
  • 如果今天是周一 (whichday 等于1),执行INCR()函数,基于上周日的全量备份进行增量备份。
  • 其他日子,同样执行INCR()函数,但基于前一天的增量备份。

脚本执行与监控

  • 执行脚本: 将上述脚本保存为可执行文件,例如inno_bak.sh,并通过cron定时任务在每天的固定时间执行。
  • 日志与监控: 确保innobackupex的执行过程中产生的日志得到妥善保存和监控,以便于及时发现并解决问题。

注意事项

  • 权限与安全性: 确保用于备份的用户具有足够的权限,同时注意保护好备份脚本中的敏感信息,比如数据库用户名和密码。
  • 备份验证: 定期检查备份文件的完整性和可恢复性,避免灾难发生时才发现备份不可用。

完整代码:

#!/bin/bash# 获取今天是一周中的第几天,1代表星期一,7代表星期日
whichday=$(date +%u)# 获取今天的日期,格式为YYYY-MM-DD
today=$(date +%F)# 计算并获取昨天的日期
yesterday=$(date -d '-1 day' +%F)# 设置备份时使用的MySQL登录信息,包括用户名、密码及不使用时间戳的选项
Login='--user=backup --password=Openlab123! --no-timestamp'# 定义函数:执行全量备份
function FULL()
{# 使用innobackupex命令执行全量备份,备份存放路径包含今天的日期innobackupex ${Login}  /db/full_${today}
}# 定义函数:执行增量备份
function INCR()
{# 使用innobackupex命令执行增量备份,指定增量备份的存储路径和基于哪个目录的增量innobackupex --incremental ${Login} /db/incr_${today} --incremental-basedir=$1
}# 根据今天是周中的哪一天来决定执行哪种备份
if [ ${whichday} -eq 7 ]  # 如果是周日
thenFULL               # 执行全量备份
elif [ ${whichday} -eq 1 ]  # 如果是周一
thenINCR /db/full_${yesterday}  # 执行增量备份,基于上周日的全量备份
elseINCR /db/incr_${yesterday}  # 其他日子执行增量备份,基于前一天的增量备份
fi

[root@localhost db] ls  --检查要备份的目录是否有文件存在

 要想进行增量备份的前提是要有一次完全备份

先从周天开始

[root@localhost script] date -s "$(date -d '+1 day' +'%F %T')"
2024年 06月 02日 星期日 00:00:05 CST# 该命令的目的是通过Shell脚本调整系统当前时间到明天的同一时刻。
# 为了实现这个目的,采用了两步走的策略:
# 第一步,计算明天的日期和当前时间;
# 第二步,使用计算出的日期时间设置系统时钟。# 1. 使用 'date -d '+1 day'' 计算明天的日期:
#    - `date -d`: 是date命令中的一个选项,允许我们指定一个相对时间字符串来计算新的日期和时间。
#    - `'+1 day'`: 指定了时间偏移量,即从当前时间起加1天,用来计算明天的日期。# 2. 结合 '%F %T' 格式化输出日期和时间:
#    - `'%F'`: 代表完整的日期格式,即年-月-日(例如,2024-06-02)。
#    - `'%T'`: 代表时间格式,即小时:分钟:秒(例如,00:00:05)。
#    这意味着我们不仅需要明天的日期,还需要保持当前的时间部分不变。# 3. 使用命令替换(命令嵌套):
#    - `$(...)` 是命令替换结构,它允许我们把一个命令的输出作为另一个命令的参数。
#    在这里,我们用明天的日期和时间(由内部的date命令计算得出)作为外部date命令的参数。# 4. 最终执行 'date -s' 设置系统时间:
#    - `date -s`: 用于设置系统时间的选项,后面跟具体的日期和时间字符串。
#    - 通过前面的命令替换,我们现在有了一个精确的日期时间字符串(明天的日期加上当前时间),
#      并将其传递给这个选项,从而实现设置系统时间为明天相同时间的目的。# 综上所述,整个命令的作用是将当前系统时间设置为明天此刻的时间,即在不影响当前时间的情况下,将日期向前推进一天。

运行脚本

查看是否成功备份

[root@localhost db] ls
full_2024-06-02

更改时间为星期一

[root@localhost script] date -s "$(date -d '+1 day' +'%F %T')"
2024年 06月 03日 星期一 00:02:42 CST#再次运行脚本
[root@localhost script] bash inno_bak.sh 
full_2024-06-02  incr_2024-06-03#星期二
[root@localhost script]# date -s "$(date -d '+1 day' +'%F %T')"
2024年 06月 04日 星期二 00:31:40 CST[root@localhost db]# ls
full_2024-06-02  incr_2024-06-03  incr_2024-06-04

增量备份和差异备份

要求二:

周日完全备份
    周1-2增量备份
    周3差异备份
    周4-6增量备份

# 备份脚本
[root@localhost script] cp inno_bak.sh inno_bak_v2.sh
[root@localhost script] vim inno_bak_v2.sh

完整代码如下

判断语句改为case语句,因为是同一个变量判断不同值

#!/bin/bash# 获取今天是一周中的第几天,1表示星期一,7表示星期日
whichday=$(date +%u)# 获取今天的日期,格式为YYYY-MM-DD
today=$(date +%F)# 计算并获取昨天的日期
yesterday=$(date -d '-1 day' +%F)# 设置数据库备份时使用的登录信息,包括用户名、密码以及禁用时间戳的选项
Login='--user=backup --password=Openlab123! --no-timestamp'# 定义全量备份函数
function FULL() {# 使用innobackupex执行全量备份到/db目录下以今天的日期为名称的子目录中innobackupex ${Login} /db/full_${today}
}# 定义增量备份函数,需要传入上次备份的目录作为增量基础
function INCR() {# 执行增量备份到/db目录下以今天的日期为名称的子目录中,并指定增量的基准目录innobackupex --incremental ${Login} /db/incr_${today} --incremental-basedir=$1
}# 根据今天是一周中的哪一天来选择执行相应的备份操作
case ${whichday} in7) # 如果是周日FULL    # 执行全量备份;;1) # 如果是周一INCR /db/full_${yesterday}  # 执行基于上周日全量备份的增量备份;;3) # 如果是周三INCR /db/full_$(date -d '-3 day' +'%F')  # 执行基于上上周五全量备份的增量备份;;*) # 其他日子INCR /db/incr_${yesterday}  # 执行基于前一天增量备份的增量备份;;
esac

该脚本设计了一套策略来自动执行MySQL数据库备份:

周日:执行一次全量备份,这是一周的起始点,为后续的增量备份提供基础。

周一:执行基于上周日全量备份的增量备份。

周三:特殊调整,执行基于上上周五的全量备份的增量备份,这个设定可能根据特定的业务需求或备份窗口制定。

其余日子:执行基于前一天增量备份的增量备份,保持每天的数据变化得到记录。

测试脚本是否正常

星期天运行脚本(完全备份)

# 设置时间
[root@localhost script] date -s "$(date -d '+1 day' +'%F %T')"
2024年 06月 02日 星期日 01:09:02 CST
# 删除之前备份的数据
[root@localhost script] rm -rf /db/
[root@localhost script] bash inno_bak_v2.sh # 查看是否备份成功
[root@localhost script] ls /db/
full_2024-06-02

星期一运备份脚本(增量备份)

增加数据

mysql> insert into aa(id) values(11);
Query OK, 1 row affected (0.00 sec)mysql> select * from aa;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
|    5 |
|    6 |
|    7 |
|    8 |
|    9 |
|   10 |
|   11 |
+------+
# 设置时间
[root@localhost script] date -s "$(date -d '+1 day' +'%F %T')"
2024年 06月 03日 星期一 01:18:10 CST# 运行脚本
[root@localhost script] bash inno_bak_v2.sh# 检查是否备份成功
[root@localhost script] ls /db/
full_2024-06-02  incr_2024-06-03

星期二备份数据(其他天--增量备份)

增加数据

mysql> insert into aa(id) values(12);
Query OK, 1 row affected (0.00 sec)

运行脚本

# 设置时间
[root@localhost script] date -s "$(date -d '+1 day' +'%F %T')"
2024年 06月 04日 星期二 01:22:29 CST# 运行脚本
[root@localhost script] bash inno_bak_v2.sh# 查看是否备份成功
[root@localhost script] ls /db/
full_2024-06-02  incr_2024-06-03  incr_2024-06-04

星期三备份数据(差异备份)

增加数据

mysql> insert into aa(id) values(13);
Query OK, 1 row affected (0.00 sec)

运行脚本

# 设置时间
[root@localhost script] date -s "$(date -d '+1 day' +'%F %T')"
2024年 06月 05日 星期三 01:25:39 CST# 运行脚本
[root@localhost script] bash inno_bak_v2.sh# 查看脚本是否备份成功
[root@localhost script] ls /db/
full_2024-06-02  incr_2024-06-03  incr_2024-06-04  incr_2024-06-05

http://www.hkea.cn/news/934105/

相关文章:

  • 网站建设 摄影服务上海seo网站排名优化公司
  • 网页设计中html代码seo博客网站
  • 怎样建设小游戏网站google关键词搜索技巧
  • 淘宝 客要推广网站怎么做全媒体广告代理
  • 那个b2b网站可以做外贸武汉全网推广
  • 深圳css3网站开发多少钱如何策划一个营销方案
  • 织梦统计网站访问量代码网络营销公司如何建立
  • 外贸营销型网站建设今日最新重大新闻
  • 个性化定制网站长春网络推广优化
  • 合肥庐阳区疫情最新消息seo优化首页
  • h5网站制作接单最新中高风险地区名单
  • 北京市住房城乡建设委网站公司怎么在网上推广
  • 网站建设首页怎样插入视频百度指数在线查询小程序
  • 青州网站制作哪家好aso优化哪家好
  • wordpress做网站优点郑州网站seo优化
  • 宝安做棋牌网站建设找哪家公司好湖南长沙疫情最新消息
  • 四川专业网站建设中国十大企业培训机构排名
  • 怎么切页面做网站灰色词首页排名接单
  • 网站右侧浮动广告代码百度推广代理公司广州
  • 固原建站公司旺道seo推广系统怎么收费
  • 适合做外链的网站海外广告联盟平台推广
  • 建筑模板规格型号郑州厉害的seo顾问
  • ppt做书模板下载网站有哪些内容国际婚恋网站排名
  • 上海网站建设内容更新网络营销策划目的
  • 重庆市建设信息网站关键词查询网
  • 做哪种网站流量大怎么打广告宣传自己的产品
  • 免费表白网站制作seo网络优化推广
  • 网站建设中可能升级中国科技新闻网
  • 网站制作内容文案网站如何快速被百度收录
  • 淘宝淘宝网页版登录入口免费seo公司