首頁 >資料庫 >mysql教程 >mysql数据备份与还原

mysql数据备份与还原

WBOY
WBOY原創
2016-06-07 14:51:111046瀏覽

mysql数据备份与还原 mysql数据备份与还原 数据备份 mysqldump备份 直接复制这个数据库目录 mysqlhotcopy工具快速备份 数据还原 mysql命令还原 使用source 命令导入备份sql文件 使用直接复制到数据目录的方法 mysqlhotcopy快速恢复 数据备份 mysqldump备份 m

mysql数据备份与还原


      • mysql数据备份与还原
        • 数据备份
          • mysqldump备份
          • 直接复制这个数据库目录
          • mysqlhotcopy工具快速备份
        • 数据还原
          • mysql命令还原
          • 使用source 命令导入备份sql文件
          • 使用直接复制到数据目录的方法
          • mysqlhotcopy快速恢复

数据备份

mysqldump备份

mysqldump备份的基本语法格式如下:

<code class=" hljs lasso">mysqldump <span class="hljs-attribute">-u</span> user <span class="hljs-attribute">-h</span> host <span class="hljs-attribute">-p</span> password dbname<span class="hljs-preprocessor">[</span>tbname,<span class="hljs-preprocessor">[</span>tbname<span class="hljs-attribute">...</span><span class="hljs-preprocessor">]</span><span class="hljs-markup">] > filename.sql
</span></code>
  • 使用mysqldump备份单个数据库中的所有表
<code class=" hljs ruby"> mysqldump -u root -p booksDB > <span class="hljs-regexp">/Users/frankstar</span><span class="hljs-regexp">/Desktop/books</span>DB_2016051<span class="hljs-number">0</span>.sql</code>

输入密码后,桌面即可看见备份的数据库文件,文件开头是mysqldump工具的版本号,然后是备份账户的名称与主机信息,以及数据库的名称,服务器的版本号等。下面是SET语句,主要是涉及恢复时数据库的系统变量值,最后几行使用SET语句恢复服务器系统变量原来的值。

  • 使用mysqldump备份数据库中的某个表
<code class=" hljs ruby">mysqldump -u root -p booksDB books > <span class="hljs-regexp">/Users/frankstar</span><span class="hljs-regexp">/Desktop/books</span>_2016051<span class="hljs-number">0</span>.sql</code>
  • 使用mysqldump备份多个数据库
<code class=" hljs ruby">mysqldump -u root -p --databases booksDB <span class="hljs-constant">JavaStudy</span> > <span class="hljs-regexp">/Users/frankstar</span><span class="hljs-regexp">/Desktop/book</span>DB_JavaStudy_2016051<span class="hljs-number">0</span>.sql
</code>
  • 使用–all-databases备份全部数据库
<code class=" hljs lasso">mysqldump <span class="hljs-attribute">-u</span> root <span class="hljs-attribute">-p</span> <span class="hljs-subst">--</span><span class="hljs-literal">all</span><span class="hljs-attribute">-databases</span> <span class="hljs-subst">></span> /Users/frankstar/Desktop/allDatabases_20160510<span class="hljs-built_in">.</span>sql
</code>

提示:如果数据库中表都是MyISAM表,可考虑使用mysqlhotcopy,提高效率。

直接复制这个数据库目录

可以直接复制数据库的存储目录和文件进行备份。这个方法对Innodb存储引擎的表不适合,同时还要求数据库版本要一致,否则可能出现不兼容。首先备份前需要进行LOCK TABLES操作,然后执行FLUSH TABLES,复制数据库文件时应该允许用户查询,需要FLUSH TABLES语句来确保开始备份前将所有的激活索引页写入到硬盘。最好的办法是停止服务进行复制。

mysqlhotcopy工具快速备份

mysqlhotcopy必须要可以访问备份的数据表文件,具有表的SELECT、RELOAD、LOCK TABLES等权限,同时它只适用于MyISAM和ARCHIVE存储引擎的表。

语法格式如下:

<code class=" hljs lasso">mysqlhotcopy <span class="hljs-attribute">-u</span> root <span class="hljs-attribute">-p</span> JavaStudy /Users/frankstar/Desktop/JavaStudy</code>

它只是将表所在目录复制到另一个目录下,类似直接的复制cp/scp来备份数据库。

数据还原

mysql命令还原

语法格式如下:

<code class=" hljs ruby">mysql -u root -p booksDB < <span class="hljs-regexp">/Users/frankstar</span><span class="hljs-regexp">/Desktop/books</span>DB_2016051<span class="hljs-number">0</span>.sql</code>

提示:首先数据库中要有这个还原的数据库,即使是空的。

使用source 命令导入备份sql文件

首先登陆到服务器上,使用如下语法:

<code class=" hljs php"><span class="hljs-comment">#source filename;</span>
mysql> <span class="hljs-keyword">use</span> <span class="hljs-title">booksDB</span> ;
mysql> source /Users/frankstar/Desktop/booksDB_20160510.sql
</code>
使用直接复制到数据目录的方法

将之前通过复制备份数据库的数据目录与文件复制到mysql的数据目录下实现还原,这种方法要求数据库的主版本号需要相同,同时要求是MyISAM表,同时需要停止数据库服务以及更改数据文件的属主与属组为mysql

mysqlhotcopy快速恢复

与直接复制到数据目录的方法类似,也需要停止服务,更改数据文件的属主和属组,如下:

<code class=" hljs lasso">chown <span class="hljs-attribute">-R</span> mysql:mysql /<span class="hljs-built_in">var</span>/lib/mysql/db_name</code>

复制语法:

<code class=" hljs lasso">cp -R /Users/frankstar/Desktop/JavaStudy /usr/<span class="hljs-built_in">local</span>/<span class="hljs-built_in">var</span>/mysql/JavaStudy</code>
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn