mysql热备工具-percona innobackupex 全备步骤【附 远程冷备 程序】

别等时光非礼了梦想. 提交于 2019-12-16 11:14:00

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

#1—环境 工作地点:量化派

使用背景:主从的从库挂掉,只剩下主库高负荷工作。迫切需要备份数据,搭建从库。

#2—自己的话: 合格运维工程师或DBA工程师,操作数据时,首先需要备份。

这样当数据库出现问题时,才能恢复。

但是一般的数据恢复时间是很长的,不符合业务需要求,这就需要我们使用一个快速备份与恢复的软件。

听别人说使用mysqldump会锁表,大数据量的时候会很慢。

然后我们研究决定采用 percona innobackupex, 这是一个快速的热备工具,能够支持全量和增量备份。

优点一大堆,你用就对了!直接上操作手册,方便以后自己操作。

#3—安装

innobackupex的安装,直接看官网,有多种安装方式: https://www.percona.com/doc/percona-xtrabackup/2.4/index.html

我们采用的方式是用 rpm包安装,这样方便以后统一版本,

##3.1—下载包 wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.0/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.0-rc1.1.el7.x86_64.rpm ##3.2—本地安装 yum localinstall percona-xtrabackup-24-2.4.0-rc1.1.el7.x86_64.rpm ##3.3—卸载命令 yum remove percona-xtrabackup #4—数据备份和恢复

    备份之前,将原先mysql的data目录删除,注意,必须data目录全部清空。。data目录全部清空。。data目录全部清空。。

##4.1—备份数据

    innobackupex --defaults-file=/your/path/of/mysql/3306/my.cnf --user=root --password=123456 --port=3306 --host=localhost --parallel=4 --database=test /path/to/BACKUP-DIR/ 2>/tmp/data/err.log
    友情提示:
    ①——
        --parallel=4     命令能让你的数据备份速度提升四倍;
    ②——
        --database=test     单独对test数据库做备份 ,若是不添加此参数那就那就是对全库做备份
    ③——
        2>/tmp/data/err.log    输出信息写入日志中
    ④——我们没有采用在备份数据的时候压缩数据,是因为我们觉得压缩会占用我们操作数据库的时间,所以我们最终选择在数据库备份完成之后,采用tar zcf 的方式来压缩数据,事实证明这样是最好的。

##4.2—准备数据

    innobackupex --apply-log --use-memory=4G /path/to/BACKUP-DIR
    友情提示:--use-memory=4G 该命令默认大小是100m,根据你的内存,来修改一下配置,提升数据恢复速度

##4.3—开始恢复

    innobackupex --copy-back /path/to/BACKUP-DIR

试一下,你就会知道有多快。。有多爽。。

#5—权限设置

    chown -R mysql:mysql mysql目录

#6—之后就可以操作你的数据库了。

#7—

我们在第一次使用的时候,在18G的地方不知道什么意外,锁了一下表,然后我们第二次在备份数据的时候,到了16G将3306端口drop了一下,在备份完之后,又恢复了该端口。

    --16G时

    iptables -A INPUT -p tcp --dport 3306 -j DROP

    --数据恢复完后

    iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

    service iptables stop

    service iptables start

*8—远程冷备 神技能 其实最重要的是最后一句

#!/bin/bash

backup_time=`date +%Y_%m_%d_%H`
current_ip="${要备份的机器ip}"
remote_ip="${远程机器ip}"
remote_path="/home/quant_group/mysql/${current_ip}/full/${backup_time}.tar"
mysql_host="--host=${current_ip}"
mysql_user="--user=${备份的用户名}"
mysql_pass="--password=${备份的密码}"
mysql_port="--port=3306"
defaults_file="--defaults-file=/home/quant_group/mysql/3306/my.cnf"

innobackupex ${defaults_file} ${mysql_user} ${mysql_pass} ${mysql_port} ${mysql_host} --stream=tar ./ | gzip | sshpass -p '' ssh root@${remote_ip}  "cat - > ${remote_path}"
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!