<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Mysql on Foam 的博客</title>
    <link>https://blog.foamzou.com/tags/mysql/</link>
    <description>Recent content in Mysql on Foam 的博客</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Wed, 29 Apr 2020 20:37:28 +0800</lastBuildDate>
    <atom:link href="https://blog.foamzou.com/tags/mysql/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>恢复数据库快照xb文件到新实例</title>
      <link>https://blog.foamzou.com/posts/recover-snapshot-xb-file-to-mysql-new-instance/</link>
      <pubDate>Wed, 29 Apr 2020 20:37:28 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/recover-snapshot-xb-file-to-mysql-new-instance/</guid>
      <description>&lt;h2 id=&#34;背景&#34;&gt;背景&lt;/h2&gt;
&lt;p&gt;背景就是我把线上某张表的某个字段给清空了。用的是腾讯云的数据库实例，运维配置的快照是每天早上备份一次，因此可以通过快照文件恢复数据。直接恢复到线上实例是不现实的，所以想法是将快照恢复到本地实例，然后用脚本/工具把数据导出来，再写入线上实例。当时恢复过程比较曲折，这里记录下比较好的操作步骤。&lt;/p&gt;
&lt;h2 id=&#34;获取xb文件&#34;&gt;获取xb文件&lt;/h2&gt;
&lt;p&gt;从云服务商或你自行备份的xb文件中获取。腾讯云 &lt;a href=&#34;https://console.cloud.tencent.com/cdb/backup&#34;&gt;这里&lt;/a&gt; 可找到备份列表&lt;/p&gt;
&lt;h2 id=&#34;安装xbstream和qpress工具&#34;&gt;安装xbstream和qpress工具&lt;/h2&gt;
&lt;p&gt;腾讯云使用qpress压缩文件，再通过xbsteam打包为xb文件。[参考腾讯云&lt;a href=&#34;https://cloud.tencent.com/document/product/236/33363&#34;&gt;文章&lt;/a&gt;]&lt;/p&gt;
&lt;h3 id=&#34;安装xbstream&#34;&gt;安装xbstream&lt;/h3&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;下载并安装 XtraBackup 工具。 下载地址请参见 &lt;a href=&#34;https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/&#34;&gt;Percona XtraBackup 官网&lt;/a&gt;，请选择 Percona XtraBackup 2.4.6 及以上的版本，安装介绍请参见 &lt;a href=&#34;https://www.percona.com/doc/percona-xtrabackup/2.4/installation.html?spm=a2c4g.11186623.2.14.4d8653a6QmHkgI&#34;&gt;Percona XtraBackup 2.4&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;支持的实例版本：MySQL 5.5、5.6、5.7 高可用版和金融版。&lt;/li&gt;
&lt;li&gt;启用数据加密功能的实例，不支持使用物理备份恢复数据库。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;我使用的是mac，使用brew进行安装 &lt;code&gt;brew install percona-xtrabackup&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;安装qpress&#34;&gt;安装qpress&lt;/h3&gt;
&lt;p&gt;  从&lt;a href=&#34;http://www.quicklz.com/&#34;&gt;quicklz&lt;/a&gt;下载编译好的二进制文件。 我的mac无法直接使用linux的可执行文件，所以从上面网站下载源码，编译安装。 mac编译qpress时报错&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;qpress.cpp:1040:18: error: use of undeclared identifier &lt;span class=&#34;s1&#34;&gt;&amp;#39;isatty&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;tty_stderr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; isatty&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;fileno&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;stderr&lt;span class=&#34;o&#34;&gt;))&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                 ^
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; error generated.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make: *** &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;g++&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; Error &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;qpress.cpp 添加头文件 #include &amp;lt;unistd.h&amp;gt; 重新编译成功。将编译好的qpress拷贝到 /usr/local/bin 。必须放到该目录下，因为xbstream工具调用qpress是用的绝对路径(为啥这样设计￣□￣｜｜)&lt;/p&gt;
&lt;h3 id=&#34;对xb文件进行解包解压缩&#34;&gt;对xb文件进行解包&amp;amp;解压缩&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;xbstream -x -C /tmp/新建的目录 &amp;lt; ~/你的xb文件.xb &lt;span class=&#34;c1&#34;&gt;# 使用 xbstream 命令将备份文件解包到目标目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;xtrabackup --decompress --target-dir&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/tmp/新建的目录 &lt;span class=&#34;c1&#34;&gt;# 将目标目录下所有以.qp结尾的文件都解压出来&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;将解压出来的frmibd文件附到本地mysql实例&#34;&gt;将解压出来的frm、ibd文件附到本地mysql实例&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;腾讯云的方法&lt;/strong&gt; 腾讯云文档的方法是起一个mysqld_safe实例将data配置为刚刚那个新建的目录&lt;/p&gt;</description>
    </item>
    <item>
      <title>mysql命令行神器mycli</title>
      <link>https://blog.foamzou.com/posts/mycli/</link>
      <pubDate>Sun, 22 Apr 2018 00:24:14 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/mycli/</guid>
      <description>&lt;h2 id=&#34;为什么使用它&#34;&gt;为什么使用它&lt;/h2&gt;
&lt;p&gt;受够了mysql原生client后，你会爱上mycli的自动补全和高亮。对于我这种常常记不住表结构的人来说，自动补全真是爽得不行。 ps：sql新手谨慎使用，建议多裸写sql后再来使用该软件&lt;/p&gt;
&lt;h2 id=&#34;安装&#34;&gt;安装&lt;/h2&gt;
&lt;p&gt;Mac&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install mycli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;CentOS&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 请尽量先将pip升级到最新版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install --upgrade pip
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;yum install python-devel
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;yum install libffi-devel 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;easy_install mycli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;使用方法&#34;&gt;使用方法&lt;/h2&gt;
&lt;p&gt;和mysql原生命令行一样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mycli -uname
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
  </channel>
</rss>
