惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - lodestar

一张图掌握数据存储 开发篇1:使用原生api和Langchain调用大模型 预热篇2:从RNN到Transformmer 预热篇1:大模型训练显卡选型 macbook安装scala、hadoop、saprk环境 centos6.5 squid安装 - lodestar 一次linux服务器黑客入侵后处理 - lodestar linux上搭建svn服务器 - lodestar Windows系统下Oracle每天自动备份 - lodestar android中listView的几点总结 - lodestar 使用template method模式简化android列表页面 - lodestar andorid进度条使用 - lodestar andorid定时器应用 - lodestar Android网络应用(第一部分) - lodestar 错误数据导致java.lang.IllegalArgumentException:Unsupported configuration attributes 使用ACEGI搭建权限系统:第三部分 acegi安全框架使用:第二部分 使用ACEGI实现权限控制,第一部分 ajax实现用户名存在校验
使用xtrabackup实现mysql定时热备份
lodestar · 2024-12-13 · via 博客园 - lodestar

1、原理:方案选型

mysqldump是逻辑备份解决方案,备份恢复速度慢,工具获取方便,数据量少推荐

主要用途是导出数据

xtrababckup是物理热备份,速度快,适合大数据量

xtrababckup支持innodb和MyISAM存储引擎,支持集成shell脚本,支持管道传输

InnoDB支持完整和增量备份,不上只读锁

MyISAM只有全量备份,会上只读锁,备份期间不可写

xtrababckup版本号:percona-xtrabackup-24对应5.*版本;percona-xtrabackup-80对应8.*版本

增量备份原理:使用page的lsn号,如图7,8是lsn变化的page

0

0

xtrabackup备份原理-时序图表示

结论:高效热备份使用xtrabackup

2、安装xtrabackup

方式一:在线安装

安装包管理器

yum install percona-xtrabackup-24

yum install -y percona-xtrabackup-24.x86_64

方式二:编译安装

创建目录 /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命令说明

0

备份命令:

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'