那种投票网站里面怎么做,网站怎么做评估,yandex引擎,wordpress 会被取代吗#x1f4ab;《博主介绍》#xff1a;✨又是一天没白过#xff0c;我是奈斯#xff0c;DBA一名✨ #x1f4ab;《擅长领域》#xff1a;✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux#xff0c;也在扩展大数据方向的知识面✌️… 《博主介绍》✨又是一天没白过我是奈斯DBA一名✨ 《擅长领域》✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux也在扩展大数据方向的知识面✌️ 大佬们都喜欢静静的看文章并且也会默默的点赞收藏加关注 白驹过隙忙忙碌碌之后又是新的一周最近在梳理公司所有环境的备份情况忙的焦头烂额的所以挤出来时间写博客实属不易虽然工作很忙但并不会因此而降低博客的质量目前所有博客的平均质量分为94.1分会认真认真写好每一篇博客的写作不易靓仔叹息希望各位小伙伴点赞收藏加关注 。那么废话不多说一起开始今天的内容——Percona XtraBackup工具备份指南常用备份命令详解与实践。 用一篇文章是不能将Percona XtraBackup工具讲明白的所以我将理论、命令、备份策略、异机恢复、使用场景等分成五篇去介绍即使分为五篇也有部分内容没有涵盖到但是这五篇文章都是精华掌握了之后就可以轻松应对Percona XtraBackup工具的相关日常工作了五篇文章的内容分别如下
第一篇Percona XtraBackup物理备份工具的基础理论概述第二篇Percona XtraBackup工具备份指南常用备份命令详解与实践当前篇第三篇Percona XtraBackup标准化全库完整备份策略第四篇Percona XtraBackup全量mysqlbinlog增量完成异机恢复基于全库恢复 or 基于时间点恢复第五篇物理克隆数据clone插件、逻辑备份工具mysqldump/mysqlpump和物理备份工具Percona XtraBackup这三种的区别和各自的使用场景总汇 目录
安装PXB 8.0版本
1、xtrabackup备份语法
案例1实例完全备份
案例2实例压缩备份恢复时需要借助qpress-11-linux-x64.tar解压缩工具备份时不需要哦
案例3指定数据库备份
案例4指定表备份
方式一备份不同库下的不同表
方式二备份指定文件里面的表批量备份表
2、xtrabackup恢复语法
案例1实例完全恢复
案例2压缩实例完全恢复恢复时需要借助qpress-11-linux-x64.tar解压缩工具备份时不需要哦
案例3指定数据库恢复
案例4指定表恢复 在第一篇文章中我有介绍Percona XtraBackupPXB工具分为多个版本包括了2.4版本、8.0版本、8.1、8.2、8.3版本。每个版本对应支持不同的MySQL版本PXB版本对应具体的MySQL版本如下
percona xtrabackup版本MySQL版本支持2.4支持MySQL5.5、5.6和5.7版本8.0支持MySQL 8.0版本8.1支持MySQL 8.1版本8.2支持MySQL 8.2版本8.3支持MySQL 8.3版本 需要注意PXB版本和MySQL版本有严格的对应关系不同的PXB版本只能备份对应的MySQL版本。比如 在MySQL5.7中只能使用2.4版本不能使用8.0版本备份MySQL5.7使用8.0版本报Please use Percona XtraBackup 2.4 for this database 在MySQL8.0中只能使用8.0版本不能使用2.4版本备份MySQL8.0使用2.4版本报Please use Percona Xtrabackup 8.0.x for backups and restores 在xtrabackup 2.4产品中包括了2个命令innobackupexxtrabackup。xtrabackup命令主要备份innodb和xtraDB两种表。innobackupex命令则封闭了xtrabackup同时可以备份myisam数据表。也就是说xtrabackup命令整合了innobackupex命令全部的功能支持了非innodb表再早期的版本都是使用innobackupex命令备份如果有innodb表它会自动调用xtrabackup脚本来备份innodb表使用xtrabackup也会调用innobackupex备份非innodb表。 2.4版本的innobackupex命令和xtrabackup命令全备时默认备份sys、mysql、performance_schema默认数据库但不备份information_schema数据库提供了访问数据库元数据的方式。如数据库名或表名列的数据类型或访问权限等。全备恢复时不影响information_schema的恢复虽然系统目录下没有information_schema目录但show databases可以看到这个数据库。如下是2.4版本中的命令 从2.4版本之后innobackupex功能全部集成到xtrabackup命令里面innobackupex作为xtrabackup的一个软链接不是linux层面的软连接哦并且MySQL对内容进行了处理敲2个命令会出现不同的参数。在8.0之后命令innobackupex取消所有功能整合到xtrabackup命令中。如下8.0版本中的命令 上述有陈述在PXB的2.4版本中虽然备份可以通过innobackupex、xtrabackup两个命令但是xtrabackup命令整合了innobackupex命令全部的功能并且在PXB 2.4版本之后命令innobackupex取消所有功能整合到xtrabackup命令中了所以 这篇还是讲解一下xtrabackup命令的备份与恢复就不再讲解innobackupex命令啦因为在2.4版本使用innobackupex和xtrabackup命令实现的功能都是一样的 。 安装PXB 8.0版本 第一步通过链接可以一键下载不同的PXB版本省时又省力下载超链接Software Downloads - Percona 选择linux generic通用二进制作压缩的xtrabackup工具因为我的MySQL版本是8.0.25所以在选择PXB的时候小版本尽量也和MySQL的一致平台选择linux generic因为这里都是linux二进制压缩版本其他的linux都是rpm包 第二步解压并移动到MySQL数据库的执行路径下 [rootmgr1 software]# tar -zxvf percona-xtrabackup-8.0.25-17-Linux-x86_64.glibc2.17.tar.gz
[rootmgr1 software]# mv percona-xtrabackup-8.0.25-17-Linux-x86_64.glibc2.17 /mysql/app/mysql/bin
[rootmgr1 software]# cd /mysql/app/mysql/bin
[rootmgr1 bin]# mv percona-xtrabackup-8.0.25-17-Linux-x86_64.glibc2.17 xtrabackup
[rootmgr1 bin]# chown -R mysql:mysql xtrabackup/[rootmgr1 ~]# vi ~/.bash_profile
export PATH/mysql/app/mysql/bin/xtrabackup/bin:$PATH[rootmgr1 xtrabackup]# source ~/.bash_profile
[rootmgr1 xtrabackup]# which xtrabackup1、xtrabackup备份语法
xtrabackup --help选项
参数选项描述 --defaults-file# 指定数据库的参数文件 -S, --socketname 指定用于连接的套接字文件的名称 -u, --username 指定MySQL数据库的用户名 -p, --password[name] 指定MySQL用户名的密码 --throttle 限制IO的读写速度单位M/s。如--throttle10就是表示限制在10M/s之内 --databases 备份指定数据库。所有库都需要在双引内每个之间用空格分开 --tables-file 将需要备份的表整理到外部的txt文档中工具调用然后进行备份。文件的最后不能多行不能空格否则全备 --compress 使用指定压缩单个备份文件压缩算法。支持的算法是“quicklz”以及“lz4”。默认算法为“quicklz” --compress-threads 使用几个线程进行压缩备份 --decompress 解压使用compress选项备份的文件所有扩展名为.qp的文件 --backup 备份到目标目录并备份到参数--target-dir文件中配合使用 --target-dir 指定备份文件生成的路径 --parallel# 用于并行数据文件传输的线程数默认值为1 --slave-info和--safe-slave-backup 用于记录备库的GTID和binlog changer信息到xtrabackup_slave_info --streamname 该选项表示流式备份的格式backup完成之后以指定格式到STDOUT目前只支持tar和xbstream。 --no-lock 该选项表示关闭FTWRL的表锁只有在所有表都是Innodb表并且不关心backup的binlog pos点如果有任何DDL语句正在执行或者非InnoDB正在更新时包括mysql库下的表都不应该使用这个选项后果是导致备份数据不一致如果考虑备份因为获得锁失败可以考虑--safe-slave-backup立刻停止复制线程官方解释。 备份时不对 non-InnoDB表进行锁表备份。正常备份时innodb表支持在线热备不影响正在执行的事务而非non-InnoDB表需要加锁亲测自己理解同innobackupex命令一样。 210913 16:09:24 Executing FLUSH TABLES WITH READ LOCK... 210913 16:09:24 Starting to backup non-InnoDB tables and files .......... 210913 16:09:25 Executing UNLOCK TABLES 210913 16:09:25 All tables unlocked 加上--no-lock都将取消 案例1实例完全备份
[rootmgr1 ~]# xtrabackup --defaults-filemy.cnf --socketmysql.sock --userroot --password123456 --no-lock --backup --target-dir/mysql/app/xtrabackup_full_3306 --parallel2 2 xtrabackup_full_3306_err.log
###和innobackupex命令一样生成相关xtrabackup文件但xtrabackup命令不支持自动日期文件夹需要指定生成到那个文件夹 案例2实例压缩备份恢复时需要借助qpress-11-linux-x64.tar解压缩工具备份时不需要哦 [rootmgr1 ~]# xtrabackup --defaults-filemy.cnf --socketmysql.sock --userroot --password123456 --no-lock --backup --compress --compress-threads2 --target-dir/mysql/app/xtrabackup_full_3306 --parallel2 2 xtrabackup_full_3306_err.log
###全备数据库压缩所有文件以qp结尾。压缩测试直接全备7.0G压缩全备2.9G能节省接近2.5倍 案例3实例打包、流备份 1打包 [rootmgr1 ~]# xtrabackup --defaults-filemy.cnf --socketmysql.sock --userroot --password123456 --no-lock --backup --target-dir/mysql/app/ --parallel2 --streamtar 1 /mysql/app/xtrabackup_full_3306.tar 2 xtrabackup_full_3306_err.log
###将数据备份到/mysql/app/目录下零散的文件然后通过标准输出1将零散的文件数据打包为xtrabackup_full_3306.tar 2--streamxbstream流备份不推荐使用需要借助xbstream命令解压 [rootmgr1 ~]# xtrabackup --defaults-filemy.cnf --socketmysql.sock --userroot --password123456 --no-lock --backup --target-dir/mysql/app/ --parallel2 --streamxbstream 1 /mysql/app/xtrabackup_full_3306.tar 2 xtrabackup_full_3306_err.log
###将数据备份到/mysql/app/目录下零散的文件然后通过标准输出1将零散的文件数据打包为xtrabackup_full_3306.tar 案例3指定数据库备份
[rootmgr1 ~]# xtrabackup --defaults-filemy.cnf --socketmysql.sock --userroot --no-lock --password123456 --backup --target-dir/mysql/app/xtrabackup_full_3306 --databasesdb1 db2 --parallel2 2 xtrabackup_full_3306_err.log
###备份了指定的数据库也备份ibdata、ib_buffer_pool、undo、logfile文件 案例4指定表备份 方式一备份不同库下的不同表 [rootmgr1 ~]# xtrabackup --defaults-filemy.cnf --socketmysql.sock --userroot --password123456 --no-lock --backup --target-dir/mysql/app/xtrabackup_full_3306 --databasesdb1.tb1 db2.tb2 --parallel2 2 xtrabackup_full_3306_err.log
###1、--databases参数备份表内容要用双引引起每个表之间用空格分隔开不然不备份
###2、备份了指定的表也备份了ibdata、ib_buffer_pool、undo、logfile文件。备份ded和itpuxdb库下的部分表备份内容如下 方式二备份指定文件里面的表批量备份表 [rootmgr1 ~]# vi tbname.txt
db1.table1
db1.table2
db2.table_name1
db2.table_name2 #文件的最后不能多行不能空格否则就会触发全备[rootmgr1 ~]# xtrabackup --defaults-filemy.cnf --socketmysql.sock --userroot --password123456 --no-lock --backup --target-dir/mysql/app/xtrabackup_full_3306 --tables-filetbname.txt --parallel2 2 xtrabackup_full_3306_err.log
###备份了指定的表也备份了ibdata、ib_buffer_pool、undo、logfile文件 2、xtrabackup恢复语法
xtrabackup --help选项
参数选项描述--defaults-file#指定数据库的参数文件。通过参数文件的datadir参数将数据文件拷贝到对应的数据目录下。不然就是按照备份时生成的backup-my.cnf进行数据目录恢复 -S, --socketname 指定用于连接的套接字文件的名称 --prepare 准备prepare一个完全备份使数据文件处理一致状态然后再进行恢复 --use-memory 恢复时使用的内存。默认使用innodb_buffer_pool_size的大小。建议不要全部占用用于恢复 --copy-back 拷贝恢复所有的文件 案例1实例完全恢复 恢复完全备份需要分成两步 第一步先recover恢复到达数据一致性 [rootmgr1 ~]# xtrabackup --defaults-filemy.cnf --socketmysql.sock --prepare --use-memory1G --parallel2 --target-dir/mysql/app/xtrabackup_full_3306
###只是将数据达到一致性不进行物理拷贝 第二步restore还原将文件copy [rootmgr1 ~]# xtrabackup --defaults-filemy.cnf --socketmysql.sock --copy-back --use-memory1G --parallel2 --target-dir/mysql/app/xtrabackup_full_3306
###通过参数文件的datadir参数将数据文件拷贝到对应的数据目录下。不然就是按照备份时生成的backup-my.cnf进行数据目录恢复 案例2压缩实例完全恢复恢复时需要借助qpress-11-linux-x64.tar解压缩工具备份时不需要哦 恢复压缩完全备份需要分成三步 第一步安装qpress-11-linux-x64.tar解压缩工具并解压备份。 关于qpress-11-linux-x64.tar的安装包自己在csdn尝试上传过但是提示该资源已经在csdn存在了所以不能进行上传了所以需要的小伙伴在csdn上寻找吧 [rootmysql1 software]# tar -xvf qpress-11-linux-x64.tar
[rootmysql1 software]# cp qpress /usr/bin/
[rootmysql1 software]# qpress ---帮助[rootmysql1 software]# xtrabackup --defaults-filemy.cnf --socketmysql.sock --decompress --use-memory1G --parallel2 --target-dir/mysql/app/xtrabackup_full_3306
###1、--decompress解压使用compress选项备份的文件所有扩展名为.qp的文件
###2、解压的备份还在同一个目录下但原有的.qp文件不删除。在restore阶段只copy解压后的解压前的.qp文件忽略copy时不影响 第二步先recover恢复到达数据一致性 [rootmgr1 ~]# xtrabackup --defaults-filemy.cnf --socketmysql.sock --prepare --use-memory1G --parallel2 --target-dir/mysql/app/xtrabackup_full_3306
###只是将数据达到一致性不进行物理拷贝 第三步restore还原将文件copy [rootmgr1 ~]# xtrabackup --defaults-filemy.cnf --socketmysql.sock --copy-back --use-memory1G --parallel2 --target-dir/mysql/app/xtrabackup_full_3306
###通过参数文件的datadir参数将数据文件拷贝到对应的数据目录下。不然就是按照备份时生成的backup-my.cnf进行数据目录恢复 案例3指定数据库恢复 恢复指定数据库需要分成两步 第一步先recover恢复到达数据一致性 [rootmgr1 ~]# xtrabackup --defaults-filemy.cnf --socketmysql.sock --prepare --use-memory1G --parallel2 --target-dir/mysql/app/xtrabackup_full_3306 第二步restore还原将文件copy部分数据库的恢复不能直接用--copy-back只能手工复制相应数据库 备份数据库目录还原 [rootmysql1 data]# cp -r /mysql/app/xtrabackup_full_3306/db1 ${datadir} ###datadir为数据文件路径
[rootmysql1 data]# cp -r /mysql/app/xtrabackup_full_3306/db2 ${datadir} ###datadir为数据文件路径 备份共享表空间还原ibdata为存放数据字典的共享表空间而数据字典记录了表的信息上面恢复出的数据库可能存在表不能查询的情况那么就是数据字典没有记录表的问题。不建议马上对共享表空间进行替换等查询不出问题后替换保险些 [rootmysql1 data]# cp -r /mysql/app/xtrabackup_full_3306/ibdata* ${datadir} 赋予数据文件权限 [rootmgr1 ~]# chown -R mysql:mysql ${datadir}/db1
[rootmgr1 ~]# chown -R mysql:mysql ${datadir}/db2
[rootmgr1 ~]# chown -R mysql:mysql ${datadir}/ibdata* ###需要重新赋予数据目录下所有数据文件的属性不然开机报[ERROR] InnoDB: The innodb_system data file ibdata1 must be writable 案例4指定表恢复 恢复指定表需要分成两步 第一步先recover恢复到达数据一致性 [rootmgr1 ~]# xtrabackup --defaults-filemy.cnf --socketmysql.sock --prepare --use-memory1G --parallel2 --target-dir/mysql/app/xtrabackup_full_3306 第二步restore还原将文件copy部分表的恢复不能直接用--copy-back只能手工复制相应表 teset数据库表还原 [rootmysql1 data]# cp -r /mysql/app/xtrabackup_full_3306/test/tb1* ${datadir}/test/ ###datadir为数据文件路径备份共享表空间还原ibdata为存放数据字典的共享表空间而数据字典记录了表的信息上面恢复出的数据库可能存在表不能查询的情况那么就是数据字典没有记录表的问题。不建议马上对共享表空间进行替换等查询不出问题后替换保险些 [rootmysql1 data]# cp -r /mysql/app/xtrabackup_full_3306/ibdata* ${datadir} 赋予数据文件权限 [rootmgr1 ~]# chown -R mysql:mysql ${datadir}/test/tb1*
[rootmgr1 ~]# chown -R mysql:mysql ${datadir}/ibdata* ###需要重新赋予数据目录下所有数据文件的属性不然开机报[ERROR] InnoDB: The innodb_system data file ibdata1 must be writable 关于PXB第二篇《常用备份命令详解与实践》这篇文章到这里算是圆满结束了通过详细的步骤让各位能够亲手实践并掌握这些关键命令。到目前已经是9千字了累屁了对于撰写每一篇博客我都秉持着如同撰写论文般的严谨态度。从资料收集、整理思路、撰写初稿到反复修订每一步都凝聚着对知识的尊重并且力求在减少错别字、提升文章可读性的同时更加注重图文并茂的呈现方式让复杂的技术知识变得易于理解那么我们下篇见