运维管理
MrDoc 速记插件
Docker 安装 mrdoc (开源版)
Docker-compose 安装 mrdoc
Linux之smartctl命令磁盘检测运维
Nginx配置服务并开机启动
yum安装与卸载软件常见命令「建议收藏」
yum 命令使用讲解
Nginx 映射本地静态文件
CentOS7.9 Docker部署Leanote
Nginx配置中的log_format
修改或者隐藏Nginx的版本号
centos编译安装方式升级snmpwalk命令到5.9.1从而支持SHA-512鉴权协议测试
PVE的local和local-lvm
markdown之群晖自建图床
Wireshark介绍及抓包分析
自定义数据推送到pushgateway及推送数据的注意事项
Prometheus监控实战系列十四:Pushgateway
使用 PushGateway 进行数据上报采集
RHEL6.0 yum安装报warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY错误-CSDN博客
烂泥:openvpn配置文件详解-烂泥行天下
RHEL系统以FTP服务器搭建yum源_rhel9 安装 ftp yum
详解用Navicat工具将Excel中的数据导入Mysql中 - Steven* - 博客园
Linux禁止ping以及开启ping的方法 - chenshoubiao - 博客园
MobaXterm设置无密码登录丨Pro Linux 基础篇
CentOS 安装 MySQL8,超详细!
percona-xtrabackup备份及恢复mysql操作
教你玩转MySQL8物理备份利器Xtrabackup
PVE浏览器中文设置
2024年PVE8最新安装使用指南|新手入门|安装|优化|Proxmox VE 8.1__什么值得买
sendmail发邮件注意事项
如何使用sqlite将db文件转成txt文件
一文让你学会,开源WAF雷池SafeLine
iptables按照指定国家屏蔽(GEOIP模块的安装与使用)
py3 容器适配conda24.3.0
CentOS7 配置 nginx 和 php 方案
Sakura Panel搭建教程-搭建属于自己的FRP管理面板
markdown之群晖自建图床
Debian12安装教程(保姆级)
CentOS 6.9密码修改
CentOS7如果忘记密码,密码重置详细步骤,保姆级教程。
利用CertBot实现免费SSL证书的自动签发与续签
证书3月一换很麻烦?一行命令让你解放双手
阿里云域名自动签发泛域名证书配置(最新篇)
Certimate证书自动续签
Auto-SSL
ubuntu忘记密码问题解决
Ubantu启动失败,提示“Started GNOME Display Manager”
kali网络配置(及配置ssh远程连接)
SSL证书--Let’s Encrypt和TrustAsia哪个好
PVE安装ikuai、openwrt以及lxc容器安装docker
Fail2Ban安全配置与应用
本文档使用 MrDoc 发布
-
+
首页
percona-xtrabackup备份及恢复mysql操作
下载地址为[http://www.percona.com/downloads/XtraBackup/](https://links.jianshu.com/go?to=http%3A%2F%2Fwww.percona.com%2Fdownloads%2FXtraBackup%2F) 包含以下两大模块: xtrabackup:支持innodb存储引擎表,xtradb存储引擎表; innobackupex:支持innodb存储引擎表、xtradb存储引擎表、myisam存储引擎表; 常用的是innobackupex,可以使用innobackupex –help查看更详细的参数。 ## 2.percona-xtrabackup实现增量备份及恢复原理 1)与mysqldump的比较: Mysqldump是mysql自带的备份工具,目录在bin目录下面:/usr/local/mysql/bin/mysqldump,支持基于innodb的热备份。但是由于是逻辑备份,所以速度不是很快,适合备份数据比较小的场景。Mysqldump完全备份+二进制日志可以实现基于时间点的恢复。 对myisam存储引擎的表,只能使用温备份,这个时候要防止数据的写入,所以先加上读锁。这个时候也可以进入数据库手动加读锁,不过这样比较麻烦,可以在mysqldump工具中直接有一个加锁的选择,就是 --lock-all-tables ,例如mysqldump --databases test --lock-all-tables --flush-logs > /tmp/backup_test_`date+%F-%H-%M`.sql。 如果是备份单张表,直接在库名字test后面加上表名字即可。 对于innodb存储引擎表,可以热备,不必对数据库进行加锁的操作,加一个选项可以进行热备份,--single-transaction,例如: ``` mysqldump --databases test --single-transaction --flush-logs--master-data=2> /tmp/backup_test_`date +%F-%H-%M`.sql ``` PS:注意点,恢复的时候记得关闭二进制日志: ``` mysql> set sql_log_bin=0; ``` 因为这是基于逻辑备份方式,所以执行sql会插入数据,会记录到二进制日志里面去,因为这事恢复,所以插入的二进制日志基本没有啥意思,可以关闭掉,缩短恢复时间。 2)percona-xtrabackup的优势 支持innodb的物理热备份,支持完全备份,增量备份,而且速度非常快,支持innodb存储引起的数据在不同数据库之间迁移,支持复制模式下的从机备份恢复备份恢复,为了让xtrabackup支持更多的功能扩展,可以设立独立表空间,打开 innodb\_file\_per\_table功能,启用之后可以支持单独的表备份。 3)基本原理 数据库首先,使用percona-xtrabackup工具对进行全备,然后再每次数据库 的数据更新后对数据进行增量备份,每次增量备份均在上一次备份的基础上。恢复时依次把每次增量备份的数据恢复到全备中,最后使用合并的数据进行数据恢复。 ## 3.percona-xtrabackup实现增量备份及恢复过程 1)全量备份 首先创建备份目录,执行: ``` mkdir –p /home/xtrabackup/ innobackupex --user=root --password=root /home/xtrabackup/ ``` 出现“completed”提示时说明备份成功: ``` 150318 19:32:49 innobackupex: Connection to database serverclosed 150318 19:32:49 innobackupex: completed ``` 2)增量备份 执行命令: ``` innobackupex --user=root --password=root --incremental /home/xtrabackup/ --incremental-basedir=/home/xtrabackup/2017-06-29_16-04-29/ ``` 其中--incremental-basedir是刚刚生成的全量备份目录; 同样出现“complete”提示是备份成功。 3)对全量备份数据进行检查 ``` innobackupex --apply-log --redo-only 2017-06-29_16-04-29 ``` 出现下述提示,说明数据没有问题可以用作恢复: ``` 130910 22:23:35 InnoDB: Starting shutdown... 130910 22:23:36 InnoDB: Shutdown completed; log sequence number 2098700 130910 22:23:36 innobackupex: completed OK! ``` 4)合并增量备份和全量备份 ``` innobackupex --apply-log --redo-only --incremental /home/xtrabackup/2017-06-29_16-04-29/ --incremental-dir=/home/xtrabackup/2017-06-29_16-15-18 ``` 同样出现complet提示后合并完成。 5)数据恢复 假如存在数据丢失、误删数据库等问题,需要数据恢复时,首先确认上述全量数据库可以使用,然后执行: ``` /etc/init.d/mysql stop #关闭数据库 mv /var/lib/mysql /var/lib/mysql_bak #备份数据库目录 mkdir –p /var/lib/mysql #创建新的数据库目录 innobackupex --datadir=/var/lib/mysql --copy-back 2017-06-29_16-04-29 #恢复数据库 chown –R mysql:mysql /var/lib/mysql #赋予数据库目录用户权限 /etc/init.d/mysql restart #启动数据库 ``` 执行完成没有错误即恢复完成,可以检查数据库已经成功恢复。 亲测25G的数据库恢复过程只需7min。 而如果采用mysqldump备份的数据库恢复同样大小的数据需要5~6小时。 ## 5.一些重要参数 \--defaults-file 同xtrabackup的--defaults-file参数 --apply-log 对xtrabackup的--prepare参数的封装 --copy-back 做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir; --remote-host=HOSTNAME 通过ssh将备份数据存储到进程服务器上; --stream=\[tar\] 备份文件输出格式, tar时使用tar4ibd , 该文件可在XtarBackup binary文件中获得.如果备份时有指定--stream=tar, 则tar4ibd文件所处目录一定要在$PATH中(因为使用的是tar4ibd去压缩, 在XtraBackup的binary包中可获得该文件)。 在使用参数stream=tar备份的时候,你的xtrabackup\_logfile可能会临时放在/tmp目录下,如果你备份的时候并发写入较大的话 xtrabackup\_logfile可能会很大(5G+),很可能会撑满你的/tmp目录,可以通过参数--tmpdir指定目录来解决这个问题。 --tmpdir=DIRECTORY 当有指定--remote-host or --stream时, 事务日志临时存储的目录, 默认采用MySQL配置文件中所指定的临时目录tmpdir --redo-only--apply-log组, 强制备份日志时只redo ,跳过rollback。这在做增量备份时非常必要。 --use-memory=# 该参数在prepare的时候使用,控制prepare时innodb实例使用的内存量,用来取代my.cnf中的buffer\_pool\_size值,如果你是独立服务器,而且内存足够大的话,为了加快备份恢复的效率,你可以调大--use-memory这个参数值 --throttle=IOS 同xtrabackup的--throttle参数 --sleep= 是给ibbackup使用的,指定每备份1M数据,过程停止拷贝多少毫秒,也是为了在备份时尽量减小对正常业务的影响,具体可以查看ibbackup的手册; --compress\[=LEVEL\] 对备份数据迚行压缩,仅支持ibbackup,xtrabackup还没有实现; --include=REGEXP 对 xtrabackup参数--tables的封装,也支持ibbackup。备份包含的库表,例如:--include="test._",意思是要备份 test库中所有的表。如果需要全备份,则省略这个参数;如果需要备份test库下的2个表:test1和test2,则写成:--include="test.test1|test.test2"。也可以使用通配符,如:--include="test.test_"。 \--databases=LIST 列出需要备份的databases,如果没有指定该参数,所有包含MyISAM和InnoDB表的database都会被备份; --uncompress 解压备份的数据文件,支持ibbackup,xtrabackup还没有实现该功能; --slave-info 备份从库, 加上--slave-info备份目录下会多生成一个xtrabackup\_slave\_info 文件, 这里会保存主日志文件以及偏移, 文件内容类似于:CHANGE MASTER TO MASTER\_LOG\_FILE='', MASTER\_LOG\_POS=0 --socket=SOCKET 指定mysql.sock所在位置,以便备份进程登录mysql. --safe-slave-backup 则会暂停Slave的SQL线程,等待到没有打开的临时表的时候开始备份.备份结束后SQL线程会自动启动,这样就可以确保一致性的复制状态.
adouk
2024年11月26日 11:19
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码