问题定位 | Peronca Xtrabackup 8.0近日踩坑总结 - xtrabackup 2.4和8.0区别

从UC3842的FB脚到COMP脚:一次讲透反激电源两种光耦反馈接法的选择与实战 本文深入探讨了UC3842 PWM控制器在反激式开关电源设计中的两种光耦反馈接法:FB脚与COMP脚方案。通过分析信号极性差异、稳定性特点及动态响应性能,提供场景化选型指南和可靠性设计要点,帮助工程师优化反馈环路设计,提升系统稳定性与效率。特别针对TL431和PC817等关键元件在温度漂移、老化衰减等实际问题给出解决方案。 阅读详情

作者:卢文双 资深数据库内核研发

本文首发于 2020-08-27 13:46:15

前言

近期在给 radondb/xenon 适配 percona xtrabackup 8.0时,遇到了一些问题,经过多日调研、尝试终于解决,特此分享。

版本信息:

Percona-Server 8.0.19-10
Percona-Xtrabackup 8.0.13

版本各字段含义参考 https://www.percona.com/blog/2020/08/18/aligning-percona-xtrabackup-versions-with-percona-server-for-mysql/

适配过程中遇到的坑

一、MySQL 8.0 + Semi-Sync + 持续写入数据期间执行重建后,change master to && start slave 报错:

Last_Error: Could not execute Write_rows event on table db1.t1; Duplicate entry '28646' for key 't1.PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.000052, end_log_pos 437

二、MySQL 8.0 + Group Replication + 持续写入数据期间执行重建后,change master to && start group_replication 报错:

2020-08-21T14:51:09.977606+08:00 61 [System] [MY-010597] [Repl] 'CHANGE MASTER TO FOR CHANNEL 'group_replication_applier' executed'. Previous state master_host='<NULL>', master_port= 0, master_log_file='', master_log_pos= 4, master_bind=''. New state master_host='<NULL>', master_port= 0, master_log_file='', master_log_pos= 4, master_bind=''.
2020-08-21T14:51:09.987494+08:00 61 [ERROR] [MY-013124] [Repl] Slave SQL for channel 'group_replication_applier': Slave failed to initialize relay log info structure from the repository, Error_code: MY-013124
2020-08-21T14:51:09.987542+08:00 61 [ERROR] [MY-011534] [Repl] Plugin group_replication reported: 'Error while starting the group replication applier thread'
2020-08-21T14:51:09.987651+08:00 7 [ERROR] [MY-011669] [Repl] Plugin group_replication reported: 'Unable to initialize the Group Replication applier module.'
2020-08-21T14:51:09.987831+08:00 7 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] The member is leaving a group without being on one.'

要解释这个问题,首先要弄清楚xtrabackup 2.4和8.0的区别。

xtrabackup 2.4和8.0区别

google查到xtrabackup 8.0与2.4版本行为有所不同:

  1. Xtrabackup 2.4 备份后生成的 xtrabackup_binlog_info 文件记录的 GTID 信息是准确的,但是备份恢复后 show master status 显示的 GTID 是不准确的。
  2. Xtrabackup 8.0 在备份只有 InnoDB 表的实例时,xtrabackup_binlog_info 文件记录的 GTID 信息不一定是准确的,但是备份恢复后 show master status 显示的 GTID 是准确的。
  3. Xtrabackup 8.0 在备份有非 InnoDB 表格的实例时,xtrabackup_binlog_info 文件记录的 GTID 信息是准确的,备份恢复后 show master status 显示的 GTID 也是准确的。

之前研究过 xtrabackup 2.4 ,其过程大致如下:

  1. start backup
  2. copy ibdata1 / copy .ibd file
  3. excuted FTWRL
  4. backup non-InnoDB tables and files
  5. writing xtrabackup_binlog_info
  6. executed FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS
  7. executed UNLOCK TABLES
  8. copying ib_buffer_pool
  9. completed OK!

问题1:xtrabackup 8.0 的执行过程是什么样?

首先,查看重建期间的general log:

