<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Mysql on ttz.pw</title>
    <link>https://www.ttz.pw/categories/mysql/</link>
    <description>Recent content in Mysql on ttz.pw</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-cn</language>
    <lastBuildDate>Wed, 31 May 2023 10:30:23 +0800</lastBuildDate>
    
        <atom:link href="https://www.ttz.pw/categories/mysql/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>MySQL备份的最佳实践</title>
      <link>https://www.ttz.pw/post/mysql-backup/</link>
      <pubDate>Wed, 31 May 2023 10:30:23 +0800</pubDate>
      
      <guid>https://www.ttz.pw/post/mysql-backup/</guid>
      
        <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ttz.pw/post/mysql-backup/#1-%e9%80%bb%e8%be%91mysql%e5%a4%87%e4%bb%bd&#34;&gt;1. 逻辑MySQL备份&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ttz.pw/post/mysql-backup/#11-mysqldump&#34;&gt;1.1. mysqldump&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ttz.pw/post/mysql-backup/#12-%e7%9f%9b%e7%9b%be&#34;&gt;1.2. 矛盾&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ttz.pw/post/mysql-backup/#13-mydumper&#34;&gt;1.3. mydumper&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ttz.pw/post/mysql-backup/#2-%e7%89%a9%e7%90%86mysql%e5%a4%87%e4%bb%bd&#34;&gt;2. 物理MySQL备份&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ttz.pw/post/mysql-backup/#21-percona-xtrabackup&#34;&gt;2.1. Percona XtraBackup&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ttz.pw/post/mysql-backup/#3-%e5%8d%b7%e5%bf%ab%e7%85%a7&#34;&gt;3. 卷快照&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ttz.pw/post/mysql-backup/#4-%e9%aa%8c%e8%af%81mysql%e5%a4%87%e4%bb%bd&#34;&gt;4. 验证MySQL备份&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ttz.pw/post/mysql-backup/#5-%e6%80%bb%e7%bb%93&#34;&gt;5. 总结&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;1-逻辑mysql备份&#34;&gt;1. 逻辑MySQL备份&lt;/h2&gt;
