首页 > 其他分享 >xtrabackup备份工具使用指南

xtrabackup备份工具使用指南

时间:2024-10-09 19:50:02浏览次数:12  
标签:-- backup 备份 xtrabackup 使用指南 BACKUP DIR

一、xtrabackup介绍

xtrabackup是由Percona公司开发的一个用于MySQL数据库物理热备的工具,开源免费。目前最新的xtrabbackup 8.3版本可以备份MySQL 8.3 servers上的InnoDB, XtraDB, MyISAM, MyRocks表,Percona Server for MySQL with XtraDB, Percona Server for MySQL 8.3,Percona XtraDB Cluster 8.3。xtrabackup工具执行InnoDB和XtraDB数据库的非阻塞备份。它具有如下优点: (1)备份速度快,物理备份可靠 (2)在备份期间不间断地处理事务 (3)支持备份压缩,节约磁盘空间和网络带宽 (4)自动校验备份 xtrabackup支持流式输出、压缩、增量备份、加密,是目前各个厂商普遍使用的MySQL备份工具。

二、xtrabackup备份原理

1、xtrabackup开始,记录lsn ,同时启动后台进程监控redo日志的变化,且将变化实时记录到xtrabackup_logfile中 2、复制ibdata1,.ibd数据文件 3、全局读锁,执行LOCK INSTANCE FOR BACKUP(8.0取代了 FLUSH TABLES WITH READ LOCK) 4、复制非InnoDB的表和文件 5、获取binlog位置信息 6、停止复制redo log,即停止记录xtrabackup_logfile 7、执行UNLOCK INSTANCE释放锁 8、复制buffer pool 9、备份完成

三、xtrabackup下载

下载网址:https://www.percona.com/downloads 选择和数据库相匹配的xtrabackup版本下载,我这里数据库版本是8.0.35,下载界面如下:

四、xtrabackup安装

1、安装依赖包

# 安装如下依赖包,不然备份会报错 # yum install -y libaio libaio-devel zstd libev perl-DBD-MySQL  perl-Digest-MD5

2、安装部署xtrabackup

tar -xvf percona-xtrabackup-8.0.35-31-Linux-x86_64.glibc2.17.tar.gz 
mv percona-xtrabackup-8.0.35-31-Linux-x86_64.glibc2.17 xtrabackup 
echo "export PATH=\$PATH:/usr/local/xtrabackup/bin" >>/etc/profile 
source /etc/profile
which xtrabackup 

3、查看xtrabackup版本

xtrabackup --version

四、使用xtrabackup备份数据库

1、创建备份目录并授权

mkdir /home/mysql_backup_xtrabackup
chown -R mysql:mysql /home/mysql_backup_xtrabackup

2、全备数据库

创建专用备份账号:
CREATE USER 'backupuser'@'%' IDENTIFIED WITH mysql_native_password by 'XXXXX' PASSWORD EXPIRE DEFAULT;
GRANT BACKUP_ADMIN, PROCESS, RELOAD, SELECT ON *.* TO 'backupuser'@'%';
1、数据库全备的简单应用
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/home/mysql_backup_xtrabackup/db_`date +%F`  --databases="aa,bb" --user=backupuser --password=260ciep#T9evC  --port=3306 --socket=/home/mysql/mysql.sock --compress  >/home/mysql_backup_xtrabackup/db_full_`date +%F`.log 2>&1

注意:--socket要与my.cnf中的配置保持一致,--databases="ehs_device,ehs_hazard"可以根据实际情况选择备份部分库 基本参数
  • --backup:指定执行备份。
  • --target-dir=<dir>:指定备份数据存放的目标目录。
  • --user=<username>:数据库用户名。
  • --password=<password>:数据库密码。
  • --host=<hostname>:数据库主机名。
  • --port=<port>:数据库端口。
恢复参数
  • --copy-back:将备份文件复制回数据目录。
  • --datadir=<dir>:指定数据目录(用于恢复)。
压缩与加密
  • --compress:启用压缩。
  • --encrypt:启用加密。
2、数据库全备的进阶应用(如下是每周日进行全量备份,周一到周六在此基础上进行增量备份的脚本)
#!/bin/bash

# 设置数据库配置
USER="backupuser"
PASSWORD="XXXXX"
DEFAULTS_FILE="/etc/my.cnf"  # 指定你的配置文件
#DATADIR="/var/lib/mysql"
BASE_BACKUP_DIR="/mysql_backup_xtrabackup"
SOCKET_FILE="/var/lib/mysql/mysql.sock"

# 获取当前日期
CURRENT_DATE=$(date +%Y-%m-%d)
FULL_BACKUP_DIR="$BASE_BACKUP_DIR/full_$CURRENT_DATE"
FULL_BACKUP_LOG="$BASE_BACKUP_DIR/log_full_$CURRENT_DATE.log"
INCREMENTAL_BACKUP_DIR="$BASE_BACKUP_DIR/incremental_$CURRENT_DATE"
INCREMENTAL_BACKUP_LOG="$BASE_BACKUP_DIR/log_incremental_$CURRENT_DATE.log"

# 检查是否为周日
if [ "$(date +%u)" -eq 7 ]; then
    # 周日进行全量备份
    echo "Starting full backup..."
    xtrabackup --defaults-file="$DEFAULTS_FILE" --backup --target-dir="$FULL_BACKUP_DIR" --user="$USER" --password="$PASSWORD" --socket="$SOCKET_FILE" --compress > "$FULL_BACKUP_LOG" 2>&1
    echo "Full backup completed."
