Lin Hong's TECH Blog! 刀不磨要生锈,人不学习要落后 - Thinking ahead

MySQL 8.0 Study 015 Tips

2023-03-16

MySQL 8.0 Study 015 Tips

学习系列

  • MySQL xtrabackup 测试

MySQL xtrabackup 测试

xtrabackup 工具介绍

mysqpdump做不到增量备份、差异备份 / xtrabackup都能做,功能强大 percona提供的mysql数据库备份工具,惟一开源的能够对innodb和xtradb数据库进行热备的工具

xtrabackup 特点:

备份还原过程快速、可靠
备份过程不会打断正在执行的事务
能够基于压缩等功能节约磁盘空间和流量
自动实现备份检验
开源,免费
之前版本 Xtrabackup 安装完成后有4个可执行文件,其中2个比较重要的备份工具是innobackupex、xtrabackup
- 1)xtrabackup 是专门用来备份InnoDB表的,和mysql server没有交互;
- 2)innobackupex 是一个封装xtrabackup的Perl脚本,支持同时备份innodb和myisam,但在对myisam备份时需要加一个全局的读锁。
- 3)xbcrypt 加密解密备份工具
- 4)xbstream 流传打包传输工具,类似tar

xtrabackup8.0 新特性
xtrabackup版本升级到2.4后,相比之前的2.1有了比较大的变化:
innobackupex 功能全部集成到xtrabackup 里面,只有一个 binary程序,
为了兼容考虑,innobackupex作为 xtrabackup 的软链接,
xtrabackup现在支持非Innodb表备份,并且 Innobackupex 在下一版本中移除,
建议通过xtrabackup替换innobackupex
xtrabackup8.0 用xtrabackup全搞定了

Xtrabackup备份原理

备份开始时首先会开启一个后台检测进程,实时检测mysql redo的变化,一旦发现有新的日志写入,立刻将日志记入后台日志文件xtrabackup_log中,之后复制innodb的数据文件一系统表空间文件ibdatax,复制结束后,将执行flush tables with readlock,然后复制.frm MYI MYD等文件,最后执行unlock tables,最终停止xtrabackup_log

安装

lbzip2 安装

dnf install -y lbzip2
or
rpm -ivh https://download-ib01.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/l/lbzip2-2.5-15.20171011gitb6dc48a.el8.x86_64.rpm

xtrabackup 下载安装

$ wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.32-25/binary/tarball/percona-xtrabackup-8.0.32-25-Linux-x86_64.glibc2.17.tar.gz
$ tar -zxvf percona-xtrabackup-8.0.32-25-Linux-x86_64.glibc2.17.tar.gz

yum list | grep percona-xtrabackup
yum info percona-xtrabackup.x86_64
dnf install percona-xtrabackup.x86_64 -y
xtrabackup -v

卸载
dnf remove percona-xtrabackup

[root@ol8mysql01 ~]# xtrabackup -v
xtrabackup version 2.3.6 based on MySQL server 5.6.24 Linux (x86_64) (revision id: )
[root@ol8mysql01 ~]# 

测试使用

innobackupex:是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力。
–user= #指定数据库备份用户
–password= #指定数据库备份用户密码
–port= #指定数据库端口
–host= #指定备份主机
–socket= #指定socket文件路径
–databases= #备份指定数据库,多个空格隔开,如–databases=”dbname1 dbname2″,不加备份所有库
–defaults-file= #指定my.cnf配置文件
–apply-log #日志回滚
–incremental= #增量备份,后跟增量备份路径
–incremental-basedir= #增量备份,指上次增量备份路径
–redo-only #合并全备和增量备份数据文件
–copy-back #将备份数据复制到数据库,数据库目录要为空
–no-timestamp #生成备份文件不以时间戳为目录名
–stream= #指定流的格式做备份,–stream=tar,将备份文件归档
–remote-host=user@ip DST_DIR #备份到远程主机

备份用户创建

mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY '123456';  
#创建用户
mysql> REVOKE ALL PRIVILEGES,GRANT OPTION FROM 'bkpuser';  
#回收此用户所有权限
mysql> GRANT RELOAD,LOCK TABLES,RELICATION CLIENT ON *.* TO 'bkpuser'@'localhost';  
#授权刷新、锁定表、用户查看服务器状态
mysql> FLUSH PRIVILEGES;  
#刷新授权表

Referece

参考:

percona downloads

Have a good work&life! 2023/03 via LinHong


Similar Posts

Comments