mysql数据库自动备份,老提示表不存在

备份整个数据库:mysqldump-hhost-uusername-ppassword-ddatabasename>/usr/local/mysql/db.sql;数据库.sql;

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

mysql常见的备份方式有mysqldump、mysqlhotcopy、BACKUPTABLE、SELECTINTOOUTFILE或者备份二进制日志(binlog),也可以直接复制数据文件和关联的配置文件。
由于MyISAM表以文件格式存储,因此备份相对容易。
您可以使用上面提到的几种方法。
Innodb中的所有表都存储在同一个数据文件ibdata1中(可能是多个文件,也可能是独立的表空间文件),备份起来相对困难。
一个免费的解决方案是复制数据文件并备份binlog。
1.mysqldump备份mysqldump采用SQL级别的备份机制,比较适合不同MySQL版本之间的升级。
示例:mysqldump-uroot-pdatabasetable>/home/jobs/back.sqlmmysqldump还可以用于增量备份。
网上有很多mysqldump相关参数,这里不再赘述。
2.MySQL热拷贝备份。
【适用于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./regex//tmp详细使用方法请参考手册,或者如需mysqlhotcopy的帮助,请调用以下命令:perldoc/usr/local/mysql/bin/mysqlhotcopy要使用mysqlhotcopy,您必须具有SELECT和RELOAD(执行FLUSHTABLES)权限,并且还必须具有读取datadir/db_name的权限目录。
通过恢复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/';您必须具有FILE权限才能运行此SQL,并且/tmp/db_name/目录必须可由mysqld用户写入。
为了避免安全,导出的文件不能覆盖现有文件。
问题。
要恢复使用BACKUPTABLE方法备份的文件,可以通过运行RESTORETABLE语句来恢复数据表。
示例:RESTORETABLEFROM'/tmp/db_name/'权限要求与上述类似。
3.2SELECTINTOOUTFILE将数据导出到纯文本文件。
为了便于处理这些数据,可以自定义字段间距。
示例:SELECTINTOOUTFILE'/tmp/db_name/tbl_name.txt'FROMtbl_name;要运行此SQL,您必须具有FILE权限,并且/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文件。
备份的binlog文件可以使用MySQL提供的mysqlbinlog工具查看(例如/usr/local/mysql/bin/mysqlbinlog/tmp/binlog.000001)。
该工具可以显示指定数据库下的所有SQL语句。
另外,时间范围有限,非常方便。
请参阅文档了解更多详细信息。
恢复时,可以使用类似如下的语句:/usr/local/mysql/bin/mysqlbinlog/tmp/binlog.000001|mysql-uyejr-pyejrdb_name。
直接使用mysqlbinlog输出的SQL语句作为输入来执行。
如果您有闲置的机器,也可以使用此方法进行备份。
由于对从机的性能要求较低,因此成本较低。
增量备份可以低成本实现,并分担部分数据查询压力。
具体解决方案:1、主从同步参见http://kerry.blog.51cto.com/172631/110206。
2、增量备份:每天中午12:00和下午12:00进行全量备份,然后再备份。
每小时进行一次binlog,即增量备份,具体任务如下::在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=`date+%Y%m%d`echo"">>$LogFileecho"">>$LogFileecho"-------------------">>$LogFileecho$(日期+"%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]backupSuccess!">>$LogFilerm-f$DumpFile#deletepreviousdailybackupfiles:使用增量备份文件做。
文件完全备份后,删除增量备份文件。
cd$BakDir/dailyrm-f*cd$BakDirecho"BackupDone!"echo"$BakDir检查目录!"echo"复制到本地磁盘或复制到ftpwhere!!!”ls-al$BakDir上述脚本将mysql备份到本地/backup/mysql目录下,增量备份文件位于/backup/mysql/daily目录下。
对于增量备份来说,数据量比较小。
但增量备份必须在全量备份的基础上进行。
单独使用binlog。
脚本为:#!/bin/sh#mysqlbinlogbackupscript/usr/bin/mysqladminflush-logsDATADIR=/var/lib/mysqlBAKDIR=/backup/mysql/daily###如果您有任何特殊设置,可以在这里编辑它们或使用此修改应用变量的行。
默认是使用系统名,mysql也默认使用系统名。
HOSTNAME=`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"增量备份脚本是在备份前刷新日志。
MySQL自动将内存中的日志放入文件中,然后创建新的日志文件,因此您只需备份前几个即可。
这是因为可能存在从上次备份到本次备份的情况。
将生成多个日志文件,您需要搜索它们。
如果已备份,则无需备份。
恢复数据:请先恢复最近的全量备份数据:mysql-hhostname-uusername-ppassworddatabasenamesupportfile.sql然后恢复binlog:./mysqlbinlog--start-date="2016-04-1017:30:05"--停止日期=“2016-04-1017:41:28”/usr/local/mysql/data/mysql-bin.000002|mysql-uroot-p1234565。
直接备份数据文件的缺点是与之前的方法相比,它是最直接、最快速、最方便的备份数据文件的方式。
默认情况下无法进行增量备份。
为了保证数据的一致性,在备份文件之前必须执行以下SQL语句:这意味着内存中的所有数据都被刷新到磁盘,同时数据表被锁定。
必须确保复制过程中不会写入新数据。
通过这种方式备份的数据恢复起来也非常简单。
只需将其复制回原始数据库目录即可。
对于Innodb类型的表,还必须备份相应的日志文件,即ib_logfile*文件。
这是因为如果您的Innodb表损坏,您可以使用这些日志文件来恢复它们。
6、使用rsync进行备份rsync作为同步工具,也可以用于备份,但是需要配置服务器和客户端。
示例rsync-vzrtopg--progress--deleteroot@192.168.1.3::root/tmp/相关rsync配置可以参考http://fanqiang.chinaunix.net/a6/b7/20010908/13。
05001258.html缺点是rsync根据文件修改次数做增量备份,所以备份数据库准备充分,配置比较繁琐。
7.要导入非常大的MySQL数据库备份文件,我们通常使用BigDump工具。
使用的MySQL数据库恢复工具(可以执行备份操作)是phpMyAdmin,这是大多数托管提供商(例如Hawkhost)免费提供的开源免费工具。
相信很多站长都在使用phpMyAdmin来备份和恢复他们的网站数据库。
这其实很方便,而且有多语言界面。
然而,在某些情况下,这种情况可能还没有发生。
这意味着您的数据库可能比较大(例如,您的SQL备份文件可能大于2MB,或者如果您恢复它,则可能大于10MB)。
当我通过phpMyAdmin运行数据库时,出现错误和以下提示:这会导致SQL文件太大,超过phpMyAdmin的处理能力。
当网络速度相对较慢时,这种情况尤其明显。
例如,网站管理员想要在周末晚上8点恢复大型MySQL数据库备份。
拥塞的网络很容易出现此问题,因为文件大小变得太大。
显然phpMyAdmin只适合恢复较小的SQL文件备份。
要恢复非常大的MySQL数据库备份,需要使用专用的恢复工具,即BigDump!工具下载地址http://www.jb51.net/codes/37147.html8、使用bacula(www.bacula.org)进行备份。
zZbacula采用模块化设计,C/S架构,理论上可以备份n台主机。
你的数据备份在n台机器上,你不需要在每台机器上写配置文件来控制运行。
所有主要业务均由一名董事控制。
当您登录到Director时,您可以查看哪些备份正在运行、哪些备份成功以及哪些备份失败。
所有日志也集中到用户指定的位置,使管理任务变得更加容易。
恢复也非常简单。
您只需运行几个命令即可恢复指定的备份。
支持全量备份、差异备份、增量备份。
支持将备份写入硬盘文件和写入磁带。
支持的平台相当多,设置中包括win平台(尚不支持wintowin)。
当然,它也有一些缺点,包括对同步备份的支持尚未经过彻底测试,作者表示最好不要尝试,除非您自己测试过。
还有一点是文档中没有快速入门。

该文档非常详细,没有耐心是无法阅读的。

1.准备Bacula由三个模块组成。
一个是Director,用于指挥整个系统的运行,还有一个是JobSchedule,用于通知其他两个模块其工作情况。
第一个是StorageDaemon,它位于存储端,负责将数据从网络备份到本地机器以及恢复时传输数据。
最后一个是FileDaemon,它在备份期间传输文件,并在恢复期间接收和恢复数据。
实际上,在上述三个模块中我无法运行bacula,另一个模块是数据库模块。
该模块可通过SQLite(用bacula编译)或MySql和PostgreSql获得。
作者推荐mysql。
编译还需要一些第三方库,例如GZIP和Readline。
虽然文档没有解释,但实际上需要另一个软件ntp来确保正常运行。
这是因为差异备份和增量备份都是根据文件修改时间来决定是否备份。
单机备份问题不大,但网络备份需要考虑到各主机之间的时间差。
因此,我们建议所有主机每天运行ntpdate两次来调整时间。
如果您在上海交通大学网络,您可以使用dns.sjtu.edu.cn来调整您的时间。
如果您使用磁带机进行备份,还应该检查您的磁带机是否受支持。
最好阅读文档的UnderstandingPools、Volumes和Labels部分。
否则,您在配置过程中会遇到混乱。
2.编译过程很简单,文档也很详细,就不详细介绍了。
您可以使用--enable-client-only在备份计算机上进行编译。
3、搭建数据库下面说一下mysql的搭建过程。
首先,在代码根目录cdsrc/cats/./grant_mysql_privileges./create_mysql_database./make_mysql_tables中,如果本地系统上不存在mysql,可以通过添加-h参数来指定它。
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;

使用mysqldump备份数据库

使用mysqldump备份MySQL数据库的详细步骤如下:1、基本备份命令示例:数据库地址:127.0.0.1数据库用户名:root数据库密码:pass数据库名称:myweb备份到D盘根目录:mysqldump-h127.0.0.1-uroot-ppassmyweb>d:/backupfile.sql以擦除表格式备份,即覆盖现有数据库:mysqldump--add-drop-table-h127.0.0.1-uroot-ppassmyweb>backupfile.sql2压缩备份:mysqldump-h127.0.0.1-uroot-ppassmyweb|gzip>d.:/backupfile.sql.gz3。
备份指定表:mysqldump-h127.0.0.1-uroot-ppassmywebtable1table2>/home/backupfile.sql。
4、备份多个数据库:mysqldump--h127.0.0.1-uroot-ppass--databasesmywebmyweb2>multibackupfile.sql5:mysqldump--no-data-h127.0.0.1-uroot-ppass--databasesmywebmyweb2>结构。
SQL6。
备份所有数据库:mysqldump--all-databases-h127.0.0.1-uroot-ppass>allbackupfile.sql7恢复备份:mysql-h127.0.0.1-uroot-ppassmywebworld.dum不锁表,仅针对InnoDB存储引擎:mysqldump-uroot-p--master-data--single-transactionworld>world.dumpall锁定表:mysqldump-uroot-p--lock-all-tablesworld>world_lock.dump备份前刷新log-bin:mysqldump-uroot-p--flush-logsworld>world_bin.dump设置备份选项:---add-drop-数据库--add-drop-table?创建选项:–--no-create-db–--no-create-info–--no-data–--no-tablespaces–--quick?MySQL编程组件:––例程–选项--triggers?Topoptionsinoneoption(--opt)更改导出的转储文件格式,也可以手动调整通过网络直接导出数据库表:服务器:linux用户:root@localhost密码:123world数据库包含三个表客户端:Windows用户:root@192.168.154.190(给linux使用)密码:123test是一个空表执行命令:mysqldump-uroot-pworld|mysql-uroot-p-h192.168.154。
,1test将拥有world数据库中三个表的内容。