【推荐】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}"
来源:oschina
链接:https://my.oschina.net/u/2700824/blog/728101