三种mysql备份方式让你轻松备份数据mysql三种备份方式

三种MySQL备份方式让您轻松备份数据。
对于MySQL数据库来说,备份非常重要,因为它可以保证数据安全不丢失并且能够得到保证。
MySQL提供了多种备份方法。
本文将讨论三种常用的MySQL方法并提供相应的代码示例。
1.计划备份计划备份是最常见的备份方法。
通过定期备份,可以尽快恢复数据,并且不会因忘记备份而导致数据丢失。
使用计划备份需要执行以下步骤:第1步:制作备份脚本请参考以下示例代码:#!/bin/bashMYSQL_USER="yourusernamee"MYSQL_PASSWORD="yourpassword"MYSQL_DATABASE="yourdatabase"BACKUP_DIR="/var/备份/mysql"DATE=$(日期+%d-%m-%Y)mysqldump-u$MYSQL_USER-p$MYSQL_PASSWORD$MYSQL_DATABASE>$BACKUP_DIR/$MYSQL_DATABASE-$DATE.sqlgzip$BACKUP_DIR/$MYSQL_DATABASE-$DATE.sqlStep2:创建计划任务。
使用crontab命令轻松创建关闭任务。
运行计划任务的命令是:crontab-e并在文件末尾添加以下内容:00***sh。
/path/to/backup.sh命令表示每天凌晨0:00执行备份脚本。
2、远程备份从远程服务器备份数据是一种比较安全、方便的备份方式,可以保证即使本地服务器出现故障,也可以从远程服务器恢复数据。
以下是将MySQL数据库备份到远程服务器的步骤:步骤1:创建备份脚本。
您可以使用scriptbackupscp命令将数据备份到远程服务器。
#!/bin/bashMYSQL_USER="您的用户名"MYSQL_PASSWORD="您的密码"MYSQL_DATABASIS="您的数据库"BACKUP_DIR="/var/backup/mysql"DATE=$(date+%d-%m-%Y)mysqldump-u$MYSQL_USER-p$MYSQL_PASSWORD$MYSQL_DATABASE>$BACKUP_DIR/$MYSQL_DATAB/$ASE-$DATE.sqlgzip$BACKUP_DIR/$MYSQL_DATABASE-$DATE.sqlscp$BACKUP_DIR/$MYSQL_DATABASE-$DATE.sql.gzuser@remotehost:/var/backup/mysql/步骤2:使用h-keygen创建SSH密钥对命令创建SSH密钥匹配并将公钥添加到远程服务器的身份验证密钥文件中。
本地和远程主机在服务器之间配置无密码登录,这样您就不需要在备份之间输入密码。
您可以参考以下示例代码:ssh-add~/.ssh/id_rsa3。
多重备份策略多重备份计划保留备份数据的多个版本,保证即使最新的备份数据损坏,也可以恢复数据。
历史数据备份。
使用多种备份策略的步骤如下:第1步:制作备份脚本。
您可以参考以下示例代码:#!/bin/bashMYSQL_USER="yourusername"MYSQL_PASSWORD="yourpassword"MYSQL_DATABASE="yourdatabase"BACKUP_DIR="/var/backup/mysql"DATE=$(date+%d-%m-%Y)mysqldump-u$MYSQL_USER-p$MYSQL_PASSWORD$MYSQL_DATABASE>$BACKUP_DIR/$MYSQL_DATABASE-$DATE.sqlgzip$BACKUP_DIR/$MYSQL_DATABASE-$DATE.sqlln-sf$BACKUP_DIR/$MYSQL_DATABASE-$DATE.sql.gz$BACKUP_DIR/$MYSQL_DATABASE-latest.sql.gzStep2:计划任务创建并使用crontab创建每日备份作业。
您可以参考以下示例代码:00***sh/path/to/backup.sh第三步:保存历史备份您可以将历史备份保存在一个特殊的文件夹中,并通过文件名中的日期来区分此示例代码:find/var/backup/mysql-name"*.gz"-typef-mtime+7-execrm{}\;该命令的意思是删除超过7天的备份。
结论备份MySQL数据可以防止数据丢失和损坏。
回切、远程备份和多重备份计划是三种常用的备份方法。
在备份MySQL数据的过程中,需要保证数据备份的安全性、稳定性和一致性。

