代码改变世界

mysql热备份工具mysqlhotcopy

2012-11-05 21:45  游乐场123  阅读(295)  评论(0编辑  收藏  举报

在运维中需定期备份mysql,为崩溃后的恢复数据做准备。一般分为冷备和热备,冷备就是停掉mysql服务,直接cp文件,但是在生产环境中,很少有机会这样,一般都是在mysql提供服务的时候就进行备份,因此这牵扯到数据一致性的问题。所以,在MyISAM存储引擎下,我们的思路就是:锁表 –>备份–>解锁

# 进入mysql环境 锁表
root@mysql : test > flush tables with read lock;
# 在系统环境下 备份
cp -R test /tmp/backup/test_back
# 进入mysql环境 解锁
root@mysql : test > unlock tables;

mysqlhotcopy 热备工具

当然也可通过mysql自带的工具 mysqlhotcopy 解决,事实上mysqlhotcopy是个perl程序,提供MyISAM下的锁表备份解锁操做。因为是perl脚本,所以需要机器上有PERL-DBD 模块,不然会报错: Can’t locate DBI.pm in @INC ,安装过程很简单,在这里: perl-DBI连接mysql

mysqlhotcopy也很简单,参数可用 –help 查看

# 备份test库为新的test_tmp库,与test同级目录 
mysqlhotcopy  --user=root  --password=root   test   test_tmp
 
# 备份test库 到 /tmp/ 目录下 
mysqlhotcopy  --user=root  --password=root   test   /tmp/
 
# --checkpoint dbinfo.checkpoint 这个是指定存放操作记录的数据库/表
# --addtodest 增量备份,新的备份自动覆盖掉原来的
mysqlhotcopy  --user=root  --password=root  --checkpoint=dbinfo.checkpoint  --addtodest  test  /tmp/