浅谈MySQL数据库的备份与恢复
一、MySQL常见的备份方式
1.直接拷贝数据库文件(物理拷贝)
2.使用mysqldump工具备份
3.使用mysqlhotcopy工具备份
4.使用mysql的主从同步复制,实现数据实时同步备份
二、MySQL物理数据文件结构介绍
1.日志文件
错误日志errlog
二进制日志binarylog
更新日志updatelog
查询日志querylog
慢查询日志slowquerylog
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相关信息
relaylog:存储I/O进程从master读取的bin-log信息,然后由slave端的SQL线程从该binarylog中读取解析过的日志信息,转化成slave所能执行的query语句
index:则是存放binarylog的路径,也就是目录文件
三、使用mysqldump备份与恢复
1.备份原理
mysqldump备份原理比较简单,先查出需要备份的表结构,在文本文件中生成一个create语句;然后将表中的所有数据记录转换成一条insert语句;通过这些语句就能够创建表并插入数据。
2.备份一个数据库
基本语法:
>>>mysqldump-uusername-pdbnametable1table2...>BackupName.sql
实例说明:
mysqldump-uroot-ptestperson>/tmp/backup.sql
3.备份多个数据库
基本语法:
mysqldump-uusername-p--databasesdbname2dbname2>BackupName.sql
实例说明:
mysqldump-uroot-p--databasestestmysql>/tmp/backup.sql
4.备份所有数据库
基本语法:
mysqldump-uusername-p-all-databases>BackupName.sql
实例说明:
mysqldump-u-root-p-all-databases>/tmp/all.sql
5.数据恢复
基本语法:
mysql-uroot-p[dbname]<backup.sql
实例说明:
mysql-uroot-p</tmp/backup.sql
四、直接复制数据库目录
MySQL有一种非常简单的备份方法,就是将MySQL中的数据库文件直接复制出来。这是最简单,速度最快的方法。不过在此之前,要先将服务器停止,这样才可以保证在复制期间数据库的数据不会发生变化。如果在复制数据库的过程中还有数据写入,就会造成数据不一致。这种情况在开发环境可以,但是在生产环境中很难允许备份服务器。
注意:这种方法不适用于InnoDB存储引擎的表,而对于MyISAM存储引擎的表很方便。同时,还原时MySQL的版本最好相同。