- 时间:2022-10-16 22:27 编辑: 来源: 阅读:
- 扫一扫,手机访问
摘要:浅谈MySQL数据库的备份与恢复
[b]一、MySQL 常见的备份方式
[/b]
1. 直接拷贝数据库文件(物理拷贝)
2. 使用 mysqldump 工具备份
3. 使用 mysqlhotcopy 工具备份
4. 使用 mysql 的主从同步复制,实现数据实时同步备份
[b]二、MySQL 物理数据文件结构介绍[/b]
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 的路径,也就是目录文件
[b]三、使用 mysqldump 备份与恢复
[/b]
1. 备份原理
mysqldump 备份原理比较简单,先查出需要备份的表结构,在文本文件中生成一个 create 语句;然后将表中的所有数据记录转换成一条 insert 语句;通过这些语句就能够创建表并插入数据。
2. 备份一个数据库
基本语法:
[code]>>> mysqldump -u username -p dbname table1 table2 ... > BackupName.sql
[/code]
实例说明:
[code]mysqldump -u root -p test person > /tmp/backup.sql[/code]
3. 备份多个数据库
基本语法:
[code]mysqldump -u username -p --databases dbname2 dbname2 > BackupName.sql[/code]
实例说明:
[code]mysqldump -u root -p --databases test mysql > /tmp/backup.sql[/code]
4. 备份所有数据库
基本语法:
[code]mysqldump -u username -p -all-databases > BackupName.sql[/code]
实例说明:
[code]mysqldump -u -root -p -all-databases > /tmp/all.sql
[/code]
5. 数据恢复
基本语法:
[code]mysql -u root -p [dbname] < backup.sql[/code]
实例说明:
[code]mysql -u root -p < /tmp/backup.sql[/code]
[b]四、直接复制数据库目录
[/b]
MySQL 有一种非常简单的备份方法,就是将 MySQL 中的数据库文件直接复制出来。这是最简单,速度最快的方法。不过在此之前,要先将服务器停止,这样才可以保证在复制期间数据库的数据不会发生变化。如果在复制数据库的过程中还有数据写入,就会造成数据不一致。这种情况在开发环境可以,但是在生产环境中很难允许备份服务器。
注意:这种方法不适用于 InnoDB 存储引擎的表,而对于 MyISAM 存储引擎的表很方便。同时,还原时 MySQL 的版本最好相同。