详解MySQL数据库的备份与恢复

2017-01-09 22:26:54 9539

一、MySQL 常见的备份方式

  1. 直接拷贝数据库文件(物理拷贝)

  2. 使用 mysqldump 工具备份

  3. 使用 mysqlhotcopy 工具备份

  4. 使用 mysql 的主从同步复制,实现数据实时同步备份

二、MySQL 物理数据文件结构介绍

  1. 日志文件

    错误日志 err log
    二进制日志 binary log
    更新日志 update log
    查询日志 query log
    慢查询日志 slow query log
    innodb 的 redo 日志

  2. 数据文件

  myisam存储引擎 :

    表结构信息:.frm
    数据信息:.myd
    数据索引信息:.myi
  Innodb存储引擎:

    独享表空间:.ibd
    共享表空间:.ibdata

  3. 系统文件

    配置文件:my.cnf
    进程文件:xxx.pid
    socket文件:xxx.sock

  4. replication 文件

    master.info:存储在 slave 端目录下,关于 master 和 slave 相关信息。
    relay log:存储 I/O 进程从 master 读取的 bin-log 信息,然后由slave端的SQL线程从该 binary log 中读取解析过的日志信息,转化成 slave 所能执行的 query 语句。
    index:则是存放 binary log 的路径,也就是目录文件。

三、使用 mysqldump 备份与恢复

  1. 备份原理

mysqldump 备份原理比较简单,先查出需要备份的表结构,在文本文件中生成一个 create 语句;然后将表中的所有数据记录转换成一条 insert 语句;通过这些语句就能够创建表并插入数据。

  2. 备份一个数据库

基本语法:

mysqldump -u username -p dbname table1 table2 ... > BackupName.sql

实例说明:

>mysqldump -u root -p test person > /tmp/backup.sql

  3. 备份多个数据库

基本语法:

mysqldump -u username -p --databases dbname2 dbname2 > BackupName.sql

实例说明:

>mysqldump -u root -p --databases test mysql > /tmp/backup.sql

  4. 备份所有数据库

基本语法:

mysqldump -u username -p -all-databases > BackupName.sql

实例说明:

>mysqldump -u -root -p -all-databases > /tmp/all.sql

  5. 数据恢复

基本语法:

mysql -u root -p [dbname] < backup.sql

实例说明:

>mysql -u root -p < /tmp/backup.sql

四、使用mysqlhotcopy备份与恢复

mysqlhotcopy使用lock tables、flush tables和cp或scp来快速备份数据库。它是备份数据库或单个表最快的途径,完全属于物理备份,但?能用于备份MyISAM存储引擎和运行在数据库目录所在的机器上。与mysqldump备份不同,mysqldump属于逻辑备份,备份时是执行的sql语句。使用mysqlhotcopy命令前需要要安装相应的软件依赖包(perl-DBD,DBD-mysql)。

yum install perl-DBD* -y
wget http://www.landui.com/authors/id/M/MI/MICHIELB/DBD-mysql-4.040.tar.gz
tar xvf DBD-mysql-4.040.tar.gz
cd DBD-mysql-4.040perl Makefile.PL
make&&make install
vim /usr/my.cnf
 [mysqlhotcopy] 
 interactive-timeout 
 host=localhost 
 user=root 
 password=****** 
 port=3306
/etc/init.d/mysql restart
mysqlhotcopy -u root -p ****** test /opt/        #备份数据库
mysqlhotcopy -u root -p ****** mysql./user*/ /opt/ #备份数据表
cp -arp /opt/test /var/lib/mysql/           #恢复数据

五、直接复制数据库目录

MySQL 有一种非常简单的备份方法,就是将 MySQL   中的数据库文件直接复制出来。这是最简单,速度最快的方法。不过在此之前,要先将服务器停止,这样才可以保证在复制期间数据库的数据不会发生变化。如果在复制数据库的过程中还有数据写入,就会造成数据不一致。这种情况在开发环境可以,但是在生产环境中很难允许备份服务器。

注意:这种方法不适用于 InnoDB 存储引擎的表,而对于 MyISAM 存储引擎的表很方便。同时,还原时 MySQL 的版本最好相同。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: