首页 文章 精选 留言 我的

精选列表

搜索[分片恢复],共10004篇文章
优秀的个人博客,低调大师

Slave被误写入数据如何恢复到主库

背景 在GreatSQL主从复制环境中,有时候可能会出现一些误操作,将本应该写入到主库的数据写入到了从库,导致主从数据不一致,影响数据同步。是否可以将写入从库的数据同步写入主库呢? 测试环境 角色 IP地址 数据库开放端口 版本 主库 192.168.137.179 3308 GreatSQL 8.0.32 从库 192.168.137.180 3308 GreatSQL 8.0.32 复制链路: greatsql> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for source to send event Master_Host: 192.168.137.179 Master_User: root Master_Port: 3308 Connect_Retry: 60 Master_Log_File: binlog.000001 Read_Master_Log_Pos: 157 Relay_Log_File: oracle_dts-relay-bin.000002 Relay_Log_Pos: 367 Relay_Master_Log_File: binlog.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes 表数据 主库 greatsql> select * from dept; +--------+------------+----------+ | DEPTNO | DNAME | LOC | +--------+------------+----------+ | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | | 60 | it | 成都 | +--------+------------+----------+ 5 rows in set (0.00 sec) greatsql> insert into dept select 70,'IT','CTU'; Query OK, 1 row affected (0.01 sec) Records: 1 Duplicates: 0 Warnings: 0 greatsql> commit; Query OK, 0 rows affected (0.00 sec) 从库 greatsql> select * from dept; +--------+------------+----------+ | DEPTNO | DNAME | LOC | +--------+------------+----------+ | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | | 60 | it | 成都 | | 70 | IT | CTU | +--------+------------+----------+ 6 rows in set (0.00 sec) 主库写入的数据正常同步到从库 在从库写入数据 greatsql> insert into dept select 80,'IT','SZ'; Query OK, 1 row affected (0.01 sec) Records: 1 Duplicates: 0 Warnings: 0 greatsql> insert into dept select 90,'SALES','SZ'; Query OK, 1 row affected (0.01 sec) Records: 1 Duplicates: 0 Warnings: 0 从库数据 greatsql> select * from dept; +--------+------------+----------+ | DEPTNO | DNAME | LOC | +--------+------------+----------+ | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | | 60 | it | 成都 | | 70 | IT | CTU | | 80 | IT | SZ | | 90 | SALES | SZ | +--------+------------+----------+ 8 rows in set (0.00 sec) 主库数据 greatsql> select * from dept; +--------+------------+----------+ | DEPTNO | DNAME | LOC | +--------+------------+----------+ | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | | 60 | it | 成都 | | 70 | IT | CTU | +--------+------------+----------+ 6 rows in set (0.01 sec) 此时从库写入的数据在主库中并没有出现 解析从库的二进制日志 $ mysqlbinlog -vv --base64-output=decode-rows binlog.000002>b002.sql BEGIN /*!*/; #at 354 #240221 16:10:25 server id 18001 end_log_pos 416 CRC32 0xcc81584b Table_map: `scott`.`dept` mapped to number 101 #has_generated_invisible_primary_key=0 #at 416 #240221 16:10:25 server id 18001 end_log_pos 462 CRC32 0x5149e38a Write_rows: table id 101 flags: STMT_END_F ###INSERT INTO `scott`.`dept` ###SET ###@1=80 /* INT meta=0 nullable=0 is_null=0 */ ###@2='IT' /* VARSTRING(56) meta=56 nullable=1 is_null=0 */ ###@3='SZ' /* VARSTRING(52) meta=52 nullable=1 is_null=0 */ #at 462 #240221 16:10:25 server id 18001 end_log_pos 493 CRC32 0xab795e4a Xid = 34 可以看到写入的从库写入的数据在 binlog.000002,我们可以通过 grep 从库的 server id 确定日志文件中有没有在从库写入的数据。 复制从库日志到主库 $ scp binlog.000002 192.168.137.179:/tmp/ Warning: Permanently added '192.168.137.179' (ECDSA) to the list of known hosts. root@192.168.137.179's password: binlog.000002 100% 836 1.1MB/s 00:00 应用从库的二进制日志 应用从库的日志到主库 $ mysqlbinlog binlog.000002|mysql -uroot -p -h127.1 -P3308 主库应用从库二进制日志时,从库二进制日志信息未发生变化 greatsql> show binary logs; +---------------+-----------+-----------+ | Log_name | File_size | Encrypted | +---------------+-----------+-----------+ | binlog.000001 | 498 | No | | binlog.000002 | 836 | No | | binlog.000003 | 237 | No | +---------------+-----------+-----------+ 3 rows in set (0.00 sec) 主从复制链路状态正常 greatsql> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for source to send event Master_Host: 192.168.137.179 Master_User: root Master_Port: 3308 Connect_Retry: 60 Master_Log_File: binlog.000001 Read_Master_Log_Pos: 1059 Relay_Log_File: oracle_dts-relay-bin.000002 Relay_Log_Pos: 1269 Relay_Master_Log_File: binlog.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes 可以看到主库在应用从库产生的二进制日志时,从库没有重复应用这些二进制日志(By default, the replication I/O (receiver) thread does not write binary log events to the relay log if they have the replica's server ID (this optimization helps save disk usage). ),出现主键冲突,导致复制状态出错 查看主库数据 greatsql> select * from dept; +--------+------------+----------+ | DEPTNO | DNAME | LOC | +--------+------------+----------+ | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | | 60 | it | 成都 | | 70 | IT | CTU | | 80 | IT | SZ | | 90 | SALES | SZ | +--------+------------+----------+ 8 rows in set (0.00 sec) 后续测试,主库写入数据可正常同步到从库。 Enjoy GreatSQL :) 关于 GreatSQL GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。 相关链接: GreatSQL社区 Gitee GitHub Bilibili GreatSQL社区: 社区有奖建议反馈: https://greatsql.cn/thread-54-1-1.html 社区博客有奖征稿详情: https://greatsql.cn/thread-100-1-1.html (对文章有疑问或者有独到见解都可以去社区官网提出或分享哦~) 技术交流群: 微信&QQ群: QQ群:533341697 微信群:添加GreatSQL社区助手(微信号:wanlidbc )好友,待社区助手拉您进群。

