[读书笔记]High Performance MySQL–第九章
March 24th, 2006 at 10:12 pm (用力读书)
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