什么软件可以实现数据库备份?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么软件可以实现数据库备份?相关的知识,希望对你有一定的参考价值。

基本上现在比较流行的几种就是豌豆荚,360手机助手,应用宝,91手机助手等等,个人一直使用百度云。列举几个:

方法1、豌豆荚手机精灵

豌豆荚手机精灵”是一款功能齐全、界面美观的 android 手机管理软件,用户可通过“豌豆荚手机精灵”在电脑上管理手机中的通讯录、短信、应用程序和音乐等,也能在电脑上备份手机中的资料。此外,可直接一键下载优酷网、土豆网、新浪视频等主流视频网站视频到手机中,本地和网络视频自动转码,传进手机就能观看。

方法2、钛备份(Titanium Backup)

钛备份Titanium Backup,备份你的程序及程序数据,并支持定时备份等功能。功能很强大,有此软件,不管你的格机还是重刷ROM,在重装软件时都是无痛的,非实适用经常捣鼓手机有机友。

方法3、酷盘

酷盘是国内主流的免费云存储服务,它不仅支持照片、文档、音乐等文档的同步云存储与分享,在手机上安装酷盘客户端后,您就可随时在PC、网络及手机之间云端在线同步/备份/分享文件。

方法4、404加密(404FileEncrypt)

404文件加密是一款应用于Android手机上的文件加密软件。帮助用户隐藏存放于手机上的隐私信息,具备随时备份与恢复的功能,同时提供新颖的图片验证登陆方式。

文件加解密,备份与恢复等功能,一款最强手机安全保护软件。
参考技术A 云祺科技的容灾备份系统能够支持Sql 、mysql 、SQLServer数据库的备份,你可以去试用下 参考技术B

数据备份是数据容灾的最后一道防线,即便有着两地三中心的架构,备份也依然重要。如果备份出问题,备份时影响了交易业务,备份数据无法恢复,这些也是企业难以承受的。所以选择合适的备份工具尤为重要。


每个企业级数据库都会有配套的备份工具,MEB(MySQL Enterprise Backup)就是MySQL企业版中非常重要的工具之一,是为企业级客户提供的数据备份方案。


Xtrabackup一直作为MEB 开源版备胎而存在,从MySQL 8.0开始情况可能会变得有所不同。


在 MySQL 8.0的Backup Lock、Redo Log Archiving、Page Tracking等新特性的加持下,MEB备份/恢复体验会更好,目前xtrabackup还不支持这些特性。


MySQL 企业版还有哪些功能?


特性1:Backup Lock


8.0之前使用xtrabackup或MEB做物理备份,为了保证备份时InnoDB引擎表与其他引擎数据文件、及binlog日志的一致性会上全局读锁,再拷贝非InnoDB文件,这期间MySQL会变成只读,数据无法写入。表数量越多,可能加上时间越长,如果使用的xtrabackup 不小心没加rsync参数,逐个拷贝frm文件,锁定时间会更长,对业务影响较大。


我曾遇到过部署在虚拟机的实例有12000多张表,当时使用的xtrabackup,备份脚本中没加rsync参数,结果锁了十几分钟,而MEB就没有这样的问题。