浅谈MySQL数据库备份的几种方法

常见的mysql备份方式有mysqldump、mysqlhotcopy、BACKUPTABLE、SELECTINTOOUTFILE、备份二进制日志(binlog),或者直接复制数据文件和相关配置文件。
MyISAM表以文件的形式存储,因此可以使用上面列出的一些方法相对轻松地备份它们。
Innodb中的所有表都存储在同一个数据文件ibdata1中(可以是多个文件,也可以是单独的表空间文件)。
可以通过复制数据文件并备份binlog来备份,或者使用mysqldump来备份。
1.mysqldump备份mysqldump采用SQL级别的备份机制,将数据表导出到SQL脚本文件中。
这也是最常用的备份方法。
示例:mysqldump-uroot-pdatabasetable>/home/jobs/back.sqlmmysqldump还可以用于增量备份。
网上有很多mysqldump相关的参数,这里不再赘述。
[可以配合mysql企业版使用。
当然mysqlbackup是收费的。
]mysqlhotcopy是一个PERL程序。
使用LOCKTABLES、FLUSHTABLES以及cp或scp快速备份数据库。
这是备份数据库或单个表的最快方式,但只能在数据库文件(包括数据表定义文件、数据文件和索引文件)所在的机器上运行。
mysqlhotcopy只能用于备份MyISAM,并且只能在基于Unix和NetWare的系统上运行。
mysqlhotcopy支持一次复制多个数据库,还支持正则表达式。
示例:root#/usr/local/mysql/bin/mysqlhotcopy-h=localhost-u=root-p=123456database/tmp(将数据库目录database复制到/tmp)root#/usr/local/mysql/bin/mysqlhotcopy-h=localhost-u=root-p=123456db_name_1...db_name_n/tmproot#/usr/local/mysql/bin/mysqlhotcopy-h=localhost-u=root-p=123456db_name./正则表达式//tmp有关详细的使用信息,请参阅手册,或者通过调用以下命令来获取mysqlhotcopy的帮助:perldoc/usr/local/mysql/bin/mysqlhotcopy使用mysqlhotcopy时,可以使用SELECT和RELOAD(FLUSHTABLES)权限,并且需要datadir/数据库名称请注意,您还需要读取该目录的权限。
通过恢复mysqlhotcopy备份的整个数据库目录可以直接复制到mysqld中指定的datadir(本例为/usr/local/mysql/data/)。
同时,您需要注意权限问题。
例如:root#cp-rfdb_name/usr/local/mysql/data/root#chown-Rnobody:nobody/usr/local/mysql/data/(将db_name目录的所有者更改为mysqld执行用户3.备份SQL语法3.1备份的BACKUPTABLE语法实际上是mysqlhotcopy工作原理与此类似锁定表,然后复制数据文件。
虽然可以实现在线备份,但效果并不理想,不推荐。
只复制表结构文件和数据文件索引;恢复速度较慢,因为文件不是同时复制的。
示例:BACKTABLEtbl_nameTO'/tmp/db_name/';运行此SQL需要FILE权限,并且目录/tmp/db_name/会被导出的文件覆盖,以避免安全问题。
问题。
要恢复使用BACKUPTABLE方法备份的文件,请运行RESTORETABLE语句恢复数据表。
示例:RESTORETABLEFROM‘/tmp/db_name/‘;权限要求与上面相同。
3.2SELECTINTOOUTFILE将数据导出到常规文本文件。
您可以自定义字段间距以方便处理这些数据。
示例:SELECTINTOOUTFILE'/tmp/db_name/tbl_name.txt'FROMtbl_name;您必须具有FILE权限才能运行此SQL,并且文件/tmp/db_name/tbl_name.txt可由mysqld用户和导出的文件写入,请注意。
必须是为了避免安全问题,现有文件不能被覆盖。
对于使用SELECTINTOOUTFILE方法备份的文件,您可以通过运行LOADDATAINFILE语句来恢复数据表。
示例:LOADDATAINFILE‘/tmp/db_name/tbl_name.txt‘INTOTABLEtbl_name;权限要求与上面相同。
导入数据之前,数据表必须已存在。
如果您担心重复数据,可以添加REPLACE关键字来替换现有记录,或使用IGNORE关键字忽略现有记录。
4.启用二进制日志记录(binlog)使用binlog方法比较简单。
灵活,省心省力,还可以支持增量备份。
如果启用了binlog,则必须重新启动Mysqld。
首先,关闭mysqld,打开my.cnf,并添加以下行:server-id=1log-bin=binloglog-bin-index=binlog.index然后启动mysqld。
运行过程中会生成binlog.000001和binlog.index。
前一个文件是mysqld,记录了对数据的所有更新操作,后一个文件是所有binlog的索引,不能轻易删除。
请参阅binlog手册。
如果需要备份,可以先运行一条SQL语句强制mysqld完成对当前binlog的写入,然后直接备份文件,从而达到增量备份的目的。
由于这是备份复制系统的从属系统,因此还必须备份master.info和relay-log.info文件。
您可以使用MySQL提供的工具mysqlbinlog查看备份的binlog文件(例如/usr/local/mysql/bin/mysqlbinlog/tmp/binlog.000001)。
该工具允许您查看指定数据库中的所有SQL语句。
时间限制范围也非常有用。
详情请参阅手册。
恢复时,可以使用这样的语句:/usr/local/mysql/bin/mysqlbinlog/tmp/binlog.000001|mysql-uyejr-pyejrdb_namemysqlbinlog输出的SQL直接使用它作为输入来执行语句。
如果你有闲置的机器,也可以使用此方法进行备份。
从机的性能要求相对较低,使得增量备份成本低廉,并允许它们分担部分数据查询负载。
具体解决方案:1、主从同步参见http://kerry.blog.51cto.com/172631/110206。
2、增量备份:进行一次全量备份,每天中午和中午12:00进行备份。
每小时二进制日志或增量备份的具体操作如下::在Linux上打开binlog,将mysqld部分添加到/etc/my.cnf中:[mysqld]log-bin=../logs/mysql-binmax-binlog-size=50M在Windows上打开binlog%mys。
在ql%/my.ini中添加mysqld部分:[mysqld]log-bin=../logs/mysql-binmax-binlog-size=50M完整的备份脚本(对于数据库,仅提供部分参考)。
由于数据量比较大,一天就可以准备好#!/bin/sh#mysqldatabackupscript##usemysqldump--help,getmoredetail.BakDir=/backup/mysqlLogFile=/backup/mysql/mysqlbak.logDATE=`日期+%Y%m%d`echo"">>$LogFileecho"">>$LogFileecho"---------------------------------">>$LogFilecho$(日期+"%y-%m-%d%H:%M:%S")>>$LogFilecho"--------------------------">>$LogFilecd$BakDirDumpFile=$DATE.sqlGZDumpFile=$DATE.sql.tgzmysqldump--quick--所有数据库--flush-logs--delete-master-logs--lock-all-tables>$DumpFilecho"DumpDone">>$LogFiletarczvf$GZDumpFile$DumpFile>>$LogFile2>&1echo"[$GZDumpFile]备份成功!">>$LogFilerm-f$DumpFile#deletepreviousdailybackupfiles:使用增量备份文件I将要。
如果文件已完全备份,则删除增量备份文件。
cd$BakDir/dailyrm-f*cd$BakDirecho"BackupDone!"echo"检查$BakDirDirectory!"Echo"将其复制到本地磁盘上的某个位置!!!"ls-al$BakDir上的脚本将mysql备份到本地/backup/mysql目录和增量备份文件到/backup/mysql/daily增量备份的数据量比较小,但是需要在全量备份的基础上进行增量备份,脚本为:#!/bin/sh#mysqlbinlogbackupscript/usr/bin/mysqladminflush-logsDATADIR=/var/lib/mysqlBAKDIR=/backup/mysql/daily###如果您做了任何特殊设置,请更改此项或更改默认应用此变量的行,并且mysql也默认为机器名GetHOSTNAME=`uname-n`cd$DATADIRFILELIST。
=`cat$HOSTNAME-bin.index`##计算行数,即文件数。
COUNTER=0forfilein$FILELISTdoCOUNTER=`expr$COUNTER+1`doneNextNum=0forfilein$FILELISTdobase=`basename$file`NextNum=`expr$NextNum+1`if[$NextNum-eq$COUNTER]thenecho"skiplastest"elsedest=$BAKDIR/$baseif(test-e$dest)thenecho"skipexist$base"elseecho"copying$base"cp$base$BAKDIRfifidoneecho"backupmysqlbinlogok&q"uot;增量备份脚本在备份之前刷新日志并将内存中的日志保存到文件中。
自动保存然后生成新的日志文件,因此您只需备份前几个。
可能是从上次备份到当前备份。
多个日志生成了一个文件,所以如果备份了该文件,则无需备份。
首先恢复最新的全量备份数据:mysql-hhostname-uusername-ppassworddatabasename<运行备份文件.sql,然后恢复binlog:./mysqlbinlog--start-date="2016-04-1017:30:05"--stop-日期=“2016-04-1017:41:28”/usr/local/mysql/data/mysql-bin.000002|mysql-uroot-p1234565通过复制文件直接备份数据文件缺点是备份数据文件最直接、快捷、方便。
增量备份基本上是不可能的。
为了保证数据的一致性,在备份文件之前必须运行以下SQL语句:FLUSHTABLESWITHREADLOCK;即将内存中的所有数据刷新到磁盘,同时锁定数据表。
在复制过程中需要时间来阻止新数据被写入。
恢复这样备份的数据也非常简单,只需将其复制回原来的数据库目录即可。
注意,对于Innodb类型的表,其日志文件,即ib_logfile*文件,也必须备份。
如果您的Innodb表损坏,您可以依靠这些日志文件进行恢复。
6、使用rsync进行备份rsync作为同步工具也可以用于备份,但需要配置服务器和客户端。
示例rsync-vzrtopg--progress--deleteroot@192.168.1.3::root/tmp/Many有关rsync设置,请参见http://fanqiang.chinaunix.net/a6/b7/20010908/13。
05001258.html缺点是rsync是基于文件修改次数的增量备份,所以备份数据库准备充分,配置比较繁琐。
7.使用BigDump工具导入非常大的MySQL数据库备份文件是很常见的。
使用的MySQL数据库恢复工具(也可以执行备份操作)是phpMyAdmin。
这是一个免费的开源工具,大多数托管提供商(例如Hawkhost)免费提供。
我相信许多网站管理员也使用phpMyAdmin来备份和恢复他们网站的数据库。
它非常方便,并且具有多语言界面。
然而,有些情况可能是您以前从未经历过的。
也就是说,如果数据库规模比较大。
例如,如果您的SQL备份文件当前大于2MB甚至大于10MB。
通过phpMyAdmin访问数据库时出现错误,出现如下提示:这是由于SQL造成的。
文件太大,phpMyAdmin无法处理。
例如,如果网站管理员在周末晚上8点尝试使用phpMyAdmin恢复大型MySQL数据库的备份,则这种情况尤其明显。
如果网络拥塞,则更容易出现此问题。
显然,phpMyAdmin只适合恢复较小的SQL文件的备份。
MySQL非常大要恢复数据库备份,必须使用专门的恢复工具,即BigDump!工具下载地址http://www.jb51.net/codes/37147.html8、使用bacula(www.bacula.org)进行备份。
zZbacula采用模块化设计和C/S架构,理论上可以备份任意n台主机。
数据备份到任意n台机器上,不需要创建配置文件来控制每台机器的行为。
所有主要任务均由一名董事负责。
当您登录到Director时,您可以看到哪些备份正在运行,哪些备份成功,哪些备份失败,并且所有日志也集中在指定位置,使管理任务变得更加容易。
恢复也非常简单,只需运行几个命令即可恢复指定的备份。
它支持完整、差异和增量备份,并支持将备份写入硬盘文件和磁带。
支持的平台相当多,配置中包括win平台(备份到win,但尚不支持备份到win)。
当然,它也有一些缺点,例如对同时备份的支持尚未经过充分测试,作者表示除非您自己测试过,否则不应该尝试它。
另一点是文档中没有快速入门。