2020-08-26T16:20:18.136376+08:00	  170 Query	SET SESSION wait_timeout=2147483
2020-08-26T16:20:18.136439+08:00	  170 Query	SET SESSION autocommit=1
2020-08-26T16:20:18.136523+08:00	  170 Query	SET NAMES utf8
2020-08-26T16:20:18.136595+08:00	  170 Query	SHOW VARIABLES
2020-08-26T16:20:18.138840+08:00	  170 Query	SELECT COUNT(*) FROM information_schema.tables WHERE engine = 'MyISAM' OR engine = 'RocksDB'
2020-08-26T16:20:18.140203+08:00	  170 Query	SHOW ENGINES
2020-08-26T16:20:18.140407+08:00	  170 Query	SHOW ENGINE INNODB STATUS
2020-08-26T16:20:18.141570+08:00	  170 Query	SELECT PLUGIN_NAME, PLUGIN_LIBRARY FROM information_schema.plugins WHERE PLUGIN_STATUS = 'ACTIVE' AND PLUGIN_TYPE = 'KEYRING'
2020-08-26T16:20:18.142140+08:00	  170 Query	SELECT  CONCAT(table_schema, '/', table_name), engine FROM information_schema.tables WHERE engine NOT IN ('MyISAM', 'InnoDB', 'CSV', 'MRG_MYISAM', 'ROCKSDB') AND table_schema NOT IN (  'performance_schema', 'information_schema',   'mysql')
2020-08-26T16:20:18.209819+08:00	  171 Query	SET SESSION wait_timeout=2147483
2020-08-26T16:20:18.209879+08:00	  171 Query	SET SESSION autocommit=1
2020-08-26T16:20:18.209950+08:00	  171 Query	SET NAMES utf8
2020-08-26T16:20:18.210015+08:00	  171 Query	SHOW VARIABLES
2020-08-26T16:20:18.214030+08:00	  170 Query	SELECT T2.PATH,        T2.NAME,        T1.SPACE_TYPE FROM   INFORMATION_SCHEMA.INNODB_TABLESPACES T1        JOIN INFORMATION_SCHEMA.INNODB_TABLESPACES_BRIEF T2 USING (SPACE) WHERE  T1.SPACE_TYPE = 'Single' && T1.ROW_FORMAT != 'Undo'UNION SELECT T2.PATH,        SUBSTRING_INDEX(SUBSTRING_INDEX(T2.PATH, '/', -1), '.', 1) NAME,        T1.SPACE_TYPE FROM   INFORMATION_SCHEMA .INNODB_TABLESPACES T1        JOIN INFORMATION_SCHEMA .INNODB_TABLESPACES_BRIEF T2 USING (SPACE) WHERE  T1.SPACE_TYPE = 'General' && T1.ROW_FORMAT != 'Undo'
2020-08-26T16:20:19.533904+08:00	  170 Query	FLUSH NO_WRITE_TO_BINLOG BINARY LOGS
2020-08-26T16:20:19.543095+08:00	  170 Query	SELECT server_uuid, local, replication, storage_engines FROM performance_schema.log_status
2020-08-26T16:20:19.543418+08:00	  170 Query	SHOW VARIABLES
2020-08-26T16:20:19.545383+08:00	  170 Query	SHOW VARIABLES
2020-08-26T16:20:19.550641+08:00	  170 Query	FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS
2020-08-26T16:20:20.556885+08:00	  170 Query	SELECT UUID()
2020-08-26T16:20:20.557118+08:00	  170 Query	SELECT VERSION()

可见,xtrabackup 8.0默认情况下大致过程如下:

  1. start backup
  2. copy .ibd file
  3. backup non-InnoDB tables and files
  4. executed FLUSH NO_WRITE_TO_BINLOG BINARY LOGS
  5. selecting LSN and binary log position from p_s.log_status
  6. copy last binlog file
  7. writing /mysql/backup/backup/binlog.index
  8. writing xtrabackup_binlog_info
  9. executing FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS
  10. copy ib_buffer_pool
  11. completed OK!

注意: 当存在非InnoDB表时,xtrabackup 8.0会执行FTWRL。

从上述步骤可知,xtrabackup 8.0与2.4的步骤主要区别为:

当只存在InnoDB引擎的表时,不再执行FTWRL,而是通过 上述第5步(SELECT server_uuid, local, replication, storage_engines FROM performance_schema.log_status )来获取LSN、binlog position、GTID 。

手册中对于表 log_status 的描述如下:

The log_status table provides information that enables an online backup tool to copy the required log files without locking those resources for the duration of the copy process.

When the log_status table is queried, the server blocks logging and related administrative changes for just long enough to populate the table, then releases the resources. The log_status table informs the online backup which point it should copy up to in the source’s binary log and gtid_executed record, and the relay log for each replication channel. It also provides relevant information for individual storage engines, such as the last log sequence number (LSN) and the LSN of the last checkpoint taken for the InnoDB storage engine.

