热备份
<h1>热备份(实时备份)及恢复</h1>
<h2>逻辑备份方法</h2>
<h4>1)mysqldump</h4>
<ul>
<li>是 MySQL 自带的逻辑备份工具。</li>
<li>
<p>它的备份原理是通过协议连接到 MySQL 数据库,将需要备份的数据查询出来,然后将查询出的数据转换成对应的 INSERT 语句。</p>
<ul>
<li>当我们需要还原恢复这些数据时,只要执行这些 INSERT 语句,就能将对应的数据还原。</li>
<li>所以有的资料也将这种备份方式称为 INSERT 备份。</li>
</ul>
</li>
<li>恢复数据时可以使用 <code>mysql -uroot -p <backup.sql</code> 直接调用备份文件执行所有命令,将数据完全恢复到备份时候的状态。如果已经连接上了 MySQL 服务器,那么可以通过 <code>source /path/backup.sql</code> 来进行恢复。</li>
</ul>
<h4>2)SELECT INTO…OUTFILE</h4>
<ul>
<li>可以把表数据导出到一个文本文件中,且能将数据库中的表数据以特定分隔符进行分隔后记录在文本文件中,以达到逻辑备份的效果。</li>
<li>
<p>这种备份方式与 mysqldump 方法相比,使用的存储空间更小,数据格式更加清晰明确,编辑方便。</p>
<ul>
<li>但是这种方法只能导出或导入数据的内容,不包括表的结构,如果表的结构文件损坏,则必须先恢复原来的表的结构。</li>
<li>而且这种方法不能在同一个备份文件中存在多个表的备份数据,增加了文件维护和恢复的成本。</li>
</ul>
</li>
<li>这种备份方法恢复起来会稍微麻烦一点,需要一个表一个表通过相关命令来进行恢复。
<ul>
<li>当然如果是通过脚本来实现自动多表恢复也是比较方便的。</li>
<li>恢复方法有 2 个,一个是通过 MySQL 的 LOAD DATA INFILE 命令来恢复数据,另一种方法就是通过 MySQL 提供的使用工具 mysqlimport 来进行恢复。</li>
</ul></li>
</ul>
<h4>3)mydumper</h4>
<ul>
<li>是针对 MySQL 数据库备份的一个轻量级第三方的开源工具,备份方式为逻辑备份。</li>
<li>它支持多线程,备份速度远高于原生态的 mysqldump 以及其它众多优异特性。</li>
<li>与其配套的相应恢复数据为 myloader 工具。</li>
<li>DBA 称 mydumper 和 myloader 为备份界的“小钢炮”。</li>
</ul>
<h2>逻辑备份的作用</h2>
<ul>
<li>通过逻辑备份,我们可以仅仅恢复备份中的部分数据而不需要全部恢复。
<ul>
<li>不会影响不相关的数据;</li>
</ul></li>
<li>通过全库的逻辑备份,我们可以在新的 MySQL 环境下完全重建出一个与备份时完全一样的数据库,并且不受平台类型限制;</li>
<li>通过特定条件的逻辑备份,我们可以将某些特定数据轻松迁移(或者同步)到其它的 MySQL 或另外的数据库环境。</li>
</ul>
<h2>裸文件备份</h2>
<ul>
<li>裸文件备份主要在底层复制数据文件,所以备份速度要比逻辑备份更快。</li>
<li>利用 Percona 公司发布的一个 XtraBackup 热备份工具来完成裸文件备份,它是 Percona 公司的开源项目,据官方介绍它是世界上唯一 一款开源的能够对 InnoDB 和 XtraDB 数据库进行热备的工具。</li>
<li>它的优点就是备份与恢复过程的速度很快,安全可靠,而且在备份过程中不会缩表,不影响现有业务。但它目前还是不能对表结构文件和其它非事务类型的表进行备份。</li>
</ul>
<h1>热备份及恢复</h1>
<ul>
<li>热备份与冷备份相反,是在数据库处于运行状态时直接备份,不影响现有业务的正常进行。</li>
<li>热备份又细分
<ul>
<li>逻辑备份和裸文件备份</li>
</ul></li>
</ul>
<h2>逻辑备份 - 说明</h2>
<ul>
<li>最大优点
<ul>
<li>各种存储引擎,可以用同样的方法来备份。</li>
</ul></li>
<li>冷备份不同的存储引擎的备份方法也各不相同。</li>
<li>对于不同存储引擎混合的数据库,用逻辑备份会更简单一些。</li>
<li>逻辑备份很简单,是中小型系统最常用的备份方法。</li>
</ul>
<h2>逻辑备份 - 作用</h2>
<ul>
<li>通过逻辑备份
<ul>
<li>恢复备份中的部分数据,不需要全部恢复。不会影响不相关的数据;</li>
</ul></li>
<li>通过全库的逻辑备份
<ul>
<li>在新 MySQL 环境下完全重建出一个与备份时完全一样的数据库,不受平台类型限制;</li>
</ul></li>
<li>通过特定条件的逻辑备份
<ul>
<li>将某些特定数据轻松迁移(或者同步)到其它的 MySQL 或另外的数据库环境。</li>
</ul></li>
</ul>
<h2>逻辑备份 - 方法</h2>
<h4>1)mysqldump(INSERT 备份)</h4>
<ul>
<li>
<p>MySQL 自带的逻辑备份工具。</p>
</li>
<li>
<p>备份原理</p>
<ul>
<li>通过协议连接到 MySQL 数据库,将需要备份的数据查询出来,再换成对应的 INSERT 语句。</li>
<li>当需要还原恢复这些数据时,只执行 INSERT 语句,将对应的数据还原。所也称 INSERT 备份。</li>
</ul>
</li>
<li>
<p>恢复数据命令</p>
<pre><code class="language-mysql"># 直接调用备份文件执行所有命令
mysql -uroot -p <backup.sql
# 已经连接 MySQL 服务器,进行恢复
source /path/backup.sql </code></pre>
</li>
</ul>
<h4>2)SELECT INTO…OUTFILE</h4>
<ul>
<li>
<p>把表数据导出到一个文本文件中,能将数据库中的表数据以特定分隔符进行分隔后记录在文本文件中,以达到逻辑备份的效果。</p>
<h5>优点</h5>
<ul>
<li>与 mysqldump 方法相比,使用的存储空间更小,数据格式更加清晰明确,编辑方便。</li>
</ul>
<h5>缺点</h5>
<ul>
<li>只能导出或导入数据的内容,不包括表的结构</li>
<li>如果表的结构文件损坏,则必须先恢复原来的表的结构。</li>
<li>不能在同一个备份文件中存在多个表的备份数据</li>
<li>增加了文件维护和恢复的成本。</li>
</ul>
</li>
<li>
<p>恢复起来会稍微麻烦一点</p>
<ul>
<li>需要一个表一个表通过相关命令来进行恢复。</li>
</ul>
</li>
<li>
<p>通过脚本来实现自动多表恢复也是比较方便的。</p>
<h5>恢复方法</h5>
<ul>
<li>LOAD DATA INFILE </li>
<li>mysqlimport</li>
</ul>
</li>
</ul>
<h4>3)mydumper</h4>
<ul>
<li>一个轻量级第三方的数据库备份开源工具,备份方式为逻辑备份。</li>
<li>支持多线程,备份速度远高于原生态的 mysqldump 以及其它众多优异特性。</li>
<li>与其配套的相应恢复数据为 myloader 工具。
<ul>
<li>DBA 称 mydumper 和 myloader 为备份界的“小钢炮”。</li>
</ul></li>
<li>逻辑备份就是备份 SQL 语句,然后恢复数据时执行备份 SQL,实现数据库数据的重现。</li>
<li>逻辑备份完成后所形成的文件都可以直接编辑。</li>
</ul>
<h2>裸文件备份</h2>
<h4>说明</h4>
<ul>
<li>主要在底层复制数据文件,备份速度要比逻辑备份更快。</li>
</ul>
<h4>方法</h4>
<ul>
<li>
<p>XtraBackup 热备份工具</p>
</li>
<li>对 InnoDB 和 XtraDB 数据库进行热备的工具。</li>
<li>Percona 公司的开源项目</li>
</ul>
<h4>优点</h4>
<ul>
<li>备份与恢复过程的速度很快,安全可靠,在备份过程中不会缩表,不影响现有业务。</li>
</ul>
<h4>缺点</h4>
<ul>
<li>不能对表结构文件和其它非事务类型的表进行备份。</li>
</ul>