#1—环境 工做地点:量化派html
使用背景:主从的从库挂掉,只剩下主库高负荷工做。迫切须要备份数据,搭建从库。mysql
#2—本身的话: 合格运维工程师或DBA工程师,操做数据时,首先须要备份。sql
这样当数据库出现问题时,才能恢复。数据库
可是通常的数据恢复时间是很长的,不符合业务须要求,这就须要咱们使用一个快速备份与恢复的软件。bash
听别人说使用mysqldump会锁表,大数据量的时候会很慢。app
而后咱们研究决定采用 percona innobackupex, 这是一个快速的热备工具,可以支持全量和增量备份。运维
优势一大堆,你用就对了!直接上操做手册,方便之后本身操做。ssh
#3—安装tcp
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}"