优秀的个人博客,低调大师

Linux 将停止 VMEbus 支持,将其恢复暂存状态

80 年代初 Linux 为摩托罗拉 68000 系列引入了 Versa 模块 Eurocard“VMEbus”标准。然而,十年前 Linux 的 VME 子系统从 staging tree (staging tree 是主线的分支,用来放置一些因未充分测试等原因而未能进入 Linux 内核的新驱动程序和新文件系统)中升级后,VME 的硬件驱动程序却一直未能离开 staging tree,并且代码已经年久失修,在过去的 5 年里无人维护。因此,Linux 的 VME 子系统支持将返回 Linux 内核 staging 暂存区。 开发者 Arnd Bergmann 正通过补丁删除 CA91CX42 Universe-II 驱动程序,准备将整个 VME 子系统移回暂存区,相关驱动则彻底移除。伯格曼指出: Universe-II 使用古老的 virt_to_bus() 接口,与大多数现代机器不兼容。由于没有人对此进行清理,因此该驱动程序很可能没有实际用户。该芯片于 1997 年推出,仅支持 32 位传统 PCI。它在 2004 年被 TSI148 取代,目前已经停产,而旧版 Universe II 的一个版本在 25 年后仍在生产中。 vme_vmivme7805 板使用 Universe-II,因此在此过程中也将其移除,但基于 TSI148 的 PCI 附加卡理论上仍然可以工作。 其补丁总结:驱动程序和子系统本身的维护在 2017 年已停止,目前已没有硬件驱动程序处于暂存状态,只剩下有限的用户级访问代码。 与此同时,VME Linux 网页 自 2003 年以来一直没有更新。有兴趣重新了解 VME 总线的人可以看到这个 CERN 演示文稿。 目前,这些降级 VME 代码的补丁正处于“阶段测试”阶段,应该会在 Linux 5.20 版本实现,当然,如果到时候还有 VMEbus 忠实粉丝提出异议,则事情会另作讨论。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册