千家信息网

xtrabackup 备份还原单库/表

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,使用 mysqldump 逻辑备份还原单个数据库/表非常方便。但是,当数据量比较大的时候,对逻辑备份进行恢复的时间太长了。这个时候选择物理备份的方式能大大缩短其中时间。使用 xtrabackup 进行
千家信息网最后更新 2026年11月01日xtrabackup 备份还原单库/表

使用 mysqldump 逻辑备份还原单个数据库/表非常方便。但是,当数据量比较大的时候,对逻辑备份进行恢复的时间太长了。这个时候选择物理备份的方式能大大缩短其中时间。


使用 xtrabackup 进行全库物理备份还原非常简单,无须对其表空间(tablespace)进行重新导入。


xtrabackup 全库备份还原步骤:

    • 创建备份

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

    • 准备备份

      $ xtrabackup --prepare --target-dir=/data/backups/

    • 还原备份

      $ xtrabackup --copy-back --target-dir=/data/backups/

      $ chown -R mysql:mysql /var/lib/mysql


单库/表备份还原步骤:

    • 创建备份

      xtrabackup --backup --datadir=/var/lib/mysql --target-dir=/data/backups/ --tables="^test[.]. * "

    • 准备备份

      $ xtrabackup --prepare --target-dir=/data/backups/

    • 导出表结构

      $ mysqldump -d ^test > test.sql

    • 导入表结构

      $ mysql test < test.sql

    • 释放表空间

      # mysql -e "set foreign_key_checks=0;alter table test.* discard tablespace;"

    • 复制文件到数据目录

      # cp -f /data/backups/*.cfg /data/backups/*.ibd /data/backups/*.frm /var/lib/mysql/test

    • 修改属主

      # chown -R mysql:mysql /var/lib/mysql/test

    • 导入表空间

      # mysql -e "set foreign_key_checks=0;alter table test.* import tablespace;analyze table test.*;"

如果两个实例都具有 GA(通用可用性)状态并且它们的版本在同一个系列中,则从另一个 MySQL 服务器实例导入表空间文件将起作用。 否则,该文件必须已在与其导入的服务器实例相同的服务器实例上创建。



以下是一个通过 xtrabackup 对单库进行备份还原的脚本

#!/bin/bash# by geamover on 2017-12-26# last updated on 2018-05-08# This is for backup one DB to the orther DB on the same server by xtrabackup.BK_DIR=/data/backup/`date +%F`/$1  # 备份路径MT=$BK_DIR/$1.sql                                       # 元数据DT=/data/mysql/data/                            # 数据目录SK=/tmp/mysql.sock                                      # mysql.sockPW=123456                                                       # mysql 密码if [ $# -ne 2 ]; then        echo -e "\e[1;31mUsage:\e[0m $0 source_DB destination_DB"        exit 1fimysql -u root -p"$PW" -e "use $1;" &> /dev/nullif [ $? != 0 ]; then         echo "There is no database $1, please check!"        exit 1fiecho "It will drop databae $2, are you sure continue?"echo -e "\e[1;31my\e[0m for continue, any orther for exit: " read inputif [ $input == "y" ]; then        echo "Go on!"else         echo "Cancled!"        exitfiif [ -d $BK_DIR ];then         rm -rf $BK_DIR/*else mkdir -p $BK_DIRfiecho "From $1 to $2" | tee -a xtra.logecho `date "+%F %T"`" Backing up databae $1 to $BK_DIR" | tee -a xtra.logxtrabackup --backup -u root -p"$PW" --socket=$SK --databases="$1" --parallel=8 --target-dir=$BK_DIR &>> xtra.logJD=`tail -n 1 xtra.log | awk '{print $3$4}'`if [ $JD == "completedOK!" ]; then        echo `date "+%F %T"`" Back up databae $1 to $BK_DIR completed OK!"else         echo `date "+%F %T"`" Back up databae $1 to $BK_DIR failed!"        exit 1fiecho `date "+%F %T"`" Prepare the backup."| tee -a xtra.logxtrabackup --prepare --export --parallel=8 --target-dir=$BK_DIR &>> xtra.logJD=`tail -n 1 xtra.log | awk '{print $3$4}'`if [ $JD == "completedOK!" ]; then        echo `date "+%F %T"`" Prepare up databae $1 to $BK_DIR completed OK!"else         echo `date "+%F %T"`" Prepare up databae $1 to $BK_DIR failed!"        exit 1fiecho `date "+%F %T"`" Dump the metadata of $1 to $MT."# --set-gtid-purged=OFF 如果开启 GTID 请指定该选项导出元数据mysqldump -u root -p"$PW" -d $1 > $MTecho "Drop database $2 if exists.Then create it and import metadata."mysql -u root -p"$PW" -e "Drop database if exists $2;create database $2;use $2;source $MT;" &> /dev/nullfor i in $(grep "CREATE TABLE" $MT | awk '{print $3}' | sed "s#\`##g")        do        mysql -u root -p"$PW" -e "set foreign_key_checks=0;alter table $2.$i discard tablespace;" &> /dev/null         cp -f $BK_DIR/$1/$i.cfg $BK_DIR/$1/$i.ibd $BK_DIR/$1/$i.frm $DT$2/         chown -R mysql:mysql $DT$2/         mysql -u root -p"$PW" -e "set foreign_key_checks=0;alter table $2.$i import tablespace;analyze table $2.$i;" &> /dev/null doneecho `date "+%F %T"`" From $1 to $2 done." | tee -a xtra.log# delete the backuprm -rf $BK_DIR


备份 数据 实例 空间 文件 服务器 服务 时候 步骤 物理 目录 结构 逻辑 准备 相同 两个 作用 单个 可用性 密码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 精品咖啡豆 华服互联网科技靠谱吗 科技与互联网 天下捷融互联网科技 科技赋能互联网健康 成都玖崟互联网科技有限公司乐商圈怎么样 广州优美互联网科技 互联网5g黑科技有哪些 宜昌元轩互联网科技有限公司 广州市恰铎互联网科技有限公司 洛阳共同富裕互联网科技有限公司 南博望互联网科技有限公司 互联网时代的科技公司 合肥互联网科技公司公章图片 南通创西澳互联网科技有限公司 广州富喜互联网络科技 艺电能源互联网科技有限公司招聘 北京瑞云互联网科技有限公司 互联网科技创新方面的资料 知域互联网科技有限公司官网 科技制造互联网公司 互联网科技视频 艾特科技互联网 火传媒上海互联网科技 人人互联网科技是培训 成都互联网科技公司100强 汽车互联网创新科技园 世界互联网科技公司市值排名 启辰互联网科技 瑞安市蟠桃会互联网科技有限公司
0