沈阳企业网站建设,网站建设情况调查表,网站排名掉了,玉环市建设规划局网站文章目录 1.XtraBackup备份工具的简介2.XBK备份工具的安装3.XBK备份工具的使用语法4.XBK备份前的准备5.使用XBK对全库进行备份5.1.XBK备份全库数据的语法格式5.2.使用XBK进行全库备份5.3.查看XBK备份的数据文件5.4.备份过程中生产的XBK文件 6.模拟故障案例并使用XBK恢复备份的数… 文章目录 1.XtraBackup备份工具的简介2.XBK备份工具的安装3.XBK备份工具的使用语法4.XBK备份前的准备5.使用XBK对全库进行备份5.1.XBK备份全库数据的语法格式5.2.使用XBK进行全库备份5.3.查看XBK备份的数据文件5.4.备份过程中生产的XBK文件 6.模拟故障案例并使用XBK恢复备份的数据6.1.模拟故障导致数据库损坏6.2.从XBK备份中恢复数据 7.自主定义XBK备份文件的名称 1.XtraBackup备份工具的简介
XtraBackup是Percona公司开源的一款MySQL InnoDB包括XtraDBMyISAM数据库备份工具基于InnoDB的崩溃恢复功能由于支持不锁表的在线物理热备而被广泛应用于生产环境。
XBK备份恢复原理 XtraBackup备份执行的瞬间会立即触发checkpoint机制将已提交事务的脏页数据从内存刷新到磁盘中并记录此时日志序列号LSN号此时触发备份然后复制磁盘中的数据页以及数据文件到备份路径在备份过程中可能会有新的数据变化、新的事物提交XBK还会将备份过程中产生的Redo log和Undo log一并备份并且提取Redo Log中最后的LSN号也就是checkpoint机制刷新到磁盘时记录的LSN之后产生的Redo log和Undo log。 XtraBackup备份时会对非InnoDB引擎的表进行锁表实现温备对InnoDB引擎的表不进行锁表直接复制InnoDB数据页及数据文件到备份路径中。 XBK的恢复过程就是模拟InnoDB的自动故障恢复CSR的过程将Redo Log与Undo log进行应用对比Redo log中最后的LSN号和备份前记录时的LSN号既要保证备份数据的恢复又要保证备份时产生的新数据的恢复备份时产生的新数据就是从备份时的LSN号到Redo中的LSN之间的数据这些数据如果是提交的那么就用备份的Redo文件恢复如果是未提交的数据则使用备份的Undo文件进行恢复恢复就是将备份的数据文件cp还原到原数据目录下。 XBK热备理念就是将备份触发之前的数据都备份对于备份过程中的新数据也会备份下来备份过程中的新数据就是Redo Log和Undo Log了XBK在备份触发的时候会通过CKPT机制刷新脏页数据到磁盘此时会记录LSN号而Redo Log中也有对应的LSN号当我们要恢复数据时假如说备份时的LSN号是101备份完后Redo Log中的LSN号是110那么102-110之间的LSN号对应的事务就是备份过程中产生的新数据对于新数据已经提交的数据用备份的Redo文件恢复未提交的数据用Undo文件进行回滚恢复保证数据的一致性。
XBK备份需要依赖MySQL的主配置文件/etc/my.cnf如果配置文件不在这个路径需要单独指定。
2.XBK备份工具的安装
1.安装依赖的软件
[rootmysql ~]# yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL2.安装xbk
[rootmysql ~]# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.12/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.12-1.el7.x86_64.rpm
[rootmysql ~]# yum -y install percona-xtrabackup-24-2.4.12-1.el7.x86_64.rpm 3.XBK备份工具的使用语法
XBK备份语法格式innobackupex [--defaults-file#] [OPTIONS] 备份路径
参数
--defaults-file指定MySQL配置文件的路径。--apply-log整理备份将redo log进行重做将已提交的事务写到备份的数据文件对未提交的事务使用undo回滚掉模拟了CSR的过程这个参数就是将备份过程中产生的新数据一并写入到备份文件中保证数据的一致性。--redo-only这个参数需要配合--apply-log这个参数一起使用表示在整理备份数据时只执行redo前滚操作不执行undo回滚操作。--copy-back恢复数据。-S指定MySQL socket文件。--streamtar开启流备份备份成tar包。--user-memory256M为xbk分配256M的内存进行备份。--parallel8并发处理数一般都是CPU核数的一半。
4.XBK备份前的准备
XBK备份前我们需要进行一些配置否则备份会失败。
首先要确保MySQL主配置文件在/etc/my.cnf里如果不在这个路径备份时需要指定配置文件的路径如以下所示通过--defaults-file参数指定配置文件的路径。
[rootmysql ~]# innobackupex --defaults-file/etc/my.cnf --userroot --password123456 /data/dbbackup/另外还需要在MySQL的主配置文件中指定客户端使用的MySQL socket文件否则XBK备份时会报错提示找不到socket文件。
[rootmysql ~]# vim /etc/my.cnf
[client]
socket/tmp/mysql.sock如果不想在主配置文件中指定client的socket文件那么可以在备份命令中通过-S参数指定socket文件的路径。
[rootmysql ~]# innobackupex --userroot --password123456 -S /tmp/mysql.sock /data/dbbackup/5.使用XBK对全库进行备份
5.1.XBK备份全库数据的语法格式
innobackupex --user数据库账号 --password数据库密码 --defaults-file配置文件路径 -S socket文件路径 备份路径5.2.使用XBK进行全库备份
[rootmysql ~]# innobackupex --userroot --password123456 /data/dbbackup/当看到 completed OK! 一行就表示备份成功了。 5.3.查看XBK备份的数据文件
XBK备份结束后会在指定的备份路径生成一个当前时间命名的目录在这个目录中存放了备份数据库的数据文件。 XBK备份出来的就是数据库的数据文件可以和数据库数据路径的文件进行对比几乎就是完完全全的cp过来的除了数据库的备份外还产生了四个XBK生成的文件。 5.4.备份过程中生产的XBK文件
使用XBK备份完成后会生产四个关于XBK的文件用于记录一些配置信息。
-rw-r----- 1 root root 63 7月 3 10:58 xtrabackup_binlog_info
-rw-r----- 1 root root 113 7月 3 10:58 xtrabackup_checkpoints
-rw-r----- 1 root root 542 7月 3 10:58 xtrabackup_info
-rw-r----- 1 root root 2560 7月 3 10:58 xtrabackup_logfile
1xtrabackup_binlog_info
该文件会记录备份时刻Binlog的状态信息包括备份时最近的GTID号以及事件的Position标识位号可以用来截取Binlog日志。
[rootmysql 2022-07-03_10-58-17]# cat xtrabackup_binlog_info
mysql-bin.000013 344 e0a2c0cc-f835-11ec-8a3c-005056b791aa:1-79334就是事件的Position号。
2xtrabackup_checkpoints
记录XBK备份触发时的checkpoints机制信息。
[rootmysql 2022-07-03_10-58-17]# cat xtrabackup_checkpoints
backup_type full-backuped
from_lsn 0 #上次所到达的LSN号(对于全备就是从0开始,对于增量有别的显示方法)
to_lsn 6136767 #备份开始时间(ckpt)点数据页的LSN号
last_lsn 6136776 #备份结束后redo日志最终的LSN
compact 0
recover_binlog_info 0这个文件非常重要。 1备份时刻立即将已经commit过的内存中的数据页刷新到磁盘(CKPT).开始备份数据数据文件的LSN会停留在to_lsn位置。 2备份时刻有可能会有其他的数据写入已备走的数据文件就不会再发生变化了。 3在备份过程中备份软件会一直监控着redo的undo如果一旦有变化会将日志也一并备走并记录LSN到last_lsn。 从to_lsn ---- last_lsn 就是备份过程中产生的数据变化. 3xtrabackup_info
XBK备份时的一些参数信息。 4xtrabackup_logfile
日志文件。
6.模拟故障案例并使用XBK恢复备份的数据
6.1.模拟故障导致数据库损坏
将db_1、db_2、db_3的数据文件删除然后从XBK备份中恢复数据。
[rootmysql ~]# rm -rf /data/mysql/db_1/
[rootmysql ~]# rm -rf /data/mysql/db_2/
[rootmysql ~]# rm -rf /data/mysql/db_3/6.2.从XBK备份中恢复数据
1对redo log进行重做
将redo log进行重做将已提交的事务写到备份的数据文件对未提交的事务使用undo回滚掉模拟了CSR的过程这一步就是将备份过程中产生的新数据一并写入到备份文件中保证数据的一致性。
[rootmysql ~]# innobackupex --apply-log /data/dbbackup/2022-07-03_10-58-17/2恢复数据
恢复数据非常简单只需要通过cp命令将数据文件拷贝到数据库目录即可。
[rootmysql ~]# \cp -ra /data/dbbackup/2022-07-03_10-58-17/* /data/mysql/
[rootmysql ~]# chown -R mysql. /data/mysql/
[rootmysql ~]# systemctl restart mysqld7.自主定义XBK备份文件的名称
在前面看到XBK备份出来的目录是以时间戳定义的精确到了时分秒其实也不太友好。
我们可以通过--no-timestamp参数跳过XBK默认的备份文件名我们自定义XBK的备份文件名称。
[rootmysql ~]# innobackupex --userroot --password123456 --no-timestamp /data/dbbackup/all_bak_date %F