[读书笔记]High Performance MySQL–第九章

Chapter 9. Backup and Recovery

9.1.1 Disaster Recovery
备份对灾难来讲就像一份保险—相当便宜的保险。

9.1.2 Auditing
在下列情况下,你也许需要备份的数据:
1. 寻找损坏的数据;
2. 决定如何修补新发现的 bug ;
3. 计算数据库的增长率;
4. 给司法案件或调查提供证据。

9.1.3 Testing
备份的数据可以供测试用。

9.2 Considerations and Tradeoffs

9.2.1 Dump or Raw Backup?
Raw 备份是直接拷贝 MySQL 在磁盘上的数据文件,它比 dumps 更快也更有效率,而且不需要重建索引。

9.2.2 Online or Offline?
离线备份不需要考虑一致性和备份期间性能的问题。

9.2.3 Table Types and Consistency
数据一致性是备份中最需要重视的问题。如果你使用 ISAM 引擎,简单地拷贝那些数据文件是不够的。你要保证所有的数据改变已经同步到磁盘上,而且在备份过程中数据不能有任何变化。最容易的办法就是在备份之前对表进行读锁定。

对关系型数据库来讲,在备份之前最好锁定所有的表,否则就会出现数据不一致的可能。

9.2.4 Storage Requirements
备份的时候要考虑备份所需的空间和备份的频率。

9.2.5 Replication
Replication 是一个非常好的 24×7 x 365 热备份的解决方案。

提醒的是备份 slave 服务器时,要记住备份那些 replication 的配置和日志文件:master.info,relay 日志, relay 索引等。有了这些文件,恢复起来会很方便。

9.3 Tools and Techniques

备份所有数据库:
$ mysqldump u root -pPassword -x—alldatabases > dump.sql
-x 是告诉 mysqldump 在备份过程中锁定所有的表。

$ mysqldump -u root -pPassword -x—databases db1 db2 db3 > dump.sql
$ mysqldump -u root -pPassword -x db1 table1 table2 table3 > dump.sql

远程备份:
$ mysqldump h db.example.com -u root -pPassword -x—alldatabases > dump.sql

9.3.1.1 Restoring
$ mysql -u root -pPassword < dump.sql

9.3.2 mysqlhotcopy
Mysqlhotcopy 是目前最流行在线 raw 备份工具,它其实是一个 perl 脚本。

在线备份一个 test 数据库
$ mysqlhotcopy -u root -p Password test /tmp

9.3.2.1 Restoring
恢复 test 数据库中 testmoreinfo 表
$ cp /tmp/test/testmoreinfo.* datadir/test

Post a Comment