从上述手册描述可知,performance_schema.log_status是MySQL 8.0提供给在线备份工具获取复制信息的表格,查询该表时,mysql server将阻止日志的记录和相关的更改来获取足够的时间以填充该表,然后释放资源。

log_status 表通知在线备份工具当前主库的 binlog 的位点和 gtid_executed 的值以及每个复制通道的 relay log。另外,它还提供了各个存储引擎的相关信息,比如,提供了 InnoDB 引擎使用的最后一个日志序列号(LSN)和最后一个检查点的 LSN。

performance_schema.log_status表定义为:

-- Semi-Sync
mysql> select * from performance_schema.log_status\G
*************************** 1. row ***************************
    SERVER_UUID: 6b437e80-e5d5-11ea-88e3-52549922fdbb
          LOCAL: {"gtid_executed": "6b437e80-e5d5-11ea-88e3-52549922fdbb:1-201094", "binary_log_file": "mysql-bin.000079", "binary_log_position": 195}
    REPLICATION: {"channels": []}
STORAGE_ENGINES: {"InnoDB": {"LSN": 23711425885, "LSN_checkpoint": 23711425885}}
1 row in set (0.00 sec)

-- Group Replication
mysql> select * from performance_schema.log_status\G
*************************** 1. row ***************************
    SERVER_UUID: 7bd32480-e5d5-11ea-8f8a-525499cfbb7d
          LOCAL: {"gtid_executed": "aaaaaaaa-aaaa-aaaa-aaaa-53ab6ea1210a:1-11", "binary_log_file": "mysql-bin.000003", "binary_log_position": 1274}
    REPLICATION: {"channels": [{"channel_name": "group_replication_applier", "relay_log_file": "mysql-relay-bin-group_replication_applier.000004", "relay_log_position": 311, "relay_master_log_file": "", "exec_master_log_position": 0}, {"channel_name": "group_replication_recovery", "relay_log_file": "mysql-relay-bin-group_replication_recovery.000003", "relay_log_position": 151, "relay_master_log_file": "", "exec_master_log_position": 0}]}
STORAGE_ENGINES: {"InnoDB": {"LSN": 20257208, "LSN_checkpoint": 20257208}}
1 row in set (0.00 sec)

问题2:performance_schema.log_status提供的信息是否准确呢?

当写入压力大时,该表中的binlog position与GTID信息不一致。

mysql> select * from performance_schema.log_status\G  show master status;
*************************** 1. row ***************************
    SERVER_UUID: 6b437e80-e5d5-11ea-88e3-52549922fdbb
          LOCAL: {"gtid_executed": "6b437e80-e5d5-11ea-88e3-52549922fdbb:1-448709", "binary_log_file": "mysql-bin.000087", "binary_log_position": 341265185}
    REPLICATION: {"channels": []}
STORAGE_ENGINES: {"InnoDB": {"LSN": 33797305275, "LSN_checkpoint": 33433316246}}
1 row in set (0.11 sec)

+------------------+-----------+--------------+------------------+-----------------------------------------------+
| File             | Position  | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                             |
+------------------+-----------+--------------+------------------+-----------------------------------------------+
| mysql-bin.000087 | 343317905 |              |                  | 6b437e80-e5d5-11ea-88e3-52549922fdbb:1-448709 |
+------------------+-----------+--------------+------------------+-----------------------------------------------+
1 row in set (0.01 sec)

问题3:既然log_status中的binlog position不准确,为什么备份恢复后GTID并没有缺失,数据也没问题?

原因是xtrabackup 8.0在第4步FLUSH NO_WRITE_TO_BINLOG BINARY LOGS之后,在第6步copy last binlog file,这样备份恢复出的新实例在启动后不仅会读取 gtid_executed 表,还会读取拷贝的那个binlog文件来更新GTID。

$ mysqlbinlog -vv /data/mysql/mysql-bin.000096 
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#200827 11:26:47 server id 575010000  end_log_pos 124 CRC32 0xb026e372 	Start: binlog v 4, server v 8.0.19-10 created 200827 11:26:47
# Warning: this binlog is either in use or was not closed properly.
BINLOG '
9ydHXw/Q9EUieAAAAHwAAAABAAQAOC4wLjE5LTEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEwANAAgAAAAABAAEAAAAYAAEGggAAAAICAgCAAAACgoKKioAEjQA
CgFy4yaw
'/*!*/;
# at 124
#200827 11:26:47 server id 575010000  end_log_pos 195 CRC32 0xad060415 	Previous-GTIDs
# 6b437e80-e5d5-11ea-88e3-52549922fdbb:1-465503
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

问题定位

坑一:MySQL 8.0 + Semi-Sync 重建问题

xenon原有的重建逻辑是适配于MySQL 5.6、5.7的(重建过程中xenon进程存活),一直无问题:

  1. 禁用raft,将xenon状态设为LEARNER ;
  2. 如mysql进程存在,则stop mysql;
  3. 清空MySQL数据目录;
  4. 执行xtrabackup --backup以xbstream方式获取对端数据;
  5. 执行xtrabackup --prepare应用redo log;
  6. 启动mysql;
  7. 执行stop slave; reset slave all;
  8. 执行reset master,以xtrabackup_binlog_info文件中的GTID为准设置gtid_purged;
  9. 启用raft,将xenon状态设为FOLLOWER或IDLE;
  10. 等待xenon自动change master to到主节点。
  11. 执行start slave。

问题1:为什么在 MySQL 8.0 + Semi-Sync 组合下会出现 Duplicate entry ?

跟踪重建过程中的general log,发现在第6和第7步中间,也就是设置gtid_purged之前凭空多出了 change master to 和 start slave 操作:

2020-08-24T21:55:22.817859+08:00            8 Query     SET GLOBAL rpl_semi_sync_master_enabled=OFF
2020-08-24T21:55:22.818025+08:00            8 Query     SET GLOBAL read_only = 1
2020-08-24T21:55:22.818143+08:00            8 Query     SET GLOBAL super_read_only = 1
2020-08-24T21:55:22.818323+08:00            8 Query     START SLAVE
2020-08-24T21:55:22.824449+08:00            8 Query     STOP SLAVE
2020-08-24T21:55:22.824610+08:00            8 Query     CHANGE MASTER TO MASTER_HOST = '192.168.0.3', MASTER_USER = 'qc_repl', MASTER_PASSWORD = <secret>, MASTER_PORT = 3306, MASTER_AUTO_POSITION = 1
2020-08-24T21:55:22.833710+08:00            8 Query     START SLAVE
2020-08-24T21:55:22.935973+08:00           10 Query     BEGIN
2020-08-24T21:55:22.936084+08:00           10 Query     COMMIT /* implicit, from Xid_log_event */
......
2020-08-24T21:55:24.701711+08:00           10 Query     BEGIN
2020-08-24T21:55:24.701901+08:00           10 Query     COMMIT /* implicit, from Xid_log_event */
2020-08-24T21:55:24.816571+08:00            8 Query     SET GLOBAL rpl_semi_sync_master_enabled=OFF
2020-08-24T21:55:24.816886+08:00            8 Query     SET GLOBAL read_only = 1
2020-08-24T21:55:24.817177+08:00            8 Query     SET GLOBAL super_read_only = 1
2020-08-24T21:55:24.817281+08:00            8 Query     START SLAVE
2020-08-24T21:55:25.039581+08:00           10 Query     BEGIN
2020-08-24T21:55:25.039749+08:00           10 Query     COMMIT /* implicit, from Xid_log_event */
......
2020-08-24T21:55:25.152919+08:00           10 Query     BEGIN
2020-08-24T21:55:25.153082+08:00           10 Query     COMMIT /* implicit, from Xid_log_event */
2020-08-24T21:55:25.389776+08:00            8 Query     STOP SLAVE
2020-08-24T21:55:25.392581+08:00            8 Query     RESET SLAVE ALL
2020-08-24T21:55:25.407434+08:00            8 Query     RESET MASTER
2020-08-24T21:55:25.417292+08:00            8 Query     SET GLOBAL gtid_purged='6b437e80-e5d5-11ea-88e3-52549922fdbb:1-102610
'
2020-08-24T21:55:25.419835+08:00            8 Query     START SLAVE
2020-08-24T21:55:25.427071+08:00            8 Query     SET GLOBAL read_only = 1
2020-08-24T21:55:25.427178+08:00            8 Query     SET GLOBAL super_read_only = 1
2020-08-24T21:55:25.427271+08:00            8 Query     SET GLOBAL sync_binlog=1000
2020-08-24T21:55:25.427339+08:00            8 Query     SET GLOBAL innodb_flush_log_at_trx_commit=1
2020-08-24T21:55:25.427423+08:00            8 Query     SHOW SLAVE STATUS
2020-08-24T21:55:25.427600+08:00            8 Query     SHOW MASTER STATUS
2020-08-24T21:55:26.817622+08:00            8 Query     SET GLOBAL rpl_semi_sync_master_enabled=OFF
2020-08-24T21:55:26.817794+08:00            8 Query     SET GLOBAL read_only = 1
2020-08-24T21:55:26.817897+08:00            8 Query     SET GLOBAL super_read_only = 1
2020-08-24T21:55:26.817988+08:00            8 Query     START SLAVE
2020-08-24T21:55:26.818381+08:00            8 Query     SHOW SLAVE STATUS
2020-08-24T21:55:26.818570+08:00            8 Query     SHOW MASTER STATUS
2020-08-24T21:55:26.818715+08:00            8 Query     STOP SLAVE
2020-08-24T21:55:26.818823+08:00            8 Query     CHANGE MASTER TO MASTER_HOST = '192.168.0.3', MASTER_USER = 'qc_repl', MASTER_PASSWORD = <secret>, MASTER_PORT = 3306, MASTER_AUTO_POSITION = 1
2020-08-24T21:55:26.832164+08:00            8 Query     START SLAVE

这就是说在设置gtid_purged之前已经启用复制获取了一部分数据,那么 xtrabackup_binlog_info 中的内容就不再准确,之后设置的GTID与实际数据就不一致,实际的数据比设置的GTID要多,引起主键冲突。

问题2:为什么之前MySQL 5.6、5.7从没遇到过这个问题呢?

测试了很多次,发现在 MySQL 5.6 & 5.7 在set gtid_purged 前执行 change master to & start slave 后会报复制错误 Slave failed to initialize relay log info structure from the repository ,而在reset slave all; reset master、set gtid_purged后再执行 change master to & start slave 就可以正常复制,数据无误。

问题3:xenon中哪块逻辑引起的额外的 change master to 和 start slave ?

问题根源在重建期间 xenon 会设为 LEARNER 角色,而该角色在探测到MySQL Alive后,会 change master 到主节点。正常来说,要等raft状态设为 FOLLOWER 后由 FOLLOWER 的监听线程 change master 到主节点。(代码见 pr104 、pr102 )

坑二:MySQL 8.0 + Group-Replication 重建后无法启动MGR

根据报错信息Slave failed to initialize relay log info structure from the repository看,应该是xtrabackup重建后的数据目录保留了slave复制信息导致的,尝试在启动组复制前执行reset slave或reset slave all即可解决。

总结

  1. Xtrabackup 2.4 备份后生成的 xtrabackup_binlog_info 文件记录的 GTID 信息是准确的,但是备份恢复后 show master status 显示的 GTID 是不准确的。
  2. Xtrabackup 8.0 在备份只有 InnoDB 表的实例时,xtrabackup_binlog_info 文件记录的 GTID 信息不一定是准确的,但是备份恢复后 show master status 显示的 GTID 是准确的。
  3. Xtrabackup 8.0 在备份有非 InnoDB 表格的实例时,xtrabackup_binlog_info 文件记录的 GTID 信息是准确的,备份恢复后 show master status 显示的 GTID 也是准确的。
  4. 使用 Xtrabackup 8.0 重建集群节点后,无需执行 reset master & set gtid_purged 操作。
  5. 使用 Xtrabackup 8.0 重建 Group-Replication 集群节点后,启动组复制前需要先执行reset slave或reset slave all清除slave信息,否则 start group_replication 会失败。

欢迎关注我的微信公众号【数据库内核】:分享主流开源数据库和存储引擎相关技术。

标题网址
GitHubhttps://dbkernel.github.io
知乎https://www.zhihu.com/people/…
思否(SegmentFault)https://segmentfault.com/u/db…
掘金https://juejin.im/user/5e9d3e…
开源中国(oschina)https://my.oschina.net/dbkernel
博客园(cnblogs)https://www.cnblogs.com/dbkernel
【实战教程】BMAD-METHOD 入门教程:用 AI 组建你的“七人开发团队” 简单说,BMAD-METHOD 就像一个会自己运转的“AI 软件公司”。它不是某个单一应用,而是一种AI 工作流方法论—— 把一个项目拆解成多个角色(产品、架构、前后端、测试、运维等),每个角色由一个 AI 智能体负责协作,就像你真的在带一个 7 人团队。GitHub 项目地址 👉目前 Star 数已经达到了恐怖的 20k,可见这套方法的影响力不小。BMAD-METHOD 的核心理念不是“生成代码”,而是“自动化协作”。 阅读详情

