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 / 问题 / 18031
Accepted
Jim Dennis
Jim Dennis
Asked: 2012-05-17 17:15:31 +0800 CST2012-05-17 17:15:31 +0800 CST 2012-05-17 17:15:31 +0800 CST

使用旧的 MySQL binlog 文件名(位置为零)?风险?缺点?

  • 772

假设我正在设置一个新的奴隶。运行 mysql -e "STOP SLAVE" 后,我从 mysqldump 开始,将其传输并将其恢复到新服务器。

如果我没有在 STOP SLAVE 之后和运行 mysqldump 之前捕获 BINLOG 文件名和位置,那么如果我只是使用以前的/旧的 binlog 文件名(已验证存在于主服务器上并且比备份更早),会发生什么零位置?

它似乎只是强制新的主服务器将所有事件重播到新的从服务器,显然包括一些已经在备份中表示的插入、更新和删除(发生在重叠时间段内的事件)。

这有什么不对或有风险吗?除了浪费额外的时间和 CPU 周期(可能重放一天的重叠事务)之外,还有其他缺点吗?

mysql restore
  • 2 2 个回答
  • 1326 Views

2 个回答

  • Voted
  1. Best Answer
    RolandoMySQLDBA
    2012-05-18T10:05:30+08:002012-05-18T10:05:30+08:00

    我有个惊喜给你

    二进制日志中的每个位置都基于写入 SQL 语句时二进制日志的文件大小。

    这个概念更有趣的是二进制日志的头在开始位置上不同(没有文字位置 0 这样的东西)

    这些是从 Master 的空二进制日志复制的起点

    • 107 为 MySQL 5.5
    • 106 为 MySQL 5.1
    • 98 用于 MySQL 5.0 及更高版本

    我第一次写这篇文章是在 2011 年 2 月 4 日

    这是建议的操作步骤

    • 如果中继日志仍然存在于 Slave 上
      • 找到最后的中继日志
      • mysqlbinlog针对该中继日志运行
      • 找到执行 mysqldump 时的时间戳
      • 获取该时间戳并在 master 的二进制日志中找到相同的时间戳\
      • 靠近主副本的时间戳在合适的位置应该是
      • CHANGE MASTER TO无论您选择什么主二进制日志,请在从属服务器上的命令中使用该二进制日志
      • 无论您在所选的主二进制日志中找到什么位置,都可以在从站的CHANGE MASTER TO命令中使用该位置

    这是最大程度地减少由于双密钥引起的任何数据冲突的最佳方法

    可以肯定的是,在 Slave 上将其添加到 my.cnf

    [mysqld]
    slave-skip-errors=1062
    

    然后重启mysql。这将绕过运行后的所有重复键冲突START SLAVE;。当 Seconds_Behind_Master 达到 0 时,删除该行并在 Slave 上重新启动 mysql。从那里开始,MySQL 复制方面的一切都应该没问题。

    • 2
  2. atxdba
    2012-06-17T10:55:14+08:002012-06-17T10:55:14+08:00

    风险/缺点,尤其是在使用基于语句的复制时:

    • 插入表 (pk_auto_inc_col, value_column) 值 (null, 123);那里没有碰撞,它只会创建一个重复的记录。随后的插入现在全部偏移
    • 更新 tbl set col=col+1; col 值再次增加
    • 1

相关问题

  • 是否有任何 MySQL 基准测试工具?[关闭]

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

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

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

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

Sidebar

Stats

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

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

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

    • 4 个回答
  • Marko Smith

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

    • 7 个回答
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +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
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +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