else
    # 其他天进行增量备份
    LAST_FULL_DIR=$(ls -d "$BASE_BACKUP_DIR/full_"* | sort | tail -n 1)
    LAST_INCREMENTAL_DIR=$(ls -d "$BASE_BACKUP_DIR/incremental_"* | sort | tail -n 1)

    if [ -z "$LAST_FULL_DIR" ]; then
        echo "No previous full backup found. Exiting."
        exit 1
    fi

    if [ -z "$LAST_INCREMENTAL_DIR" ]; then
        echo "No previous incremental backup found. Using the last full backup for the base."
        LAST_INCREMENTAL_DIR="$LAST_FULL_DIR"
    fi

    echo "Starting incremental backup based on $LAST_INCREMENTAL_DIR..."
    xtrabackup --defaults-file="$DEFAULTS_FILE"  --backup --no-lock --target-dir="$INCREMENTAL_BACKUP_DIR" --incremental-basedir="$LAST_INCREMENTAL_DIR"  --user="$USER" --password="$PASSWORD" --socket="$SOCKET_FILE"  --compress > "$INCREMENTAL_BACKUP_LOG" 2>&1
    echo "Incremental backup completed."
fi

标签:--,backup,备份,xtrabackup,使用指南,BACKUP,DIR
From: https://blog.csdn.net/eaglesstone/article/details/142795017

相关文章

  • Postgresql14数据库一键物理备份与恢复脚本
    热衷于分享各种干货知识,大家有想看或者想学的可以评论区留言,秉承着“开源知识来源于互联网,回归于互联网”的理念,分享一些日常工作中能用到或者比较重要的内容,希望大家能够喜欢,不足之处请大家多提宝贵地意见,我们一起提升,守住自己的饭碗。一、备份脚本#!/bin/bash# 定义一些变量B......
  • PostgreSQL 使用pg_dump备份和恢复数据库
    PostgreSQL使用pg_dump备份和恢复数据库pg_dump是PostgreSQL提供的用于备份数据库的工具,它可以将数据库内容导出为不同格式的文件,以便之后进行还原或迁移。下面是关于pg_dump和pg_restore的详细使用说明。一、pg_dump基本语法pg_dump[选项]-d<数据库名>-f<备......
  • 如何轻松备份和恢复realme?
    realme成立于2018年,秉承“敢于超越他人”的品牌理念,强调年轻人的勇气和创新精神,致力于为全球年轻用户提供兼具卓越性能和潮流设计的高品质手机。那么我们如何备份和恢复realme手机呢?在这篇文章中,我们将介绍五种不同的方法来实现realme的备份和恢复。 第1部分.如何通过Co......
  • 《DNK210使用指南 -CanMV版 V1.0》第二十八章 音频播放实验
    第二十八章音频播放实验1)实验平台:正点原子DNK210开发板2)章节摘自【正点原子】DNK210使用指南-CanMV版V1.03)购买链接:https://detail.tmall.com/item.htm?&id=7828013987504)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html5)正点原......
  • MySQL数据库备份与恢复
    MySQL数据库的备份与恢复是数据库管理中至关重要的一部分。无论是在Windows还是Linux系统上,掌握这些技能都能有效保护数据,防止数据丢失。本文将详细介绍MySQL数据库的备份与恢复方法,包括常用工具和步骤。一、备份MySQL数据库1.使用 mysqldump 工具mysqldump是......
  • MongoDB 用户权限管理,复制集,分片集群,备份恢复 rocky使用
    1MongoDB介绍1.4什么时候使用MongoDB1.数据量是有亿万级或者需要不断扩容2.需要2000-3000以上的读写每秒3.新应用,需求会变,数据模型无法确定4.需要整合多个外部数据源5.系统需要99.999%高可用6.系统需要大量的地理位置查询7.系统需要提供最小的latency8.管理的主要数......
  • 【PostgreSQL】运维篇——定期备份与恢复策略
    在数据库管理中,定期备份是确保数据安全性和可恢复性的关键措施。制定一个有效的备份计划可以帮助您在发生数据丢失、损坏或其他灾难性事件时快速恢复数据。以下是制定定期备份计划的步骤,以及使用pg_dump和其他工具进行数据备份和恢复的详细介绍。1.备份计划的制定1.1确定......
  • 【VMware VCF】使用 SFTP 服务器备份 VCF 核心组件的配置文件。
    可以定期对VMwareCloudFoundation环境中的相关核心组件(如SDDCManager、NSXManager以及vCenterServer等)创建配置备份,以防止当意外故障或数据丢失时,能够进行恢复。默认情况下,NSXManager组件的备份将创建并存储在SDDCManager设备中内置的SFTP服务器上,建议单独创建......
  • 本地环境PHP帝国备份王备份报错mysql_escape_string(): This function is
    在使用帝国备份王进行备份和恢复时,如果遇到PHP5.5环境下的报错,通常是因为一些旧的MySQL函数已经被弃用或移除。具体来说,mysql_escape_string 函数在PHP5.5中已经被废弃,应该使用 mysql_real_escape_string 替代。解决方案定位问题文件:找到 function.php 文件的位置。......
  • 织梦如何数据库备份,织梦cms网站数据怎么备份与还原
    织梦CMS(DedeCMS)的数据库备份和还原是非常重要的操作,可以帮助你在出现问题时快速恢复数据。下面详细介绍如何进行织梦CMS的数据库备份和还原。一、数据库备份1.使用phpMyAdmin备份数据库登录phpMyAdmin登录到你的网站控制面板(如cPanel)。找到并打开phpMyAdmin。选择......