MYSQL 想飞的更高 先要XTRABACKUP 跟上

2023-10-28 13:11

本文主要是介绍MYSQL 想飞的更高 先要XTRABACKUP 跟上,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

世界是变化的,人本身的惰性老是想找一个可靠和稳定的地方,可哪里有,要不就接受,接受要被淘汰的事实,要不就自不量力的和生活的变化来还手。

MYSQL8 版本频繁的更新,实际上牵扯是否能使用MYSQL的一个选择性的问题上,XTRABACKUP 是一个考虑能否正常使用MYSQL 8 新版本的问题。数据库不能没有备份,XTRABACKUP 也往前推进了版本到了8.0,8.0这个版本不会在支持8.0之前的MYSQL,主要是因为REDO ,UNDO 本身在MYSQL 5.7和8.0 之间有了本质的不同和变化。所以备份软件也需要进行相关的改变。

但不大好玩的一件事情是,查询了目前的PERCONA的官网percona xtrabackup notes 其中有这样一句话

percona xtrabackup 8.012 now support backup and restore processing for all version of mysql previous versions of percona xtrabackup will not work with mysql 8.020 and higher. 

所以难道是如果还想MYSQL 能继续在企业中使用,并且是免费的使用,还是要考虑和 PERCONA 合作,否则备份软件没有,难道要企业为了使用更高版本的MYSQL 去购买企业版,估计是想多了。现在可以选择的开源数据库可不光是MYSQL 。

当然还有另外一句话,以后到底你是用官方免费的MYSQL 还是PERCONA的MYSQL ,你是要有选择了。如果你财大气粗,备份MYSQL 我就用企业版,那OK,5000刀每台的备份软件的费用你就要从你的口袋里面付出了。那么这5000美元到底你得到了和XTRABACKUP 什么样不同的服务。

1   incremental backups with redo log only

2   backup progress table

3  offline backups 

4  backup to tape media managers

其实 1 才是问题的所在,所以你真的是有钱,那就花吧,购买ORACLE的企业版的MYSQL 。当然各种壁垒也可能让 MYSQL 成为下一个 ORACLE。

废话太多了,直接需要开始进入到主题了

到目前为止,备份MYSQL的开源版本的重任是能是XTRABACKUP 如果你能找到第二家免费的产品,请快点告诉我。

实际上XTRABACKUP 的原理是要在备份的开始记住lsn,log sequence number ,然后开始拷贝物理物理的数据文件,如果此期间这些数据文件改变了,另外一个线程会对日志文件进行拷贝变化的部分,并且在拷贝完数据文件后,将这些变化进行一个Apply 的过程。

另外一个地方就是flush tables with read lock, 而到了8.0 已经允许了lock instance for backup。

XTRABACKUP 在8.0会尽力不在 flush tables with read lock ,换来的是去读取performance_schema中的 log_status 来获取相关的信息。于此有关的信息可以从

https://dev.mysql.com/doc/ refman/8.0/en/lock-instance-for-backup.html   上获得。

所以在权限方面,MYSQL 8 多添加了 performance_schema中关于 log_status的信息的读取的需求。

mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 'password'; mysql> GRANT BACKUP_ADMIN, PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO ˓'bkpuser'@'localhost'; 

mysql> GRANT SELECT ON performance_schema.log_status TO 'bkpuser'@'localhost'; 

mysql> FLUSH PRIVILEGES;

说了这么多,到底xtrabackup 除了在备份速度和质量以及复杂度上都对MYSQLDUMP 有碾压的效应以外,XTRABACKUP还有什么功能是其他没有的。

 warm up, 一个备份软件在恢复数据库后,一般来说是不会对内存的数据进行备份和预热的。xtrabackup 会对在备份的数据库中的innodb buffer pool 中的数据进行备份

那么这里会提出两个问题

1  如果将INNODB BUFFER 中的数据库都备份出来这一定不是一个小数量级别的数据

2  在恢复中到底多少数据会缓冲进INNODB BUFFER中

先解答第一个问题,实际上在MYSQL 8 中的information_schema库的 INNODB_BUFFER_PAGE_LRU 中包含了这个信息。

直接读取相对应的数据及可以获取到底哪些数据应该被装入到INNODB BUFFER POOL,另外MYSQL 在操作过程中,也会根据 innodb_buffer_pool_dump_pct 设置的比例来将数据恢复到INNODB BUFFER POOL 系统中,其中值是从  1 到 100 默认值25. 

所以上面的回答了两个问题,1 备份的时候不会对所有的INNODB BUFFER POOL 的内存数据进行备份,2 恢复的时候也要看你的设置到底要装入多少的内存数据。

实际上XTRABACKUP 在8.0后需要研究的地方不少,以上仅仅是一个开始。

这篇关于MYSQL 想飞的更高 先要XTRABACKUP 跟上的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/liuhuayang/article/details/112256242
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/293440

相关文章

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

MySQL 衍生表(Derived Tables)的使用

《MySQL衍生表(DerivedTables)的使用》本文主要介绍了MySQL衍生表(DerivedTables)的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学... 目录一、衍生表简介1.1 衍生表基本用法1.2 自定义列名1.3 衍生表的局限在SQL的查询语句select

MySQL 横向衍生表(Lateral Derived Tables)的实现

《MySQL横向衍生表(LateralDerivedTables)的实现》横向衍生表适用于在需要通过子查询获取中间结果集的场景,相对于普通衍生表,横向衍生表可以引用在其之前出现过的表名,本文就来... 目录一、横向衍生表用法示例1.1 用法示例1.2 使用建议前面我们介绍过mysql中的衍生表(From子句

六个案例搞懂mysql间隙锁

《六个案例搞懂mysql间隙锁》MySQL中的间隙是指索引中两个索引键之间的空间,间隙锁用于防止范围查询期间的幻读,本文主要介绍了六个案例搞懂mysql间隙锁,具有一定的参考价值,感兴趣的可以了解一下... 目录概念解释间隙锁详解间隙锁触发条件间隙锁加锁规则案例演示案例一:唯一索引等值锁定存在的数据案例二:

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

MYSQL查询结果实现发送给客户端

《MYSQL查询结果实现发送给客户端》:本文主要介绍MYSQL查询结果实现发送给客户端方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql取数据和发数据的流程(边读边发)Sending to clientSending DataLRU(Least Rec

MySQL分区表的具体使用

《MySQL分区表的具体使用》MySQL分区表通过规则将数据分至不同物理存储,提升管理与查询效率,本文主要介绍了MySQL分区表的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、分区的类型1. Range partition(范围分区)2. List partition(列表分区)3. H