写在前面


  • 一般需求增量上线的时候,会备份应用和应用数据,保证升级失败也可以回退回去,今天和小伙伴聊聊数据备份的事。
  • 日常备份可以通过定时任务进行备份,也可以手动执行备份
  • 这里和小伙分享一些备份的脚本Demo,写的很粗。
  • 博文内容包括:日志备份数据库备份(mysql)
  • 备份方式分为:物理备份逻辑备份远程差异备份

等长大就明白了。”小时候总是被人这么说。但那是不折不扣的谎言。我对任何事都只能越来越不明白。……这的确令人不安。但在另一方面,正是因为这样,自己才没有失去对生的好奇这也是事实。 ——中岛敦《山月记》


一、日志文件备份

日志备份这里很简单,这里我们写一个shell脚本,通过脚本的方式进行,当然,如果需要,这个脚本可以配置到定时任务里。

┌──[root@liruilongs.github.io]-[~]
└─$ pwd
/root
┌──[root@liruilongs.github.io]-[~]
└─$ mkdir bak_shell
┌──[root@liruilongs.github.io]-[~]
└─$ cd bak_shell/
┌──[root@liruilongs.github.io]-[~/bak_shell]
└─$ vim bak_log.sh
┌──[root@liruilongs.github.io]-[~/bak_shell]
└─$ sh bak_log.sh
┌──[root@liruilongs.github.io]-[~/bak_shell]
└─$ cat bak_log.sh
#!/bin/bash
###此脚本运用日期定义备份的文件名,方便与每天进行备份不重复
date=`date +"%Y%m%d%H%M%S"`
if [ ! -f /tmp/log-$date.tar.gz ];then
tar -zcPf /tmp/log-$date.tar.gz /var/log
fi
┌──[root@liruilongs.github.io]-[/tmp]
└─$ cd /tmp/;ll -h | grep log-*
-rw-r--r-- 1 root root 4.4M 11月 15 10:51 log-20211115110510.tar.gz
┌──[root@liruilongs.github.io]-[/tmp]
└─$

二、数据库备份

关系数据库备份,这里我们用物理机直接操作,用容器也是一样的。

1、逻辑备份(SQL备份)

###安装mariadb数据库,重启服务
┌──[root@liruilongs.github.io]-[/tmp]
└─$ yum -y install mariadb mariadb-server
┌──[root@liruilongs.github.io]-[/tmp]
└─$ systemctl restart mariadb
####查看数据库服务的进程信息
┌──[root@liruilongs.github.io]-[/tmp]
└─$ ss -ntulpa | grep mysql
tcp    LISTEN     0      50        *:3306                  *:*                   users:(("mysqld",pid=52010,fd=14))
┌──[root@liruilongs.github.io]-[/tmp]
└─$ # 登录测试下
┌──[root@liruilongs.github.io]-[/var/lib/mysql]
└─$ mysql -uroot
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.68-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> show databases-> ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)MariaDB [(none)]> use test
Database changed
MariaDB [test]> show tables-> ;
Empty set (0.00 sec)MariaDB [test]>

mysqldump可以对mysql数据库中的库进行备份,一般的数据库都会提供相应的备份工具,比如MongoDBmongodump

##mysqldump可以对数据库中的库进行备份
##格式: mysqldump -u"用户名" --password="" 数据库名 > 备份名.sql
┌──[root@liruilongs.github.io]-[/]
└─$ mysqldump mysql > mysql.sql
┌──[root@liruilongs.github.io]-[/]
└─$ ll | grep mysql*
-rw-r--r--    1 root root  514667 11月 15 15:52 mysql.sql

脚本编写

┌──[root@liruilongs.github.io]-[/]
└─$ mkdir mysql;cd mysql
┌──[root@liruilongs.github.io]-[/mysql]
└─$ vim mysqldump.sh
┌──[root@liruilongs.github.io]-[/mysql]
└─$ sh mysqldump.sh
┌──[root@liruilongs.github.io]-[/tmp]
└─$ cd /tmp/;ls -h |  grep *.sql
mysql-20211115160404.sql
┌──[root@liruilongs.github.io]-[/tmp]
└─$ cat /mysql/mysqldump.sh
#!/bin/bash
###date 指定备份数据名;iuser 指定登录数据库的用户
###ipass 指定登录密码,默认为空;db 指定要备份的数据库
date=$(date +"%Y%m%d%H%M%S")
iuser=root
ipass=
db=mysql
###文件在/tmp 下不存在时才会进行备份
if [ ! -f /tmp/$db-$date.sql ];then
mysqldump -u$iuser --password="$ipass" $db > /tmp/$db-$date.sql
fi
┌──[root@liruilongs.github.io]-[/tmp]
└─$

2、物理备份(buttaidong)

物理备份即直接备份相关文件,mysql默认的表数据相关文件在/var/lib/mysql

