AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 6986
Accepted
Gopinath Karangula
Gopinath Karangula
Asked: 2011-10-20 18:24:00 +0800 CST2011-10-20 18:24:00 +0800 CST 2011-10-20 18:24:00 +0800 CST

当磁盘空间中断时如何处理 My SQL DB Master 到 Master 的复制

  • 772

我们有两个节点节点 A 和 B 的主到主复制,两者都在虚拟环境中。最初,节点 A 出现中断(磁盘空间问题)并停止复制。应用程序级流量已转移到节点 B 并重新定位节点 A 数据存储并腾出可用空间。

节点 A 已成功启动并启动。复制已开始,在与节点 A 同步时节点 B 中出现错误,并且节点 B 中的 bin 日志已损坏。根本原因仍然是个谜。但是分析日志可能会发现一些重复的条目,下面是错误日志信息:

[ERROR] Error reading packet from server: Client requested master to start replication from impossible position ( server_errno=1236).
[ERROR] Slave I/O: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position', Error_code: 1236
111014 20:25:48 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.001067', position 183468345.

在这种情况下我们如何处理复制?我们是否可以跳过当前的 bin-log 并使用下一个可用的 bin-log 及其位置开始复制。将节点 B 与节点 A 同步是否是个好主意:

CHANGE MASTER TO
  MASTER_HOST='XX.XX.XXX.XXX',
  MASTER_USER='replicate',
  MASTER_PASSWORD='slave',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mysql-bin.001025',
  MASTER_LOG_POS=4,
  MASTER_CONNECT_RETRY=10;

我提出这种情况的主要原因是,我不想恢复数据库并从头开始构建它,其中节点 B 中的数据库备份约为 80 GB。如何修复复制?

mysql replication
  • 2 2 个回答
  • 5175 Views

2 个回答

  • Voted
  1. Best Answer
    RolandoMySQLDBA
    2011-10-21T07:50:38+08:002011-10-21T07:50:38+08:00

    这里有两点需要说明:

    1)不可能这个词是一个死的赠品。Client requested master to start replication from impossible position. 这基本上是什么意思:

    恰好二进制日志的文件大小和二进制日志的位置是相同的。slave想要从mysql-bin.001067位置读取183468345。由于消息中出现了“不可能”这个词,这表明master二进制日志mysql-bin.001067小于183468345字节。要再次进行复制,请跳到下一个二进制日志:

    CHANGE MASTER TO 
      MASTER_HOST='XX.XX.XXX.XXX', 
      MASTER_USER='replicate', 
      MASTER_PASSWORD='slave', 
      MASTER_PORT=3306, 
      MASTER_LOG_FILE='mysql-bin.001068', 
      MASTER_LOG_POS=NewPos, 
      MASTER_CONNECT_RETRY=10;
    START SLAVE;
    

    NewPos 依赖于 MySQL 的版本。

    • MySQL 5.6:NewPos = 120
    • MySQL 5.5:NewPos = 107
    • MySQL 5.1:NewPos = 106
    • MySQL 5.0:NewPos = 98
    • MySQL 4.x:NewPos = 98

    2)您可以考虑使用 Percona 的数据同步工具。

    • mk 表校验和
    • mk 表同步

    我已经使用这些工具大约 2 年了,它们可以帮助您找出主从之间表的差异,即使主表上的表是 InnoDB 并且从站上的同一个表是 MyISAM(前提是表具有相同的表结构)。

    运行这些工具时必须打开复制。

    BTW Percona 有一套新的工具,叫做Percona Toolkit。他们放弃了自己的 MAATKIT 工具来制作更好的工具。这些工具可能被称为pt-table-checksum和pt-table-sync。

    • 6
  2. Derek Downey
    2011-10-21T05:31:09+08:002011-10-21T05:31:09+08:00

    需要更多信息(如我对问题的评论中所述),但我将首先给出关于同步节点的一般警告。

    如果您尝试将节点 B 与节点 A 同步,请确保您有一个最近的备份,以防同步出错。

    • 2

相关问题

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

  • 什么时候是使用 MariaDB 而不是 MySQL 的合适时机,为什么?

  • PostgreSQL 9.0 Replication 和 Slony-I 有什么区别?

  • 组如何跟踪数据库架构更改?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    您如何显示在 Oracle 数据库上执行的 SQL?

    • 2 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    我可以查看在 SQL Server 数据库上运行的历史查询吗?

    • 6 个回答
  • Marko Smith

    如何在 PostgreSQL 中使用 currval() 来获取最后插入的 id?

    • 10 个回答
  • Marko Smith

    如何在 Mac OS X 上运行 psql?

    • 11 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Marko Smith

    将数组参数传递给存储过程

    • 12 个回答
  • Martin Hope
    Manuel Leduc PostgreSQL 多列唯一约束和 NULL 值 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler 什么时候应该将主键声明为非聚集的? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - 哪个更好作为主键? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick 如何优化大型数据库的 mysqldump? 2011-01-04 13:13:48 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve