如何使用 mysqlhotcopy 工具对 MySQL数据库进行热备份

数据备份是意见很重要的事情,对于 MySQL通常有热备份和冷备份两中,冷备份就是指停掉 MySQL服务然后备份数据文件,热备份就是在不停掉 MySQL服务的情况下进行备份。

MySQL 软件包提供了一个名为 mysqlhotcopy 的 Perl程序帮助我们完成热备份。

举例:mysqlhotcopy -uuser -ppass dbname backupdir

用法: /usr/bin/mysqlhotcopy db_name[./table_regex/] [new_db_name | directory]

参数:

  -u, --user=#         用户名
  -p, --password=#     密码
  -h, --host=#         主机
  -P, --port=#         端口
  -S, --socket=#       套接字位置

  --allowold           假如备份目标存在将其命名为 _oldXXXX再继续
  --addtodest          假如备份目标存在直接添加新文件,不重命名
  --keepold            不删除重命名为 _oldXXXX的文件
  --noindices          不保留所有索引
  --method=#           复制的方法 目前仅支持 cp

  -q, --quiet          安静模式,除非发生错误
  --debug              启动调试
  -n, --dryrun         仅现实将要执行的动作但是不实际执行

  --regexp=#           复制所有数据库名和指定内容正则匹配的数据库
  --suffix=#           指定要复制的数据前缀
  --checkpoint=#       将备份检测点插入到指定数据库的数据表中 形如:db.table
  --flushlog           一旦所有标锁定就刷新日志
  --resetmaster        重置binlog一旦所有的被锁定
  --resetslave         重置 master.info一旦所有的被锁定
  --tmpdir=#	       指定临时目录而不是 /tmp
  --record_log_pos=#   记录主从状态到指定数据库的表中 形如:db.table
  --chroot=#           当执行 MySQL操作的时候chroot到指定目录

手动热备份 MyISAM引擎的数据库
我们通过 锁表->复制备份->解锁 的流程进行

# mysql命令
flush tables with read lock;
# 系统命令
cp -R /database/path/ /backup/path
# mysql命令
unlock tables;

可能遇到的错误:
Can’t locate DBI.pm in @INC
解决:
perl -MCPAN -e “install DBI”
perl -MCPAN -e “install DBD::mysql”

Post a Comment

Your email is never shared. Required fields are marked *

*
*