┌──[root@liruilongs.github.io]-[/tmp]
└─$ cd /mysql
┌──[root@liruilongs.github.io]-[/mysql]
└─$ ls
mysqldump.sh
┌──[root@liruilongs.github.io]-[/mysql]
└─$ vim bak_mysql.sh
┌──[root@liruilongs.github.io]-[/mysql]
└─$ sh bak_mysql.sh
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
。。。。。
┌──[root@liruilongs.github.io]-[/tmp]
└─$ cd mysql/
┌──[root@liruilongs.github.io]-[/tmp/mysql]
└─$ ls
columns_priv.frm-20211115160950.tar.gz      proc.frm-20211115160950.tar.gz
columns_priv.MYD-20211115160950.tar.gz      proc.MYD-20211115160950.tar.gz
。。。。。。
┌──[root@liruilongs.github.io]-[/mysql]
└─$ cat bak_mysql.sh
#!/bin/bash
###对数据库中的mysql库下每一个表都进行打包备份;备份文件存放在/tmp/mysql目录下
date=$(date +"%Y%m%d%H%M%S")
db_dir="/var/lib/mysql"
db=mysql[ ! -d /tmp/$db ] && mkdir /tmp/$db
for i in $(ls $db_dir/$db)
do
tar -zcf /tmp/$db/$i-$date.tar.gz $db_dir/$db/$i
done
┌──[root@liruilongs.github.io]-[/mysql]
└─$

这个的tar报错加了个 P参数就不报了,但是没必要,可以正常打包

3、差异备份 inotify+rsync

所谓差异备份,即通过inotify 来监听文件变化,通rsync来增量同步数据。
这里我们本机模拟一下,一般是备份到远程机器上的,备份前一定做ssh免密 ssh-copy-id root@192.168.26.55

部署安装rsync同步软件、inotifywait 监听软件

┌──[root@liruilongs.github.io]-[/var/www/html]
└─$ yum -y install rsync
┌──[root@liruilongs.github.io]-[/mysql]
└─$ yum search inotify-tools
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
============================================== N/S matched: inotify-tools ===============================================
inotify-tools.x86_64 : Command line utilities for inotify
inotify-tools-devel.x86_64 : Headers and libraries for building apps that use libinotifytools名称和简介匹配 only,使用“search all”试试。
┌──[root@liruilongs.github.io]-[/mysql]
└─$ yum -y install inotify-tools
┌──[root@liruilongs.github.io]-[/mysql]
└─$  rpm -qal  inotify-tools
/usr/bin/inotifywait
/usr/bin/inotifywatch
/usr/lib64/libinotifytools.so.0
/usr/lib64/libinotifytools.so.0.4.1
/usr/share/doc/inotify-tools-3.14
/usr/share/doc/inotify-tools-3.14/AUTHORS
/usr/share/doc/inotify-tools-3.14/COPYING
/usr/share/doc/inotify-tools-3.14/ChangeLog
/usr/share/doc/inotify-tools-3.14/NEWS
/usr/share/doc/inotify-tools-3.14/README
/usr/share/man/man1/inotifywait.1.gz
/usr/share/man/man1/inotifywatch.1.gz

差异备份【inotify+rsync】

进行模拟差异备份

┌──[root@liruilongs.github.io]-[~]
└─$ mkdir rsync;cd rsync
┌──[root@liruilongs.github.io]-[~/rsync]
└─$ vim isync.sh
┌──[root@liruilongs.github.io]-[~/rsync]
└─$ mkdir /root/liruilong
┌──[root@liruilongs.github.io]-[~/rsync]
└─$ sh isync.sh &
[1] 17575
┌──[root@liruilongs.github.io]-[~/rsync]
└─$ cd /root/liruilong/
┌──[root@liruilongs.github.io]-[~/liruilong]
└─$ ls
┌──[root@liruilongs.github.io]-[~/liruilong]
└─$ cd /var/www/html/
┌──[root@liruilongs.github.io]-[/var/www/html]
└─$ echo "123456" > liruilong.txt
┌──[root@liruilongs.github.io]-[/var/www/html]
└─$ cat liruilong.txt
123456
┌──[root@liruilongs.github.io]-[/var/www/html]
└─$ cd /root/liruilong/
┌──[root@liruilongs.github.io]-[~/liruilong]
└─$ ls
liruilong.txt
┌──[root@liruilongs.github.io]-[~/liruilong]
└─$ cat liruilong.txt
123456
┌──[root@liruilongs.github.io]-[~/liruilong]
└─$ jobs
[1]+  运行中               sh isync.sh &(工作目录:~/rsync)
┌──[root@liruilongs.github.io]-[~/liruilong]
└─$

备份脚本

┌──[root@liruilongs.github.io]-[~/rsync]
└─$ ls
isync.sh
┌──[root@liruilongs.github.io]-[~/rsync]
└─$ cat isync.sh
#!/bin/bash
##from_dir 为要被同步的目录
from_dir="/var/www/html/"
##将$from_dir下的内容,同步到本机的/root/liruilong/目录下
rsync_cmd="rsync -az --delete $from_dir root@192.168.26.55:/root/liruilong"
##inotifywait监听 $from_dir 目录,目录下发生文件的变化时,执行同步操作,脚本后台运行
while inotifywait -rqq -e modify,move,create,delete,attrib $from_dir
do
$rsync_cmd
done
┌──[root@liruilongs.github.io]-[~/rsync]
└─$

