如何实现SH多个数据库的有效备份? (sh 多个数据库备份)

在现代社会,数据库已经成为企业和机构储存和管理信息的重要手段。随着各类应用和业务的增多,数据库规模也在逐渐扩大,备份成了必不可少的措施。特别是在一些对数据完整性、可用性要求较高的行业中,如金融、医疗等,数据备份显得尤为重要。

上海(SH)作为中国经济发展的重要城市,其企业机构数量众多,涉及到的数据也相当庞大。因此,如何实现SH多个数据库的有效备份,成为了一个需要解决的问题。

一、了解备份的方式和方法

在进行SH多个数据库的备份之前,首先需要了解下备份的方式和方法。传统的备份方式主要包括完全备份、增量备份和差异备份。完全备份是将所有的数据备份全部复制一份,实现单机数据的完全还原。增量备份是针对完全备份之后的数据进行备份,只备份新修改的数据。差异备份则是备份增量备份之后发生的变化。

当然,这些备份方式都有各自的优劣,需要根据具体情况选择。但无论选择哪种方式,选定一个合适的备份时间是十分重要的。在选择备份时间时不仅要考虑数据库的数据量大小,还要考虑备份的时间以及备份数据的重要程度等因素。

二、选择备份工具

为了更加有效地备份SH多个数据库,备份工具的选择也很关键。市面上有很多备份工具,如Oracle Data Pump、MySQLdump等等。这些备份工具功能强大,唯一的缺点就是速度比较慢。因此,针对SH多个数据库的备份,应该选择一些速度更快的备份工具。

在备份工具的选择上,还要考虑一些其他的因素,如备份所需的空间、可靠性和易用性等。而备份的可靠性应该是最重要的因素之一,容易出现数据丢失、备份失败等问题,造成极大的损失。

三、增强数据安全

数据安全是备份的最终目的。为了增强SH多个数据库的数据安全性,可以采用以下措施:

1. 加密备份数据: 对备份数据进行加密处理,保证备份数据安全性。

2. 多地备份: 对备份数据进行多地备份,弥补备份数据所处地点在突发事件中可能存在的风险。

3. 数据库自动备份: 进行自动化数据库备份,实现24小时全天候的数据备份。

4. 数据库灾备: 对数据库进行灾备和备份,以面对自然灾害、硬件故障等突发事件。

四、

如何实现SH多个数据库的有效备份,是一个攸关企业和机构数据安全的重要问题。在备份前需要了解备份方式和方法,选择一个合适的备份工具以加快备份速度。增强数据安全性的措施也需要一并考虑。最重要的是,要认识到数据备份的意义,为数据的可持续性和安全性贡献力量。

相关问题拓展阅读:

如何在linux下实现mysql数据库每天自动备份

方法/步骤

1. 在根目录下新建定时备份存储文件夹mkdir /mysql_backup

2.新建备份的脚本vim /root/mysql_backup.sh

3.在mysql_backup.sh中输入内容:

backupdir=/mysqlbackup time=` date +%Y%m%d%H`mysqldump -uroot -proot abc | gzip > $backupdir/abc$time.sql.gzfind $backupdir -name “abc*.sql.gz” -type f -mtime +5 -exec rm {} \; > /dev/null 2>&1

——————————————————————————————

说明:

backupdir = 备份文件存储文件夹time = 获取当前时间 年月日时()2023年11月14日17点mysqldump 备份数据库指令 abc要备份的数据库find $backupdir -name “abc*.sql.gz” -type f -mtime +5 -exec rm {} \; > /dev/null 2>&1 删除5天前的备份文件

3 :wq 文件保存成功后

先按一下键盘上的岁稿 ” esc ” 然后输入 ” :wq “

执行一下脚本,看根目录下的mysql_backup文件夹是否有.sql.gz后缀名的文件

./mysql_backup.sh

写入每天的定时任务 修改 /etc/crontabvi /etc/crontab

按键盘上的”i”,开始输入

02 4 * * * root /root/mysql_backup.sh

表示每天4点2分执行备份任务

先按一下键盘上的 ” esc ” 然后输入 ”乎闹孝 :wq “ 表弯谨示保存

重新启动crond

service crond restart 或 /etc/rc.d/init.d/crond restart

本机运行的MySQL 数据库 如何安全的备份/还原

应该所有的贺悄数据库操作软件都有备份功能的吧?

难道你没用任何工具?

或者你直接上网搜mysql备份工具,能卜粗搜出好多的。型拍镇

一般是即时备份。做主从。或者是每天增量备份。

本文是在linux下,mysql 4.1.14版本下测试的,经过适当修改可能适合mysql 4.0,5.0及其其他版本.

本文适合于没有启动复制功能的mysql,如果启动了复制,可能不需要采取这种备份策略或者需要修改相关参数.

每个人的备份策略都可能不同,所以请根据实际情况修改,做到举一反三,不要照搬照抄,可能会造成不必要的损失.

希望你明白这个脚本要干什么工作!

脚本描述

每7天备份一次所有数据,每天备份禅贺团binlog,也就是增量备份.

(如果数据少,每天备份一次完整数据即可,可能没必要做增量备份)

作者对shell脚本不太熟悉,所以很多地方写的很笨 🙂

开启 bin log

在mysql 4.1版本中,默认只有错误日志,没有其他日志.可以通过修改配置打开bin log.方法很多,其中一个是在/etc/my.cnf中的mysqld部分加入:

log-bin

这个日志的主要作用是增量备份或者复制(可能还有其他用途).

如果想增量备份,必须打开这个日志.