MySQL 8.0支持轻量级备份锁 LOCK INSTANCE FOR BACKUP,数据字典也重构了由InnoDB存储。若不创建非InnoDB表,MEB默认使用备份锁获取binlog日志一致性位置,并阻止DDL操作,但不影响DML操作。


    只有InnoDB表,仅上备份锁


    请点击输入图片描述

    若有非InnoDB表,上全局锁


    请点击输入图片描述

    特性2:Redo Log Archiving

    MEB能做到在线热备,备份时不影响数据库读写,这是利用了InnoDB事务日志,在备份期间持续监视redo log的变化,读取增量变化,写入到ibbackup_logfile,也就不需要上锁来保障备份一致性。(对非InnoDB的文件需要上读锁拷贝)

    如果备份期间数据库写入负载特别大,而写入ibbackup_logfile速度较慢,redo log size也不大,很可能会出现ibbackup_logfile的写入速度跟不上redo log记录生成速度,redo log 空间不够时需要覆写日志文件,那么来不及写入ibbackup_logfile的记录会丢失,导致备份失败。

    MEB 4.1对此做了优化,将redo log处理线程拆分成多线程分工合作,提高处理redo log的效率,降低了redo log覆写造成备份失败的概率,但redo log新增速度和ibbackup_logfile写入速度悬殊太大,问题依然会发生。

    MySQL 8.0.17支持了redo log archiving 彻底解决了此问题,备份前设置innodb_redo_log_archive_dirs,指定redo log归档目录。MEB备份时自动开启日志归档,当checkpoint时会将旧记录归档到此目录,后续从归档文件中读取redo日志记录,避免了覆写可能导致的redo记录丢失。


    请点击输入图片描述

    注意:innodb_redo_log_archive_dirs 不能在数据目录下,目录权限要求是700

    特性3:Page Tracking

    Page Tracking 是为优化增量备份效率,减少不必要的数据页扫描。

    增量备份当前有3种扫描模式:

    page-track:利用LSN精确跟踪上次备份之后被修改页面,仅复制这些页面,效率最快。

    optimistic:扫描上次备份之后被修改的InnoDB 数据文件中,找出并拷贝修改的页面。依赖系统时间,使用存在限制。

    full-scan:扫描所有InnoDB数据文件,找出并拷贝自上次备份之后修改的页面,效率最慢

    1、利用page-track增量备份,需先安装备份组件

    mysql> INSTALL COMPONENT "file://component_mysqlbackup";

    2、在全备前开启page-track

    SELECT mysqlbackup_page_track_set(true);

    3、全备之后,做增量备份时指定若满足page tracking条件,默认会使用page-track模式,否则会使用full-scan模式,也可以指定--incremental=page-track。

    mysqlbackup --incremental-backup-dir=backup_incr --trace=3 --incremental=page-track --incremental-base=history:last_full_backup backup

    incremental-base有3种选择

    last_backup:基于前一次备份做增备,前一次备份可能是增备,也可能是全备。这种方式全备之间可能会有多个增备,每次增量可能比较小,但恢复时需要逐个合并。

    last_full_backup:基于前一次全备做增备。这种方式增备会越往后体积可能越大,但恢复时只需要合并最后一次增量备份。

    dir:基于前一次的备份目录,前一次备份可能是增备,也可能是全备。

    测试对比full-scan 和page-track ,在变更页小于总体50%的情况下 ,备份效率至少能有1倍的速度提升。

    page-track 模式 磁盘读写均衡,说明读写的都是修改页面。

    请点击输入图片描述

    full-scan模式 磁盘读写差别很大,说明读了很多未修改的页面。

    请点击输入图片描述

Rsync备份服务

一、Rsync 原理图

技术分享图片

二、Rsync 原理描述

  2.1:什么是Rsync

    Rsync是备份的一款软件,它可以实现全量备份、增量备份,也可以在不改变内容、属性的情况下进行同步备份,端口默认是873

  2.2:Rsync的三种工作模式

    Rsync支持本地备份(相当于本地的CP命令)、远程备份(通过SSH)、通过daemon模式(服务端、客户端)可以进行Pull拉取数据和Push推送数据

  2.3:Rsync原理阐述(针对常用的daemon模式)

    ① Rsync客户端执行Rsync命令,去向服务端认证

    ② 首先服务端会认证发送访问的虚拟用户(在服务端配置的auth users参数)

    ③ Rsync客户端告诉服务端虚拟用户,认证成功或者失败

    ④ 认证客户端发送的密码文件(客户端发送时--password-file = /etc/rsyncd.pas)

    ⑤ 认证成功同步数据

三、Rsync 优缺点

  3.1:优点(使用它的理由)

    ①  增量备份,支持socket(daemon)集中备份(支持推拉,都是以客户端为参照物)

    ②  支持远程shell通道模式还可以密码ssh传输

    ③ 支持断点续传

    ④ 可以排除指定的文档或者目录,相当于tar的排除功能

    ⑤ 支持匿名认证远程模式传输,实现方便安全的数据传输

  3.2:缺点(什么时候要用其他的方法)

    ① 大量小文件同步时间长,有时候会出现进程突然的停止

    ② 同步大文件的时候会中断,没有完成同步前是隐藏文件(点开头的文件),但是可以通过它的断点续传来实现传输