关于 Linux中数据备份的一些总结相关推荐

  1. Linux 中 rsync 备份数据使用实例

    rsync工具用于将文件和目录从一个位置同步到另一个位置.同步的位置可以在本地服务器或远程服务器上.接下来教大家在Linux 中rsync备份数据使用实例 在Centos中使用下面命令安装rsync: ...

  2. 远程linux还原本地bak文件,Linux -- 服务器数据备份恢复策略

    一.Linux 备份恢复基础 1.什么是备份 最简单的讲,备份数据的过程就是拷贝重要的数据到其他的介质之上(通常是可移动的),以保证在原始数据丢失的情况下可以恢复数据.一次备份可能是简单的 cp命令, ...

  3. linux存储数据备份_使用此Linux实用程序备份手机的存储空间

    linux存储数据备份 移动设备的最大失败之一是将数据从设备传输到计算机的难度. 移动设备对此有着悠久的历史. 诸如Pilot和Handspring PDA设备之类的早期移动设备需要特殊的同步软件(您 ...

  4. 备份数据 宝塔linux_宝塔面板教程大全--宝塔linux面板数据备份教程

    宝塔面板教程大全--宝塔linux面板数据备份教程 这一部分数据备份包括网站数据备份和数据库的备份.如果不了解数据备份的同学,此章节内容建议认真看一下,做好数据备份是你网站数据安全的最重要的保障! 本 ...

  5. linux下修改ext3硬盘为nst,Linux服务器数据备份恢复策略(3)

    cpio 命令操作举例 1. 拷贝当前目录中所有文件到磁带设备 /dev/rmt0,输入:find . | /usr/sysv/bin/cpio -oc >/dev/rmt0 2. 从 cpio ...

  6. Linux系统管理---数据备份

    目录 1.数据备份简介 1.Linux服务器中哪些数据需要备份 1)Linux系统重要数据 2)安装服务的数据 配置文件: 网页主目录: 日志文件: 二.备份策略(方式) 1.完全备份 2.增量备份 ...

  7. linux服务器数据备份到本地硬盘_等保数据备份和恢复关键点,这些你该知道!...

    摘要:随着云计算.大数据.物联网.移动互联网和工业控制信息系统等新兴技术的发展,网络安全需求变得更加繁杂,因此,等保制度应势升级至2.0时代. 随着云计算.大数据.物联网.移动互联网和工业控制信息系统 ...

  8. linux centos数据备份,centOS系统的备份与还原

    第一章.准备工作 一.镜像备份与还原 U盘一个(※镜像备份通道) 要备份的centos系统 系统镜像备份的目的机器(※centos系统,根据要备份的系统大小,决定目的机器空间大小.备份机器–>镜 ...

  9. Linux中rsync备份数据使用实例

    rsync工具用于将文件和目录从一个位置同步到另一个位置.同步的位置可以在本地服务器或远程服务器上. 在Centos中使用下面命令安装rsync: [root@localhost ~]# yum -y ...

最新文章

  1. 力扣(LeetCode)刷题,简单题(第7期)
  2. Payara基金会发布全面支持MicroProfile 2.0的5.183版Payara Server和Payara Micro
  3. 通过yumdownloader下载rpm包
  4. C 标准库 - ctype.h之isalnum使用
  5. 牛客网 【每日一题】6月10日 失衡天平
  6. 可缺省的CSS布局——张鑫旭
  7. C#链接mysql 新手容易出错的问题
  8. springboot核心配置文件 application.properties 或者 yml 常用配置详解
  9. C语言TCP客户端获取时间
  10. 仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表中为标识列指定显式值问题...
  11. [转载] 【python】Python中*args和**kwargs的区别(在Python中如何使用可变长参数列表)
  12. [转]『TensorFlow』读书笔记_TFRecord学习
  13. Ubuntu 远程使用ssh 开启服务器终端的方法
  14. 杨永强“兑”现承诺 乐视云发力VaaS
  15. 如何获取EasyCVR平台设备通道的RTMP视频流地址?
  16. java sqlite读取数据库_java如何读写sqlite数据库
  17. BBR 加速比收敛图解
  18. vue批量打包下载图片
  19. 集合-HashTable
  20. opencv光线补偿_教你了解摄像机的背光补偿

热门文章

  1. linux系统一般用来干嘛
  2. KU060板卡设计资料原理图第636篇:基于FMC的KU060高性能 PCIe 载板
  3. KU5P加速计算卡设计资料第389篇:基于KU5P的双路100G光纤网络加速计算卡
  4. 平面几何中点到直线上的投影计算
  5. 《Python自然语言处理-雅兰·萨纳卡(Jalaj Thanaki)》学习笔记:06 高级特征工程和NLP算法
  6. 西安航天民芯电子 推出原厂原装MT36291 SOT23-6 PIN对PIN兼替FP6291LR-G1 MT3608
  7. 一套代码实现1对1 、1对N在线课堂与低延迟大班课
  8. 十分钟搞懂Lombok使用与原理
  9. 机器学习原理篇:基础数学理论 Ⅱ
  10. python 字符串长度