相关推荐

机器学习系列(3)_逻辑回归应用之Kaggle泰坦尼克之灾

f作者: 寒小阳 &&龙心尘 时间:2015年10月。 出处: 声明:版权所有,转载请注明出处,谢谢。手把手机器学习之逻辑回归应用——Kaggle泰坦尼克之灾1.引言先说一句,年末双十一什么的一来,真是非(mang)常(cheng)欢(gou)乐(le)!然后push自己抽出时间来写这篇blog的原因也非常简单: 写完前两篇逻辑回归的介绍和各个角度理解之后,小伙伴们纷纷表示『好像很高级的样纸,

寒小阳 43万+

mysql备份工具命令xtra_mysql备份工具XtraBackup2.4(安装)

一、XtraBackup的版本选择各版本之间的区别:8.0仅支持mysql8.02.4专针对5.7开发,兼容5.6,5.52.3针对5.6开发,兼容5.52.2针对5.5开发二、XtraBackup2.4 (官方教程)建议使用yum方式安装,本机环境centos7.6 (lsb_release -a命令查看 )yuminstallhttps://repo.percona.com/yum/pe...

weixin_39853892的博客 560

ArcGIS拓扑检查实战:5分钟搞定面重叠与缝隙问题(附详细截图)

本文详细介绍了如何使用ArcGIS进行拓扑检查,快速解决面重叠与缝隙问题。通过搭建拓扑检查环境、配置拓扑规则、五步闪电修复法及批量处理技巧,帮助用户高效完成数据修正,提升GIS数据质量。特别适合地籍管理、规划红线等场景应用。

z4a5b6的博客 745

MySQL8.0之XtraBackup 增量恢复

Percona XtraBackup的工作原理: 1.XtraBackup复制InnoDB数据文件,这会导致内部不一致的数据,但是它会对文件执行崩溃恢复,以使其再次成为一个一致的可用数据库 2.这样做的可行性是因为InnoDB维护一个REDO日志,也称为事务日志。REDO日志包含了InnoDB数据每次更改的记录。当InnoDB启动时,REDO日志会检查数据文件和事务日志,并执行两个步骤。它将已...

eagle89的专栏 3923

[Linux外设驱动详解]RK3588 U-Boot网络功能深度分析

本文深入分析了RK3588平台上U-Boot的网络功能实现,主要内容包括: 网络架构:详细剖析了从硬件层到协议层的完整网络栈架构,包括GMAC驱动、TFTP/NFS启动、网络命令等关键组件。 驱动实现:重点介绍了RK3588 GMAC驱动结构,包含关键数据结构、专用操作函数集、设备树兼容性配置和GRF寄存器设置。 功能实现:详细说明了驱动初始化流程、RGMII速度适配机制以及PHY接口配置过程。 高级特性:涵盖了网络启动功能、镜像更新和MAC地址传递到Linux内核的机制。 文档通过代码片段和流程图清晰展示

Just Linux! 1115

基于混合智能框架的景区边界范围预测与补全系统

摘要 本文提出一种混合智能框架,结合随机森林模型和GIS规则约束,解决景区边界缺失问题。系统基于Python和ArcGIS平台,利用多源地理空间数据训练随机森林分类器预测景区范围,并集成地形、水文、道路等GIS规则进行优化。实验结果表明,该方法能有效预测15000个景区的边界,精度优于单一模型。创新点在于: 1)数据驱动与知识驱动相结合的混合智能范式; 2)面向全国尺度的大规模边界补全; 3)提供完整的Python+ArcGIS实现方案。该系统为景区精细化管理提供了技术支撑,具有实用价值。

huanghm88的专栏 284

xtrabackup安装及问题解决

1.官方网址:http://www.percona.com/downloads/ 2.选择版本及系统 (1)注意版本不对可能安装失败 [root@localhost tools]# rpm -ivh percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm 警告:percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID cd2efd2a: NOKEY 错误:依赖检测失败: ..

qq_34779067的博客 7383