对于数据库操作频繁的mysql,这个日志会变得很大,而且可能会有多个.

在数据库中flush-logs,或者使用mysqladmin,mysqldump调用flush-logs后并且使用参数delete-master-logs,这些日志文件会消失,并产生新的日志文件(开始是空的).

所以如果从来不备份,开启日志可能没有必要.

完整备份的同时可以调用flush-logs,增量备份之前flush-logs,以便备份最新的数据.

完整备份脚本

如果数据库数据比较多,我们一般是几天或者一周备份一次数据,以免拍芹影响应用运行,如果数据量比较小,那么一天备份一次也无所谓了.

#!/bin/sh

# mysql data backup script

# by scud

#

#

# use mysqldump –help,get more detail.

#

BakDir=/backup/mysql

LogFile=/backup/mysql/mysqlbak.log

DATE=`date +%Y%m%d`

echo ” ” >> $LogFile

echo ” ” >> $LogFile

echo “-” >> $LogFile

echo $(date +”%y-%m-%d %H:%M:%S”) >> $LogFile

echo “” >> $LogFile

cd $BakDir

DumpFile=$DATE.sql

GZDumpFile=$DATE.sql.tgz

mysqldump –quick –all-databases –flush-logs

–delete-master-logs –lock-all-tables

> $DumpFile

echo “Dump Done” >> $LogFile

tar czvf $GZDumpFile $DumpFile >> $LogFile 2>&1

echo “Backup Success!” >> $LogFile

rm -f $DumpFile

#delete previous daily backup files:采用增量备份的文件,如果完整备份后,则删除增量备份的文件.

cd $BakDir/daily

rm -f *

cd $BakDir

echo “Backup Done!”

echo “please Check $BakDir Directory!”

echo “copy it to your local disk or ftp to somewhere !!!”

ls -al $BakDir

上面的脚本把mysql备份到本地的/backup/mysql目录,增量备份的文件放在/backup/mysql/daily目录贺橘下.

注意:上面的脚本并没有把备份后的文件传送到其他远程计算机,也没有删除几天前的备份文件:需要用户增加相关脚本,或者手动操作.

增量备份

增量备份的数据量比较小,但是要在完整备份的基础上操作,用户可以在时间和成本上权衡,选择最有利于自己的方式.

增量备份使用bin log,脚本如下:

#!/bin/sh

#

# mysql binlog backup script

#

/usr/bin/mysqladmin flush-logs

DATADIR=/var/lib/mysql

BAKDIR=/backup/mysql/daily

###如果你做了特殊设置,请修改此处或者修改应用此变量的行:缺省取机器名,mysql缺省也是取机器名

HOSTNAME=`uname -n`

cd $DATADIR

FILELIST=`cat $HOSTNAME-bin.index`

##计算行数,也就是文件数

COUNTER=0

for file in $FILELIST

do

COUNTER=`expr $COUNTER + 1 `

done

NextNum=0

for file in $FILELIST

do

base=`basename $file`

NextNum=`expr $NextNum + 1`

if

then

echo “skip lastest”

else

dest=$BAKDIR/$base

if(test -e $dest)

then

echo “skip exist $base”

else

echo “copying $base”

cp $base $BAKDIR

fi

fi

done

echo “backup mysql binlog ok”

增量备份脚本是备份前flush-logs,mysql会自动把内存中的日志放到文件里,然后生成一个新的日志文件,所以我们只需要备份前面的几个即可,也就是不备份最后一个.

因为从上次备份到本次备份也可能会有多个日志文件生成,所以要检测文件,如果已经备份过,就不用备份了.

注:同样,用户也需要自己远程传送,不过不需要删除了,完整备份后程序会自动生成.

访问设置

脚本写完了,为了能让脚本运行,还需要设置对应的用户名和密码,mysqladmin和mysqldump都是需要用户名和密码的,当然可以写在脚本中,但是修改起来不太方便,假设我们用系统的root用户来运行此脚本,那么我们需要在/root(也就是root用户的home目录)创建一个.my.cnf文件,内容如下

password =password

user= root

user=root

password=password

注:设置本文件只有root可读.(chmod 600 .my.cnf )

此文件说明程序使用mysql的root用户备份数据,密码是对应的设置.这样就不需要在脚本里写用户名和密码了.

自动运行

为了让备份程序自动运行,我们需要把它加入crontab.

有2种方法,一种是把脚本根据自己的选择放入到/etc/cron.daily,/etc/cron.weekly这么目录里.

一种是使用crontab -e放入到root用户的计划任务里,例如完整备份每周日凌晨3点运行,日常备份每周一-周六凌晨3点运行.

要想简单点的就去下一个Navicat for MySQL,这是MySql界面化的软件,更好下载一个中文版的,装上软件之后瞎罩御,那里有很详细的向导设置磨岩,你肯定可以学闷睁会。

简单的话,找到数据库文件,直接复制备份,具置看你的mysql配置

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

每个企业级数据库都会有配套的备份工具,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文件,锁定时间会更长,对业务影响较大。

我曾遇到过部署在虚拟机的实例有12023多张表,当时使用的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 “

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模式 磁盘读写差别很大,说明读了很多未修改的页面。

sh 多个数据库备份的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于sh 多个数据库备份,如何实现SH多个数据库的有效备份?,如何在linux下实现mysql数据库每天自动备份,本机运行的MySQL 数据库 如何安全的备份/还原的信息别忘了在本站进行查找喔。


数据运维技术 » 如何实现SH多个数据库的有效备份? (sh 多个数据库备份)