什么是数据库备份

对于MySQL数据库来说,备份和恢复的术语包括:备份(backup)、恢复到:物理恢复和逻辑备份; 并解释。

数据库恢复用熟悉的术语来说就是一次复制数据库数据; 将副本放回原数据库文件的目录位置; 启动Binlog后由数据库触发,会按照“事件”的顺序,以“事件”的形式记录二进制binlog文件。

参考上图,凌晨2:00,管理员会对二进制日志数据库数据进行全量备份。
写一下数据库。
默认1G); 管理员可以通过恢复和恢复二进制文件来恢复丢失的数据。

一段时间。

上面的例子中,当数据恢复时,数据库中的数据恢复到复制时的状态,二进制日志记录了数据库中所有用户的所有写操作的语句故障发生前一段时间内的数据。
因此,二进制脚本中存储的句子重新存在的过程通常称为恢复。

mysql 如何备份和还原数据库

MySQL目前支持的免费备份工具包括:mysqldump和mysqlhotcopy。
还可以使用SQL语法进行备份:BACKUPTABLE或SELECTINTOOUTFILE,或者备份二进制日志(binlog),或者直接复制数据文件和关联的配置文件。
MyISAM表保存为文件,因此备份相对容易。
可以使用上面提到的几种方法。
Innodb中的所有表都存储在同一个ibdata1数据文件中(可以是多个文件,也可以是独立的表空间文件),备份起来相对困难。
免费的解决方案可能包括复制数据文件并保存 binlog 或使用 mysqldump。
1、备份mysqldump1.1 mysqldump采用SQL级别的备份机制。
它将数据表导出到 SQL 脚本文件中。
比较适合MySQL不同版本之间的升级。
这也是最常用的备份方法。
现在我们来谈谈mysqldump 的一些主要参数: •--兼容=name 它告诉mysqldump 导出的数据将与哪个数据库或旧版本的MySQL 服务器兼容。
值可以是ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等。
要使用多个值,请用逗号分隔它们。
当然,它不保证完全兼容,但它尽力兼容。
•--complete-insert,-c 使用完整INSERT方法导出数据,包括字段名,即将所有值写在一行上。
这样可以提高插入效率,但可能会受到 max_allowed_pa​​cket 设置的影响而导致插入失败。
因此,这个设置要谨慎使用,至少我不推荐它。
•--default-character-set=charset 指定导出数据时使用的字符集。
如果数据表不使用默认的latin1字符集,导出时必须指定该选项,否则导入文件后会出现截断字符。
再次查看数据。
•--disable-keys 告诉 mysqldump 添加指令 /*!40000ALTERTABLEtableDISABLEKEYS*/; 和 /*!40000ALTERTABLEtableENABLEKEYS*/; 在 INSERT 语句的开头和结尾。
这可以大大提高插入语句的速度,因为它位于插入语句之后。
插入所有数据。
索引稍后重建。
该选项仅适用于 MyISAM 表。
•--extended-insert=true|false 默认情况下,mysqldump 启用--complete-insert 模式,因此如果您不想使用它,只需使用此选项并将其值设置为false 即可。
• --hex-blob 以十六进制格式导出二进制字符串字段。
如果存在二进制数据,则应使用此选项。
受影响的字段类型为 BINARY、VARBINARY 和 BLOB。
• --lock-all-tables, -x 在开始导出之前,提交请求以锁定所有数据库中的所有表,以确保数据一致性。
这是全局读锁,并且 --single-transaction 和 --lock-tables 选项会自动禁用。
•--lock-tables 与--lock-all-tables 类似,但它锁定当前导出的数据表,而不是一次锁定数据库中的所有表。
此选项仅适用于 MyISAM 表。
如果是Innodb表,可以使用单词交易选项。
•-no -reate -info,-t仅导出数据而无需添加创新说明。
•-no -data,-d不导出任何数据,仅导出数据库表的结构。
•-opt这只是一个快速选择,相当于添加 - add-down-down-tieate-option-option-disable-keys-- dextended-interd-insert-lock-lock-tables-- quick- -set-charset选项。
此选项允许MySQLDUP快速导出数据,并且可以快速重新计算导出的数据。
默认情况下激活此选项,但可以用-skip-opt停用。
请注意,如果您执行mysqldump而不指定-Quick或-opt选项,则整个结果游戏将放置在内存中。
如果导出一个大数据库,可能会出现问题。
• - Quick,-Q此选项在导出大表格时很有用。
它迫使mysqldump质疑服务器记录并直接显示它们,而不是在获得所有记录后而不是缓存。
•-routines,-r导出存储过程和个性化功能。
•-single-transaction此选项主体在导出数据之前开始开始使用指令。
开始不会阻止任何应用程序,并且可以保证导出期间数据库的连贯状态。
这仅适用于InnovB和BDB等交易表。
此选项和可锁定选项是互相排除的,因为锁定物将暗示其中一项业务的提交。
如果要导出大表格,则需要使用这些选项 - 快速。
• - 牵引器同时导出扳机。
默认情况下激活此选项,并用-skip-cliggers将其停用。
有关其他设置的更多详细信息,请参考该手册。
扩展-IVSERT =。
-opt-extended-insert = false \ - triggers-blob-trangle-trangle-transactIndb_name> db_name.sql1.2带有mysqldup的文件是一个可以直接丢弃的SQL脚本,可以直接导入两种类型的类型。
•仅使用客户mysql: / usr / local / mysql / mysql / mysql-uyejr-pyejrdb_name MySqlHotCopy2.1备份mysqlhotcopy是一个Perl程序,最初是由Timbunce编写的。
他使用可锁定物,浮华和CP或SCP快速备份数据库。
这是保存数据库或单个表的最快方法,但无法在找到数据库文件(包括数据定义文件,数据文件,索引文件)的机器上执行。
MySqlHotCopy只能用于保存Myisam,并且只能在UNIX和网络系统上使用。
MySqlHotCopy支持几个数据库的时间副本,还支持正则表达式。
以下是几个示例:root# / usr / local / mysql / bin / mysqlhotcopy-h = localhost-su = an-p = yeneb_name / tmp ocal / mysqal / mysql / mysqlhotcopy-h = localhost-h = localhost-su = yejr-p = yejrdb = yejrdb_name_1 yejrdb_name__1 。
帮助帮助帮助:Perldoc / usr / local /我的SQL / MySqlHotCopy注意,如果您想使用MySqlHotCopy,则必须选择,重新计算(要执行flushhhhhhhhhhhhia),并且必须是Datadir / ddaDAdir / ddb_name Direker的阅读授权。
读。
2.2还原mysqlhotcopy保存数据库。
root#cp-rfdb_name / usr / local / mysql / data / data / root#chown-rnobody:nory / usr / local / data / /(修改db_name目录的所有者db_name目录的所有者至mysqld)3。
sql backup of Backup ins backup ins sql准备实际上类似于mysqlhotcopy的工作原理。
它可以在线备份,但效果不是理想的,因此不建议这样做。
它仅复制结构文件和数据文件,并且在不同时间复制索引文件,因此在恢复过程中速度较慢。
示例:backtabletbl_nameto' / tmp / db_name /'; SelectIntOutFile是指导普通文本文件中的数据,该数据可以个性化字段间隔以促进该数据的处理。
示例:selectIntOutFile'/tmp/db_name/tbl_name.txtnt'ffromtbl_name; 避免安全问题。
3.2用背面方法的文件备份可以运行可再生指令以还原数据表。
示例:Restable From' / tmp / db_name /'; 使用SelectIntoOutFile方法保存的文件可以运行LAADDATATAFILE指令以还原数据表。
示例:chardedatata'/tmp/db_name/tbl_name.txtxtxtxttotabl_name; 在付款数据之前,数据表必须存在。
如果您担心重复数据,则可以添加关键字替换以替换现有记录或使用关键字忽略来忽略它们。
补充:shell> mysqldump-quickdb_name | gzip> db_name.conts.gz(在此示例中创建的文件是压缩格式)。
恢复 /传输控件到另一个:shell> gunzip 使用BINLOG(BINLOG)的方法相对灵活。
支持增量备份。
激活Binlog时必须重新启动mySQLD。
首先,关闭mysqld,打开my.cnf并添加以下行:server-id = 1log-bin = binloglog-bin-index = binlog.index,然后启动mysqld。
在操作过程中,将生成binlog.000001和binlog.index。
有关BINLOG的更多信息,请检查手册。
当您需要备份时,您可以首先运行SQL指令,以使MySQLD结束当前的Binlog,并且可以直接备份文件,以便您可以达到增加备份的目标:flushlogs; master.info和realay-log.info文件。
可以使用MySQL MySqlBinlog提供的工具显示备份Binlog文件,例如:/usr/local/mysqal/mysql/bin/mysqlbinlog/binlog.000001此工具允许您在数据库指定下显示所有SQL指令,也可以可能是有限,相当实用且详细的海滩,请检查手册。
在恢复过程中,您可以使用以下说明进行:/USR/local/mysql/bin/mysqlbinlog/tmp/binlog.000001 | 如果您没有活性机器,则可以使用这种保存方式。
由于从机器的性能要求相对较高,因此成本很低,可以以低成本进行增量备份,也可以共享一部分数据压力压力。
5。
关于以前的方法,数据文件对于数据文件来说是最直接,最快和实用的。
为了确保数据一致性,必须在后文件之前执行以下SQL指令:withReadlock flushables; 在复制过程中不要新数据。
恢复该方法的数据也非常简单,可以直接复制到原始数据库目录中。
请注意,对于InnovB类型表,它还必须保存其日志文件,即IB_Logfile *文件。
因为当创新表损坏时,这些报纸文件可以恢复。
6。
对于平均商业水平系统,可以以这种方式纠正备份策略:第一个全部备份,每天增加一次备份,并每周执行全部备份一次,然后重复。
对于重要和繁忙的系统,它可能每天需要大量备份,每小时增加一次备份,甚至更频繁。
为了不影响在线活动,进行在线备份并能够增加备份,最好的方法是使用复制机制在从机器上进行备份。
7.声称DBA之后的数据维护和恢复(我还没有,HA HA),最重要的工作内容之一是确保数据表可以安全,稳定且高速。
因此,您应该定期维护数据表。
SQL:可检查的或可修复,检查或维护迈萨姆表优化,优化myisam表可分析,分析myisam表当然了,上面这些命令起始都可以通过工具,上面这些命令起始都可以通过工具,上面这些命令起始都可以通过工具命令起始都可以通过工具myisamchk来完成,可以通过执行以下说明来提高索引速度来组织innovb:selternatabletbl_namengine = innovb; 可以使用上面提到的恢复方法完成常用的Myisam表。
如果索引被打破,则可以使用Myisamchk工具来重建索引。
对于InnovB表而言,它不是那么直接,因为它将所有桌子保存在表空间中。
但是,InnoVB具有称为Wave Checkpoint的控制机制。
在my.cnf文件中,可以添加以下参数,因此MySQLD在启动时会自动检查日记帐文件。
有点长,应该对您有用