magic-api的鉴权机制配置 (附实战代码)

引入magic-api及相关数据库驱动依赖 配置yml文件和编辑器JS文件 实现登录鉴权逻辑,包括用户验证和Token处理 接口鉴权拦截器设计,确保接口访问安全性 文章提供了完整的代码示例,帮助开发者快速集成magic-api框架并实现权限控制功能。

码农研究僧的博客 228

mgr未同步 mysql_mysql8.0 搭建mgr踩坑记录

启动总是报错:2020-08-21T04:52:36.332502Z 10 [System] [MY-010597] [Repl] 'CHANGE MASTER TO FOR CHANNEL 'group_replication_applier' executed'. Previous state master_host='', master_port= 3306, master_log_file...

weixin_39548832的博客 877

深度解析长鑫G5 DRAM工艺的技术逻辑与微缩边界

长鑫存储G5 DRAM平台通过多重图形化、45:1高深宽比电容与外围HKMG技术,突破先进光刻受限瓶颈,在11.95 nm有源区半间距下实现阵列微缩与电容结构优化。其核心意义不在于对标国际节点,而在于系统性解决“尺寸缩小—电荷保持—外围跟进而”三大矛盾,展现国产DRAM在无EUV条件下推进先进制程的工艺整合能力。

硬核科技 39

手把手教你学Simulink——基础电机控制场景实例:基于Simulink的永磁同步发电机温度场耦合仿真

摘要:本文详细介绍了基于Simulink的永磁同步发电机(PMSG)电-热耦合仿真方法。通过Simscape Electrical搭建含热端口的PMSG模型,结合集总参数热网络(LPTN)实现损耗计算与温度反馈,分析了过载工况下温升对电阻和永磁体性能的影响。仿真结果表明:150%过载20秒会导致绕组温升132°C,电阻增加42%,磁链衰减10.5%。文章还提供了自然冷却与强迫风冷的对比数据,并建议通过多物理场耦合仿真预防实机过热问题。该方法可有效支撑高功率密度电机热设计,避免永磁体退磁风险。

MHD0815的博客 252

MySql8.0.20+percona-xtrabackup-80-8.0.13备份与恢复

一、软件: MySql8.0.20 percona-xtrabackup-80-8.0.13-1.el7.x86_64 安装: 1、安装percona依赖库: yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm 2、测试依赖库是否安装成功: yum list | grep percona 3、安装percona yum inst..

eagle89的专栏 2678

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

mysql下载是port报错_mysql group replication添加复制节点报错

该楼层疑似违规已被系统折叠隐藏此楼查看此楼恳求各位大神给把把脉,到底问题处在那个环节环境: 三台物理机 192.168.1.3 192.168.1.4 192.168.1.5配置文件:[mysqld]basedir=/usr/local/mysqldatadir=/var/lib/mysqlserver_id=1port=3306socket=/var/run/mysqld/mysql.sock...

weixin_35621884的博客 408

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

配置Mysql集群主从复制报错

我在master创建了一个数据库(demo_ds_0),然后又快速删除了。然后又再次创建了 demo_ds_0, 发现 slave 数据库没有将 demo_ds_0 库同步过来。发现 SLave_IO_Running 字段是 Yes, Slave_SQL_Running 一直是 No.执行 show slave status 在返回 Last_SQL_Error 列中也可以看到这个错误。可以看到 SLave_IO_Running 和 Slave_SQL_Running 都是 Yes了。

z284747的博客 576

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

在CentOS 8.2中安装Percona Xtrabackup 8.0.x备份MySql

确认安装完成后,您可以使用以下命令验证Percona Xtrabackup的安装版本。启动备份本机或者指定服务器。Percona的源非常慢。通过docker安装。关于全量备份纯SQL。

u010758623的博客 1498

change master mysql_mysql 主从复制change master to

CHANGE MASTER TO命令用于slave配置连接master的信息,例如master host、master port等。关于CHANGE MASTER TO命令,总结几点使用心得。在CHANGE MASTER TO之前,slave 的复制线程(I/O线程,SQL线程)必须停止,可以使用 STOP SLAVE 来停止。如果一些参数不指定,则其参数值使用以前设置的值。如果使用了参数RELA...

weixin_39943370的博客 371

Mysql mgr 加节点_MGR节点加入的几种常见情况

