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

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

数据备份是意见很重要的事情,对于 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”

This entry was written by zpz, posted on 2013 年 1 月 18 日 at 上午 11:52, filed under mysql and tagged Mysql备份, Mysql数据备份. Bookmark the permalink. Follow any comments here with the RSS feed for this post. Post a comment or leave a trackback: Trackback URL.

方案一:mysqldump全备份+日志增量备份

1, mysqldump备份方案:

周一凌晨3点 全备

周二到周日凌晨3点增量备份

2, 备份步骤

(1) 创建备份目录,备份脚本存放目录

Shell >mkdir /usr/mysqlbackup

Shell >chmod 755 /usr/mysqlbackup

Shell >mkdir /usr/mysqlbackup/daily

Shell >chmod 755 /usr/mysqlbackup/daily

Shell >mkdir /usr/script

Shell >chmod 777 /usr/script/*.sh

(2) 启用二进制日志

如果日志没有启开,必须启用binlog,要重启mysqld,首先,关闭mysqld,打开/etc/my.cnf,加入以下几行:

[mysqld]

log-bin

然后重新启动mysqld,会产生hostname-bin.000001以及hostname-bin.index,前面的日志文件是记录所有对数据的更新 *** 作,后面的文件是存储所有二进制文件的索引,不能轻易被删除。

(3) 全备份,增量备份。

详细见mysqlFullBackup.sh、mysqlDailyBackup.sh脚本(请注意脚本里面的备份目录、mysql软件安装目录、压缩文件名以及用户名密码,如有不符,请修改)。

下面是部分shell上单个手动执行的测试命令。

Shell>/usr/local/mysql/bin/mysqldump -uroot -pnYuIman25040slave201012301124 --no-create-info=FALSE --order-by-primary=FALSE --force=FALSE --no-data=FALSE --tz-utc=TRUE --flush-privileg

es=FALSE --compress=FALSE --replace=FALSE --insert-ignore=FALSE --extended-insert=TRUE --quote-names=TRUE --hex-blob=TRUE --complete-insert=FALSE --add-locks=TRUE --port=3306 --d

isable-keys=TRUE --delayed-insert=FALSE --create-options=TRUE --delete-master-logs=FALSE --comments=TRUE --default-character-set=utf8 --max_allowed_packet=1G --flush-logs=FALSE -

-dump-date=TRUE --lock-tables=TRUE --allow-keywords=FALSE --events=FALSE --single-transaction=TRUE --routines --all-databases >/backup/mysql/full/mysql_20110104_195546.sql

(4) 设置crontab任务,每天执行备份脚本

shell>crontab –e

#每个星期日凌晨3:00执行完全备份脚本

#周一到周六凌晨3:00做增量备份

0 3 * * 1-6 /root/MySQLBackup/mysqlDailyBackup.sh >/dev/null 2>&1

(5) 清除旧的备份文件。

每天去看查看下备份磁盘空间,删除旧的备份压缩文件。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/8749055.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-20
下一篇2023-04-20

发表评论

登录后才能评论

评论列表(0条)

    保存