&lt;p&gt;在MySQL中，可以用两种不同的形式进行备份。第一种形式，逻辑，是最普遍的。本质上，您需要创建所有必要的INSERT语句来重新填充表数据。该地区最流行的两个工具是mysqldump和my dump。&lt;/p&gt;
&lt;h3 id=&#34;11-mysqldump&#34;&gt;1.1. mysqldump&lt;/h3&gt;
&lt;p&gt;这个工具从一开始就存在，并且支持许多不同的选项，太多了，在这篇文章中无法讨论。&lt;/p&gt;
&lt;p&gt;这里有一个简单的例子，在对结果进行压缩的同时，对“成员”数据库进行逻辑备份。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-mysql&#34; data-lang=&#34;mysql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;mysqldump &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;single&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;transaction members &lt;span style=&#34;color:#ff79c6&#34;&gt;|&lt;/span&gt; gzip &lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;&amp;gt;&lt;/span&gt;members.&lt;span style=&#34;color:#ff79c6&#34;&gt;sql&lt;/span&gt;.gz
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果您想对所有数据库中的所有表进行完整备份，您可以这样做:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-mysql&#34; data-lang=&#34;mysql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;mysqldump &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;single&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;transaction &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;all&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;databases&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;|&lt;/span&gt; gzip &lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;&amp;gt;&lt;/span&gt;full_backup.&lt;span style=&#34;color:#ff79c6&#34;&gt;sql&lt;/span&gt;.gz
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;请注意–单笔交易标志的使用。此标志“通过转储中的所有表来创建一致的快照
单一交易。&amp;ldquo;如果不使用此标志，则完整的备份可能包含相关表之间的不一致。&lt;/p&gt;
&lt;h3 id=&#34;12-矛盾&#34;&gt;1.2. 矛盾&lt;/h3&gt;
&lt;p&gt;mysqldump最大的缺点之一是缺乏并行性。该工具从第一个数据库开始，按字母顺序排列，然后一次转储一个表。考虑一个将数据插入表“alpha”和“zeta”的事务。现在备份开始了。当备份到达表“增量”时，另一个事务从“zeta”中删除。你的备份现在在阿尔法和泽塔之间不一致。&lt;/p&gt;
&lt;p&gt;这就是为什么–单笔交易标志很重要。&lt;/p&gt;
&lt;h3 id=&#34;13-mydumper&#34;&gt;1.3. mydumper&lt;/h3&gt;
&lt;p&gt;这mydumper工具是一个开源的第三方工具，最初由Domas Mituzas，现在由马克斯·布比维护。该工具的功能类似于mysqldump，但提供了许多改进，如并行备份、一致读取和内置压缩。mydumper的另一个好处是每个单独的表都被转储到一个单独的文件中。这使得单个表的恢复大大优于MySQL dump(MySQL dump将所有内容压缩到一个文件中)。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-mysql&#34; data-lang=&#34;mysql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;mydumper &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;compress
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上述命令将连接到您的本地MySQL服务器，并开始所有数据库中所有表的一致转储。如上所述，每个表都将在转储目录中创建一个单独的文件，该文件以此模式命名为“export-YYYYYMMDD-HHMMSS”。每个转储文件都将使用gzip单独压缩。&lt;/p&gt;
&lt;p&gt;配套工具myloader也包括在内。该工具允许并行恢复表；mysqldump做不到的事情。&lt;/p&gt;
&lt;h2 id=&#34;2-物理mysql备份&#34;&gt;2. 物理MySQL备份&lt;/h2&gt;
&lt;p&gt;物理备份将表数据文件从一个位置复制到另一个位置，最好是以在线、一致的方式。Percona XtraBackup符合这个描述。还有MySQL企业备份和设备快照，前者是甲骨文的付费产品。应该注意的是，Percona XtraBackup是免费的、开源的，可以做企业选件可以做的一切，等等。&lt;/p&gt;
&lt;h3 id=&#34;21-percona-xtrabackup&#34;&gt;2.1. Percona XtraBackup&lt;/h3&gt;
&lt;p&gt;xtrabackup &amp;ndash;backup &amp;ndash;parallel 4 &amp;ndash;compress &amp;ndash;target-dir /var/backup/
上述命令将连接到您的MySQL服务器，并执行一个压缩(使用qpress)并行备份，将结果数据文件存储到/var/backup/。在这个目录中，你会找到所有熟悉的文件，比如ibdata1、mysql.ibd和所有其他文件。ibd文件，代表你的数据。&lt;/p&gt;
&lt;p&gt;您还可以将物理备份“流式传输”到单个归档:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-mysql&#34; data-lang=&#34;mysql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;xtrabackup &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;backup &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;parallel &lt;span style=&#34;color:#bd93f9&#34;&gt;4&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;stream&lt;span style=&#34;color:#ff79c6&#34;&gt;=&lt;/span&gt;xbstream &lt;span style=&#34;color:#ff79c6&#34;&gt;&amp;gt;&lt;/span&gt; mybackup.xbstream
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#ff79c6&#34;&gt;OR&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;xtrabackup &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;backup &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;stream&lt;span style=&#34;color:#ff79c6&#34;&gt;=&lt;/span&gt;tar &lt;span style=&#34;color:#ff79c6&#34;&gt;&amp;gt;&lt;/span&gt; mybackup.tar
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注意:“tar”存档不支持并行性)&lt;/p&gt;
&lt;p&gt;还有，多亏了佩尔孔纳xbcloud工具，您可以直接流向任何S3兼容桶:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-mysql&#34; data-lang=&#34;mysql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;xtrabackup &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;backup &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;stream&lt;span style=&#34;color:#ff79c6&#34;&gt;=&lt;/span&gt;xbstream &lt;span style=&#34;color:#ff79c6&#34;&gt;|&lt;/span&gt; xbcloud put &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;storage&lt;span style=&#34;color:#ff79c6&#34;&gt;=&lt;/span&gt;s3 &lt;span style=&#34;color:#ff79c6&#34;&gt;&amp;lt;&lt;/span&gt;S3 parameters&lt;span style=&#34;color:#ff79c6&#34;&gt;&amp;gt;&lt;/span&gt; mybackup_s3.&lt;span style=&#34;color:#8be9fd&#34;&gt;blob&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;3-卷快照&#34;&gt;3. 卷快照&lt;/h2&gt;
&lt;p&gt;在某些情况下，备份所需的数据量太大，无法导出物理备份(更不用说逻辑转储)。考虑数据集大于1TB的MySQL服务器。即使使用快速磁盘，执行物理备份也可能需要很多很多小时。&lt;/p&gt;
&lt;p&gt;在这些情况下，使用底层文件系统或磁盘设备的快照功能执行物理备份要快得多。&lt;/p&gt;
&lt;p&gt;LVM和ZFS都有本地快照。在拍摄快照之前，请确保MySQL已停止写操作，并将大部分内存信息刷新到磁盘。这是一个使用ZFS的例子伊夫·特鲁多:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-mysql&#34; data-lang=&#34;mysql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;mysql &lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;e &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; ! zfs snapshot -r mysqldata/mysql@my_first_snapshot&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上面的例子将锁定MySQL中的所有表，防止来自其他事务的写入，打印出当前的二进制日志位置信息，然后转义到执行ZFS快照命令的外壳。一旦快照返回，到MySQL的连接退出并解锁所有表。&lt;/p&gt;
&lt;p&gt;大多数云提供商还支持其数据块设备的本机快照功能(即EC2、GPD)。该过程类似于上面的ZFS例子。&lt;/p&gt;
&lt;h2 id=&#34;4-验证mysql备份&#34;&gt;4. 验证MySQL备份&lt;/h2&gt;
&lt;p&gt;所以你有一个很好的备份程序，遵循所有的最佳实践。你怎么知道备份成功了？你看了文件的大小了吗？您是否只检查了创建的文件？也许你只看了你使用的工具的退出代码？&lt;/p&gt;
&lt;p&gt;Shlomi Noach之前告诉我的Percona实时会议&amp;quot;在验证备份之前，您还没有进行备份。&amp;ldquo;好建议。换句话说，您进行的每个备份都可以被视为薛定谔的备份；直到你验证它，它工作吗？&lt;/p&gt;
&lt;p&gt;这里的最佳实践是使用您创建的备份简单地恢复MySQL服务器；然而，是你创造了它。处理此恢复的机器不需要像源一样强大；一个简单的虚拟机可以管理这个任务，并且可以很好地实现自动化。&lt;/p&gt;
&lt;p&gt;您可以使用mysql客户端本身恢复mysqldump:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-mysql&#34; data-lang=&#34;mysql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;zcat my_full_backup.&lt;span style=&#34;color:#ff79c6&#34;&gt;sql&lt;/span&gt;.gz &lt;span style=&#34;color:#ff79c6&#34;&gt;|&lt;/span&gt; mysql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;使用mydumper/myloader:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-mysql&#34; data-lang=&#34;mysql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;myloader &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;directory dump_dir &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;overwrite&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;tables&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;verbose&lt;span style=&#34;color:#ff79c6&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bd93f9&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Percona XtraBackup:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-mysql&#34; data-lang=&#34;mysql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#6272a4&#34;&gt;# Prepare the backup
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;xtrabackup &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;prepare &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;parallel &lt;span style=&#34;color:#bd93f9&#34;&gt;4&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;use&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;memory &lt;span style=&#34;color:#bd93f9&#34;&gt;4&lt;/span&gt;G &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;target&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;dir &lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;var&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;backup
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#6272a4&#34;&gt;# Copy backup to original location (ie: /var/lib/mysql), assuming backup taken on same host
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;xtrabackup &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;copy&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;back &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;target&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;dir &lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;var&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;backup
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#6272a4&#34;&gt;# Fix file permissions if necessary
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;chown &lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;R mysql:mysql &lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;var&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;lib&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;mysql
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#6272a4&#34;&gt;# Start MySQL
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;systemctl start mysql
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#6272a4&#34;&gt;# Prepare the backup
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;xtrabackup &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;prepare &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;parallel &lt;span style=&#34;color:#bd93f9&#34;&gt;4&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;use&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;memory &lt;span style=&#34;color:#bd93f9&#34;&gt;4&lt;/span&gt;G &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;target&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;dir &lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;var&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;backup
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&lt;/span&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#6272a4&#34;&gt;# Copy backup to original location (ie: /var/lib/mysql), assuming backup taken on same host
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17&lt;/span&gt;&lt;span&gt;xtrabackup &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;copy&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;back &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;target&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;dir &lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;var&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;backup
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18&lt;/span&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#6272a4&#34;&gt;# Fix file permissions if necessary
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20&lt;/span&gt;&lt;span&gt;chown &lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;R mysql:mysql &lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;var&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;lib&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;mysql
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21&lt;/span&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;22&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#6272a4&#34;&gt;# Start MySQL
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;23&lt;/span&gt;&lt;span&gt;systemctl start mysql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;是的，Percona XtraBackup确实需要更多步骤，但物理备份始终是最快的备份方式和最快的恢复方式。&lt;/p&gt;
&lt;h2 id=&#34;5-总结&#34;&gt;5. 总结&lt;/h2&gt;
&lt;p&gt;有许多不同的方法来进行MySQL备份。希望这篇文章能让您在选择备份方法时对一些最佳实践有所了解。&lt;/p&gt;
&lt;p&gt;还要考虑几件事:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;上述大多数工具都支持加密备份。请务必备份您的加密密钥的副本！&lt;/li&gt;
&lt;li&gt;本文不涉及时间点恢复(PITR)。但是，为了实现PITR，您还需要备份您的二进制日志。rsync可以对此提供帮助，或者mysqlbinlog工具本身可以是一个实时binlog备份工具。&lt;/li&gt;
&lt;li&gt;一定要备份一份 my.cnf&lt;/li&gt;
&lt;/ol&gt;</description>
      
    </item>
    
  </channel>
</rss>
