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

推荐订阅源

P
Privacy International News Feed
I
Intezer
T
Tenable Blog
S
Schneier on Security
Project Zero
Project Zero
G
GRAHAM CLULEY
酷 壳 – CoolShell
酷 壳 – CoolShell
小众软件
小众软件
Know Your Adversary
Know Your Adversary
博客园 - 司徒正美
The Cloudflare Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
N
News and Events Feed by Topic
博客园 - 叶小钗
宝玉的分享
宝玉的分享
L
LINUX DO - 热门话题
aimingoo的专栏
aimingoo的专栏
S
Secure Thoughts
Forbes - Security
Forbes - Security
T
The Exploit Database - CXSecurity.com
D
Darknet – Hacking Tools, Hacker News & Cyber Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 【当耐特】
罗磊的独立博客
IT之家
IT之家
H
Hacker News: Front Page
I
InfoQ
云风的 BLOG
云风的 BLOG
S
Security Affairs
M
MIT News - Artificial intelligence
GbyAI
GbyAI
Jina AI
Jina AI
Help Net Security
Help Net Security
Engineering at Meta
Engineering at Meta
大猫的无限游戏
大猫的无限游戏
Webroot Blog
Webroot Blog
L
Lohrmann on Cybersecurity
A
About on SuperTechFans
Attack and Defense Labs
Attack and Defense Labs
The Register - Security
The Register - Security
V
V2EX
G
Google Developers Blog
D
DataBreaches.Net
Apple Machine Learning Research
Apple Machine Learning Research
C
Cybersecurity and Infrastructure Security Agency CISA
J
Java Code Geeks
W
WeLiveSecurity
Cloudbric
Cloudbric
T
Tor Project blog

博客园 - lodestar

一张图掌握数据存储 开发篇1:使用原生api和Langchain调用大模型 预热篇2:从RNN到Transformmer 预热篇1:大模型训练显卡选型 macbook安装scala、hadoop、saprk环境 centos6.5 squid安装 一次linux服务器黑客入侵后处理 linux上搭建svn服务器 Windows系统下Oracle每天自动备份 android中listView的几点总结 使用template method模式简化android列表页面 andorid进度条使用 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'