Xtrabackup

安装

yum安装

安装需要对应mysql版本

sudo yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
sudo percona-release enable-only tools release
sudo yum install -y percona-xtrabackup-80

全量备份及恢复

1、备份

xtrabackup --backup --target-dir=/data/xbackups/ --user=root --password=youpwd 

2、准备文件(可在任意服务器进行)

xtrabackup --prepare --target-dir=/data/xbackups/

3、恢复数据 

先停mysql服务,清空data目录

service mysqld stop
mv /var/lib/mysql/data  /var/lib/mysql/data-b20240224

恢复数据

xtrabackup --copy-back --target-dir=/data/xbackups/

或者(恢复完成会将原来的准备数据清除)

xtrabackup --move-back --target-dir=/data/xbackups/

data目录重新赋予权限,启动mysql

chown -R mysql:mysql /var/lib/mysql/data
service mysqld start
service mysqld status

增量备份

1、先创建一次全量备份,xtrabackup 会写一个xtrabackup_checkpoints 文件进目标目录,包含数数据的位置信息

xtrabackup --backup --target-dir=/data/backups/base

2、基于全量备份,做一次增量备份

xtrabackup --backup --target-dir=/data/backups/inc1 \
--incremental-basedir=/data/backups/base

3、基于上一次增量数据再做一次备份

xtrabackup --backup --target-dir=/data/backups/inc2 \
--incremental-basedir=/data/backups/inc1

4、准备恢复数据(恢复全量,将增量数据恢复到target目录)

xtrabackup --prepare --apply-log-only --target-dir=/data/backups/base
xtrabackup --prepare --apply-log-only --target-dir=/data/backups/base \
--incremental-dir=/data/backups/inc1
xtrabackup --prepare --target-dir=/data/backups/base \
--incremental-dir=/data/backups/inc2

5、恢复数据,步骤和全量恢复数据一样

备份指定数据库、表

数据库备份脚本

常用参数

--user=                #指定数据库备份用户
--password=       #指定数据库备份用户密码
--port=                #指定数据库端口
--host=               #指定备份主机
--socket=            #指定socket文件路径
--databases=  #备份指定数据库,多个空格隔开,如--databases="dbname1 dbname2",

        不加备份所有库
--defaults-file=       #指定my.cnf配置文件
--apply-log         #日志回滚
--incremental=          #增量备份,后跟增量备份路径
--incremental-basedir=     #增量备份,指上次增量备份路径
--redo-only         #合并全备和增量备份数据文件
--copy-back         #将备份数据复制到数据库,数据库目录要为空
--no-timestamp          #生成备份文件不以时间戳为目录名
--stream=             #指定流的格式做备份,--stream=tar,将备份文件归档
--remote-host=user@ip DST_DIR #备份到远程主机

报错

备份时报错:

[Xtrabackup] failed to execute query ‘LOCK INSTANCE FOR BACKUP’ : 1227 (42000) Access denied; you need (at least one of) the BACKUP_ADMIN privilege(s) for this operation

权限问题,需要为mysql用户添加权限

grant BACKUP_ADMIN on *.* to 'root'@'%';
flush privileges;

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值