OS: CentOS Linux release 7.7.1908 (Core)DB version: 5.7.25-logMGR MODE:单主模式 (group_replication_single_primary_mode=ON)Node:192.168.211.128:3310(主) / 192.168.211.128:3311 / 192.168.211.128:3312目...

weixin_42610671的博客 1611

mysql mgr recovering_深度理解MySQL Group Replication的RECOVERING状态

接收到报警通知,db3这台组复制成员故障down机了,等修复好,启动服务器,然后再启动mysql实例,进去查看状态,变成了RECOVERING,如下所示;mysql> SELECT * FROM performance_schema.replication_group_members;+---------------------------+-------------------------...

weixin_39938331的博客 1347

配置MySQL Group Replication单主模式踩过的坑

一些关于引擎和主键之类的坑就不提了~~~ 问题 一台从库之前使用gtid复制,没有加入到Group Replication组中,后来在加入组中时,start group_replication启动,日志报错 2018-02-01T06:33:26.894113Z 342 [Note] 'CHANGE MASTER TO FOR CHANNEL 'group_replication_rec

Sakura.Gaara 9453

MYSQL高可用管理-MGR(MGR网络抖动问题分析和group_replication_unreachable_majority_timeout等参数分析)

如果group_replication_autorejoin_tries为 0 或重试失败,则会执行 group_replication_exit_state_action 指定的操作。本文主要从测试的角度来阐明group_replication_unreachable_majority_timeout和group_replication_member_expel_timeout参数对集群网络分区的影响,首先这里放一张大图,为多年前学习MGR的时候留下的,也就是这两个参数对集群的影响,也是本文测试重点。

oradbm的博客 2490

mysql mgr bug_Mysql MGR架构误操作引发的问题处理

【背景介绍】故障方描述:一次用户刷权限的时候不小心把数据库用户表记录删掉了,执行之后发现不对后重建用户,杀掉进程后重新MGR启动报错。【报错信息】2018-06-13T12:47:41.405593Z 32 [Note] Plugin group_replication reported: 'Group communication SSL configuration: group_replicat...

weixin_39622655的博客 358

XtraBackup对Mysql数据热备份

通过使用XtraBackup,多Mysql存储的数据进行热备份,当数据库数据无法恢复后,通过备份数据进行恢复

weixin_39066895的博客 2857

xtrabackup

xtrabackup的安装(centos/rhel系列) 想要支持5.7版本的备份至少得2.4的,然后8.0的只支持mysql8 yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm yum -y list | grep percona yum -y install percona-xtrabac...

wx号:wenhs5479的博客 769

innobackupex和Xtrabackup备份和恢复MySQL数据

当MySQL数据量很小时,我们可以使用mysqldump来备份,无论是myisam引擎还是innodb引擎都是没有问题的。 但数据量很大,比如上百GB甚至上TB时,再使用mysqldump备份就会很鸡肋了,试想光备份一次全量备份要耗费10几个小时,那就别干别的了。因为,毕竟mysqldump时是会锁表的。 还好我们有xtrabakcup这个工具来备份量级比较大的数据,上百G的数据,仅仅几十分钟搞定,这主要取决于磁盘的I/O效率。不过xtrabackp默认只支持备份innodb,而myisam引擎的数据就不友

qq_40907977的博客 958

MySQL flush no_write_to_binlog命令的作用及适用场景

是一个MySQL命令,它用于执行特定的清理或刷新操作,同时确保这些操作不会被记录到二进制日志(Binary Log)中。二进制日志主要用于MySQL的复制功能,记录了对数据库进行的所有更改数据的SQL语句或数据变更事件,以便于在从服务器上重现并保持数据的一致性。

学亮编程手记 1281

xtrabackup mysql 8_Percona Xtrabackup 8.0备份MySQL8.0

随着Percona XtraBackup 8.0的推出,Percona XtraBackup 2.4将继续支持MySQL和Percona Server 5.6和5.7数据库。由于MySQL8.0在数据字典,重做日志和撤消日志中引入的更改与以前的版本不兼容,因此Percona XtraBackup8.0目前不支持8.0之前的版本。压缩模式需要先安装Percona自研的qpress压缩工具。#...

weixin_39881167的博客 286
上一篇: 源码分析 | ClickHouse和他的朋友们(9)MySQL实时复制与实现
下一篇: 捉虫日记 | MySQL 5.7.20 try_acquire_lock_impl 异常导致mysql crash
dbkernel
博客等级 码龄4年 60粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值