MySQL 数据库的备份与恢复

  1. 云栖社区>
  2. 博客>
  3. 正文

MySQL 数据库的备份与恢复

程序猿肖邦 2016-12-31 12:30:00 浏览309
展开阅读全文

一、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

 

四、直接复制数据库目录

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

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

 

五、使用 mysqlhotcopy 快速备份

1. mysqlhotcopy 安装

2. 语法和常用选项

3. 实例备份

4. 实例恢复

 

六、备份策略

待续。

 

---------- 本文结束 ----------

网友评论

登录后评论
0/500
评论
程序猿肖邦
+ 关注