这个文档有点太详细了,需要耐心阅读。

1.准备Bacula由三个模块组成。
一个是director,用于指挥整个系统的行为;另一个是jobSchedule,它通知其他两个模块其行为。
第一个是StorageDaemon。
这是存储端,负责将数据从网络备份到本机并在恢复时发送数据。
最后一个是FileDaemon,它在备份期间传输文件并在恢复期间接受和恢复数据。
事实上,你不能用上述三个模块来运行bacula。
另一个模块是数据库模块。
该模块可以通过SQLite(编译为bacula)或MySql和PostgreSql来使用。
作者推荐mysql。
编译还需要一些第三方库:GZIP和Readline。
虽然文档没有解释,但其实还需要另外一个软件ntp来保证正常运行。
这是因为差异备份和增量备份都是根据文件的修改时间来决定是否备份。
对于单机备份来说这不是一个大问题,但是对于网络备份则需要考虑各主机之间的时间差。
因此,我们建议您在所有主机上每天运行两次ntpdate来调整时间。
如果您连接到上海交通大学网络,您可以使用dns.sjtu.edu.cn调整时间。
如果您使用磁带驱动器进行备份,还应该检查您的磁带驱动器是否受支持。
我们还建议阅读文档的“关于池、卷和标签”部分。
否则,在配置过程中可能会出现混乱。
2.编译步骤很简单,文档也很详细,就不赘述了。
请注意,您可以使用--enable-client-only在备份计算机上进行编译。
3.构建数据库我们将解释mysql的构建过程。
首先,如果mysql不在您的本地计算机上,您可以通过将-h参数添加到代码的根目录来指定它:cdsrc/cats/./grant_mysql_privileges./create_mysql_database./make_mysql_tables。
root用户默认使用空密码,可以使用-p参数启用密码验证。
如果想使用其他用户,只需要修改脚本即可。
这很简单。
bacula用户默认创建,密码为空。
我们建议更改您的密码。
Bacula可以使用任意数量的数据库。
这意味着您可以使用两个数据库来相互备份。
4.请注意,在运行FileDaemon(fd)配置之前需要小心。
在配置中指定主机地址时,最好使用ip。
配置时似乎无法使用主机名。
那。

此外,对于外部IP,如果fd在备份主机上运行,​​则127.0.0.1将不起作用。
配置非常简单,只需指定哪些Director可以运行和调度、密码、FD名称、工作目录以及将日志发送到哪里即可。
只要改一下标准配置就可以了。
5.在接受备份的计算机上运行StorageDaemon(sd)sd。
配置也很简单,只不过比fd多了一个设备,指定了用来备份数据的硬件。
您可以将多个数据备份到一台设备。
对于磁带驱动器备份,Bacula会告诉您在恢复过程中使用哪个磁带。
使用文件备份方式时,需要为每个备份配置设备,并将不同的备份放在不同的目录中。
下面是一个简单的文件备份设备配置。
Device{Name=dbdevMediaType=File#随意描述一下。
但是,如果您想配置Direct,请执行以下操作:或ArchiveDevice=/var/bak/db#,必须存在相同的备份目标目录。
LabelMedia=yes;#自动labelRandomAccess=Yes;AutomaticMount=yes;