1、原理:方案选型
mysqldump是逻辑备份解决方案,备份恢复速度慢,工具获取方便,数据量少推荐
主要用途是导出数据
xtrababckup是物理热备份,速度快,适合大数据量
xtrababckup支持innodb和MyISAM存储引擎,支持集成shell脚本,支持管道传输
InnoDB支持完整和增量备份,不上只读锁
MyISAM只有全量备份,会上只读锁,备份期间不可写
xtrababckup版本号:percona-xtrabackup-24对应5.*版本;percona-xtrabackup-80对应8.*版本
 
增量备份原理:使用page的lsn号,如图7,8是lsn变化的page
 
 
xtrabackup备份原理-时序图表示

结论:高效热备份使用xtrabackup
 
2、安装xtrabackup
方式一:在线安装
安装包管理器
yum install percona-xtrabackup-24
yum install -y percona-xtrabackup-24.x86_64
方式二:编译安装
https://www.percona.com/downloads下载二进制安装包percona-xtrabackup-2.4.29-Linux-x86_64.glibc2.17.tar.gz,龙蜥操作系统选择generic

创建目录 /home/xtrabackup 二进制安装包上传此目录
2.1 解压缩
tar -zxvf percona-xtrabackup-2.4.29-Linux-x86_64.glibc2.17.tar.gz
2.2 移动目录
mv percona-xtrabackup-2.4.29-Linux-x86_64.glibc2.17 /usr/local/xtrabackup-2.4.29
2.3 配置软链接
ln -sf /usr/local/xtrabackup-2.4.29/bin/* /usr/bin/
2.4 查看版本号
xtrabackup -v
 
3、xtrabackup命令说明
备份命令:
xbstream :流式压缩,节省IO,tar压缩要先创建文件,流式压缩可以边生成边压缩
innobackupex :总命令,包含其它命令,对MYISAM存储引擎,只能全量备份;对innodb引擎可以做增量备份,只存在于2.4版本,8版本已取消
 
4、xtrabackup做全量热备份
#普通热备份
innobackupex --defaults-file=/etc/my.cnf --host=*.*.*.* --user=* --password=* --port=3306 /home/mysqlbackup
#流式备份(打开流式IO)
innobackupex --defaults-file=/etc/my.cnf --host=*.*.*.* --user=* --password=* --port=3306 --no-timestamp --stream=xbstream -> /home/mysqlbackup/backup.xbstream
#带压缩流式备份
innobackupex --defaults-file=/etc/my.cnf --host=*.*.*.* --user=* --password=* --port=3306 --compress --compress-threads=10 --no-timestamp --stream=xbstream -> /home/mysqlbackup/backup.xbstream
 
5、使用corn表达式+shell定时备份
5.1 创建shell脚本
cd /home/mysqlbackup
touch shell/bkmysql.sh
#添加shell语句
#mysql用户名与密码
BACKUP_NAME=*
BACKUP_PW=*
#数据库服务器ip
BACKUP_HOST=*
#设置备份文件所在的目录
BACKUP_DIR=/home/mysqlbackup
#mysql配置文件路径
MYSQL_CNF=/etc/my.cnf
#备份scp远程保存ip
remote_host=*.*.*.*
#备份文件集团侧保存路径
remote_path=/home/mysql/backupfile
 
#全量热备,大约10秒
time=$(date "+%Y-%m-%d %H:%M:%S")
echo "执行全量热备份" ${time}
filename="backup-$(date +%Y%m%d).xbstream"
innobackupex --defaults-file=$MYSQL_CNF --host=$BACKUP_HOST --user=$BACKUP_NAME --password=$BACKUP_PW --port=3306 --compress --compress-threads=10 --no-timestamp --stream=xbstream -> $BACKUP_DIR/$filename
#备份文件传输到文件服务器
scp -r /home/mysqlbackup/$filename root@$remote_host:$remote_path
echo "文件传输完毕"
#保留最近三天的文件,其余的将被删除
find $BACKUP_DIR -type f -name "*.xbstream" -mtime +3 -exec rm -f {} ;
echo "历史数据清理完毕"
 
5.2 #提升权限,授权文件可执行
chmod -R 777 bkmysql.sh
5.3 创建日志目录
mkdir /home/mysqlbackup/log
5.3 编辑crontab表达式
crontab -e
#添加定时任务,每天2点十分执行shell脚本
10 2 * * * /home/mysqlbackup/shell/bkmysql.sh > /home/mysqlbackup/log/backup.log 2>&1
 
6、SSH免秘登录配置
ssh localhost --产生.ssh的隐藏目录
在每台机器上执行:ssh-keygen -t rsa --产生密钥对(一路回车)
ssh-copy-id -i ~/.ssh/id_rsa.pub 远程机器ip
免秘登录测试通过
 
7、恢复测试(mysql只能冷还原)
7.1 停止mysql数据服务,清空数据目录包括表分区目录
systemctl stop mysqld
rm -rf /home/cnbm/mysql/data
7.2 将流式备份的压缩文件还原到临时目录
mkdir /home/temp
#还原流式文件
xbstream -x < /home/mysql/backupfile/backup-20241212.xbstream --decompress -C /home/temp
(xbstream -x < /home/cnbm/mysqlbackup/backup-20241212.xbstream -C /home/temp)
#解压缩还原文件
innobackupex --decompress /home/temp
7.3 清理redo日志并恢复
innobackupex --apply-log /home/backup/2018-09-12_10-53-51
#恢复数据库
innobackupex --copy-back --defaults-file=/etc/my.cnf /home/temp
7.4 数据目录修改所有者后重启mysql
chown -R mysql:mysql /home/cnbm/mysql/data
systeml start mysqld
 
8.binglog配置(在备份结束至恢复数据这段时间,可使用binlog日志恢复)
8.1.创建binglog日志目录,必须修改所有者权限,否则mysql启动会报错
mkdir /home/cnbm/mysql/binlog/
chown -R mysql.mysql /home/cnbm/mysql/binlog/
8.2./etc/my.cnf文件添加binlog参数,打开binlog开关,指定binglog文件存储路径,修改默认存储格式
binlog_format=MIXED
log_bin=mysql-bin
server-id=1
8.3 相关sql
#显示所有binlog日志名称和大小(索引文件信息)
show binary logs
#是否启用binlog
SHOW VARIABLES LIKE 'log_bin';
#binlog日志格式
show global variables like '%binlog_format%';
#查询binlog文件位置
SHOW VARIABLES LIKE 'log_bin_basename';
#查询binlog文件内容
show BINLOG EVENTS in 'mysql-bin.000001'
 
 
 

使用xtrabackup实现mysql定时热备份的更多相关文章

  1. Percona Xtrabackup备份mysql(转)

    add by zhj:另外,参考了Xtrabackup之innobackupex备份恢复详解,我用的是Xtrabackup2.2.6版本, 可以成功备份和恢复指定的数据库. 原文:http://www ...

  2. Percona Xtrabackup备份mysql全库及指定数据库(完整备份与增量备份)

    原文地址:http://www.tuicool.com/articles/RZRnq2 Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对In ...

  3. Xtrabackup实现MySQL备份

    一.xtrabackup介绍 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写)它由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上 ...

  4. Percona Xtrabackup备份mysql大数据库(完整备份与增量备份)

    Percona Xtrabackup备份mysql大数据库(完整备份与增量备份)     文章目录 [隐藏] Xtrabackup简介 Xtrabackup安装 Xtrabackup工具介绍 inno ...

  5. 利用xtrabackup备份mysql数据库

    利用xtrabackup备份mysql数据库 一.安装1.直接下载二进制文件wget http://www.percona.com/downloads/XtraBackup/XtraBackup-2. ...

  6. 使用 xtrabackup 进行MySQL数据库物理备份

    0. xtrabackup的功能 能实现的功能: 非阻塞备份innodb等事务引擎数据库. 备份myisam表会阻塞(需要锁). 支持全备.增量备份.压缩备份. 快速增量备份(xtradb,原理类似于 ...

  7. MySQL定时执行脚本(计划任务)命令实例

    在mysql中我们可以直接进行一些参数设置让它成定时为我们执行一些任务了,这个虽然可以使用windows或者linux中的计划任务实现,但是mysql本身也能完成 查看event是否开启 复制代码 代 ...

  8. linux下mysql定时备份数据库

    linux下mysql定时备份数据库 (2010-10-21 12:40:17) 转载▼ 标签: 杂谈   一.用命令实现备份 首页进入mysql的bin目录 1.备份数据#mysqldump -uu ...

  9. mysql定时脚本(event),类似oracle的job

    mysql定时脚本(event),类似oracle的job   我有2张表:tb_push_data 和 tb_push_data_log 现在需要每隔一段时间将tb_push_data 符合条件的 ...

  10. MySQL定时备份之使用Linux下的crontab定时备份实例

    这篇文章主要介绍了使用Linux下的crontab进行MySQL定时备份的例子,需要的朋友可以参考下   复制代码代码如下: ##################################### ...

随机推荐

  1. [摘录] WebView2 与 JS 交互

    https://docs.microsoft.com/zh-cn/microsoft-edge/webview2/gettingstarted/win32 步骤 5-脚本 托管应用还可以将 JavaS ...

  2. nestjs 中管道的使用-验证DTO

    1. 安装管道 nest g pi role 意思是安装一个role模块的管道 2. 在controller中使用管道 管道的作用: 1. 数据的转换 2. DTO规则验证 一般使用全局配置管道 区别 ...

  3. yarn serve 不能开启vue项目 the project seem to require yarn but isnot install

    error: answer: 删除 yarn.lock 或者使用 npm run serve 替换 ; ps: yarn.lock 是锁定第三方包版本的文件:

  4. 35. vue响应式的get和set如何触发或者过程

    首先 ,vue 内部使用  Object.defineProperty 给data中的数据添加了 getter 和 setter 函数  : 当我们访问数据的时候,会触发getter 函数 retur ...

  5. npm install报错 Error: EACCES: permission denied

    报错内容 Unable to save binary /root/packageadmin/spring-boot-admin-2.1.6/spring-boot-admin-server-ui/no ...

  6. Kubernetes 升级不弃 Docker:KubeKey 的丝滑之道

    作者:尹珉,KubeSphere Ambaasador&Contributor,KubeSphere 社区用户委员会杭州站站长. 引言 随着 Kubernetes 社区的不断发展,即将迎来 K ...

  7. Machine Learning Week_1 Model and Cost Function 5-8

    目录 2.5 Video: Cost Function Intuition-1 unfamiliar words 2.6 Reading: Cost Function Intuition-1 unfa ...

  8. 洛谷 P1540 [NOIP2010 提高组] 机器翻译

    题目概括 给定 N 个整数,和一个容量为 M 的"字典",从头到尾依次翻译,每次翻译先看自家字典,没有的话再看别人的字典并存到自家字典,如果自家字典满了,当前单词的翻译会代替最早进 ...

  9. 用文字“画出”时序图:用 AI+Mermaid.js 解决交互过程中的问题

    什么是时序图 序列图是一种用于描述对象之间在时间上的交互顺序的图表. 它可以展示对象之间是如何相互作用的,以及这些交互的顺序. 什么是Mermaid Mermaid.js是一个开源项目,它允许你通过简 ...

  10. @Transactional事务,太坑了吧!

    前言 对于从事java开发工作的同学来说,spring的事务肯定再熟悉不过了. 在某些业务场景下,如果一个请求中,需要同时写入多张表的数据.为了保证操作的原子性(要么同时成功,要么同时失败),避免数据 ...