四、Rsync 什么环境使用

  ① 利用定时任务(crontab)+rsync实现定时同步数据,主要同步的信息一般是内部人员使用的文件

  ② 利用实时同步软件(inotify)+rsync实现实时的同步数据,主要同步的信息是用户或者客户上传到服务器的文件

五、Rsync 搭建部署

  5.1:语法及常用参数

常用参数:
-avz:保持属性,输出详细信息
-e:    隧道模式传输(SSH)
--delete:删除(无差异同步,两个文件保持一致)
--exclude=*.log: 要排除的文件
--bwlimit=10: 限速同步
--progress:在传输时显示传输的过程
--partial:断点续传

基于rsync daemon客户端同步语法:
拉取: rsync [OPTION...] [[email protected]]HOST::SRC... [DEST]
        rsync [OPTION...] rsync://[[email protected]]HOST[:PORT]/SRC... [DEST]
推送: rsync [OPTION...] SRC... [[email protected]]HOST::DEST
        rsync [OPTION...] SRC... rsync://[[email protected]]HOST[:PORT]/DEST

  5.2:在服务端安装rsync软件

安装:
yum -y install rsync (Centos7 已经默认安装了)
检查:
rpm -qa rsync
结果出现表示已安装 rsync-3.0.9-18.el7.x86_64

  5.3:在服务端修改rsync的主配置文件(/etc/rsyncd.conf)

在etc下面有rsyncd.conf这个文件,这个文件中有一些注释信息,就是配置文件中的规则
我们要进行自定义配置文件:
cat >/etc/rsyncd.conf<<EOF
uid = root                      # 用户,远端的命令使用rsync访问共享目录
gid = root                      # 用户组
port = 873                      # 服务端口
address = 192.168.163.129       # 服务地址 一般使用内网地址

pid file = /var/run/rsyncd.pid  # 进程号文件
lock file = /var/run/rsyncd.lock# 锁文件
log file = /var/log/rsync.log   # 日志文件

auth users = rsyncadmin         # 虚拟用户
secrets file = /etc/rsyncd.pas  # 密码文件
motd file = /etc/rsyncd.motd    # 描述文件(这个配置可以写到每个模块中,每个不同的同步就会显示不同的描述信息了)

transfer logging = yes          # 使 rsync 服务器将传输操作记录到传输日志文件。默认值为false
log format = "%o [ %a ] %m (%u) %f %b %l %b"    # 日志格式
syslog facility = daemon        # 指定 rsync 发送日志消息给 syslog 时的消息级别
use chroot = no                 # 默认为 true,在传输文件之前首先 chroot 到 path 参数所指定的目录下;优点,安全;缺点,需要 root 权限,不能备份指向 path 外部的符号连接所指向的目录文件
timeout = 900                   # 超时时间
ignore nonreadable = yes        # 是否忽略错误
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2  # 用来指定那些在传输之前不进行压缩处理的文件
max connections = 20            # 最大连接数

read only = false               # 手动推送 可写
write only = true               # 可读
list = false

hosts allow = 192.168.163.0/24  # 允许访问地址
hosts deny = *                  # 拒绝访问地址(这个最好是不用;allow 和 deny同时存在的时候会出现不生效的情况)


# 模块配置
[date_backup]                   # 模块名
path = /opt/data_backup         # 备份目录绝对路径
EOF

  5.4:在服务端创建身份认证文件

生成身份认证文件(rsyncadmin虚拟用户123456密码)
ehco "rsyncadmin:123456" >> /etc/rsyncd.pas
特别重要的一点
一定给这个文件600权限不然你会很惨的
chmod 600 /etc/rsyncd.pas

  5.5:在服务端创建备份的目录(配置文件中模块path的目录)

创建备份目录(同配置文件中模块的path路径)
mkdir -p /opt/backup

  5.6:在服务端创建描述信息文件

