在运维中需定期备份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/