创建欢迎描述信息主要是在执行客户端推送的时候有个显示
echo "welcome rsync server" >> /etc/rsyncd.motd

  5.7:在服务端启动rsync服务

启动两种方式
rsync --daemon
systemctl start rsyncd
检查
ps -ef | grep rsync | grep -v grep
netstat -lntup | grep rsync

  5.8:在客户端创建备份目录

创建备份目录的主要原因是为了对客户端要备份的文件进行统一打包推送
mkdir -p /opt/backup

  5.9:在客户端创建身份认证密码文件(只包含密码)

和服务端的密码保持一致,因为传输数据需要进行密码的认证
echo "123456" >> /etc/rsyncd.pas
同样一定要给600权限
chmod 600 /etc/rsyncd.pas

  5.10:在客户端测试往服务端推送拉取文件

使用推送的方式,把数据推到服务端
        # 第一种方式(需要修改read only = false)
        rsync -avz --progress --delete /opt/backup/ [email protected]::date_backup/ --password-file=/etc/rsyncd.pas
 
        # 第二种方式(需要修改write only = false)
        rsync -avz --progress --delete /opt/backup/ rsync://[email protected]/date_backup/ --password-file=/etc/rsyncd.pas
 
        # 过滤所有得log文件
        rsync -avz --progress --exclude=*.log --delete /opt/backup/ [email protected]::date_backup/ --password-file=/etc/rsyncd.pas
        rsync -avz --progress --exclude={a,b} --delete /opt/backup/ [email protected]::date_backup/ --password-file=/etc/rsyncd.pas  # 排除多个文件
使用拉取的方式
        # 方法一
        rsync -avz /opt/backup/ --progress --delete [email protected]::date_backup --password-file=/etc/rsyncd.pas
 
        # 方法二
         rsync -avz --progress /opt/backup/ rsync://[email protected]/date_backup/ --password-file=/etc/rsyncd.pas
 
PS:接下来就可以设置计划任务crontab来定时的执行备份任务了(--delete 参数最好不要加 会出现血的惨案)
其他参数:
    限速:
        rsync -avz --progress --exclude=*.log --bwlimit=10 --delete /opt/backup/ [email protected]::date_backup/ --password-file=/etc/rsyncd.pas

  5.11:其他的两种方式的使用

本地方式:
rsync -avz /etc/hosts /mut/

远程ssh方式:
rsync -avz /etc/hosts -e ‘ssh -p 22‘ [email protected]:/mnt/
如果慢可以在ssh配置中设置两个参数(ssh_config文件)
GSSAPIAuthentication yes 改为 no
UseDNS  yes 改为 no

六、Rsync 扩展(实时同步)

  6.1:inotify+rsync

  6.2:sersync

  6.3:lsyncd

七、Rsync 总结

  Rsync这个工具其实还是挺好用的在工作中用的也很多,它的优点完全大于缺点,所有事实上在工作中它的有点会得到充分的利用的,缺点也是可以使用其他的方式解决的,这个工具挺重要的 在linux属于5星软件的,还有就是想要快速的定位错误真的需要你对整个流程、原理要了解的,掌握它相当于掌握了linux的一款初级神器呦

八、Rsync 错误总结

1、密码输入错误,虚拟用户名错误

2、secrets file = /etc/rsyncd.pad指定的密码文档和实际密码文档名称不一致

3、/etc/rsyncd.pad文档权限不是600

4、rsyncadmin:123456密码配置文档后面注意不要有空格

5、rsync客户端密码文档中只输入密码信息即可,不要输入虚拟认证用户名称

6、推送时双冒号后面为模块名date_backup,而不是路径/date_backup

7、telnet连接rsync服务ip地址873端口,查看服务是否启动 telnet 192.168.163.129 873

以上是关于什么软件可以实现数据库备份?的主要内容,如果未能解决你的问题,请参考以下文章

服务器的数据备份方法都有哪些

云计算是什么

如何使用软件硬件进行服务器备份?

Rsync备份服务

Mysql如何实现常规+增量备份

mysql大网站数据库的备份,怎么进行增量备份和完全备份快速一点,用啥工具吗,还是代码!