关闭

主从复制在丛库修改字段类型导致复制异常及解决方法

1031人阅读 评论(0) 收藏 举报
分类:

主从复制环境中,通过主从库滚动升级的方式实现升级,首先升级slave,完成后,互换slave与master的角色,然后再升级原master(新slave)。升级过程中如果遇到修改字段定义,可能会出现复制异常,导致复制终止。


临时解决方案(Workaround)

 
1. 库字符集不同
 
a. 表结构相同且字符集相同,则可以正常复制
 
b. 表结构相同但字符集不同,则不能正常复制
 
若要正常复制需要在从库上设置参数:set global slave_type_conversions=ALL_NON_LOSSY;
 
c. 表结构不同且字符集相同(或不同),则不能正常复制
 
此种情况若要保证复制正常,则创建新表时必须指定字符集。
 
2. 库字符集相同
 
a. 表结构相同且字符集相同,则可以正常复制
 
b. 表结构相同但字符集不同,则不能正常复制
 
若要正常复制需要在从库上设置参数:set global slave_type_conversions=ALL_NON_LOSSY;
 
c. 表结构不同且字符集相同(或不同),则不能正常复制
 

此种情况若要保证复制正常,则创建表是可以不指定字符集,但建议指定。


mediumint 字段改 int 类型导致同步异常

附日志:

               Slave_IO_State: Waiting for master to send event
                  Master_Host: ip address
                  Master_User: user
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.010144
          Read_Master_Log_Pos: 89394217
               Relay_Log_File: mysqld-relay-bin.009498
                Relay_Log_Pos: 296787637
        Relay_Master_Log_File: mysql-bin.010143
             Slave_IO_Running: Yes
            Slave_SQL_Running: No
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 1677
                   Last_Error: Column 6 of table 'xtracker2.matchedVideo' cannot be converted from type 'mediumint' to type 'int(10) unsigned'
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 296787491
              Relay_Log_Space: 403968107
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 1677
               Last_SQL_Error: Column 6 of table 'xtracker2.matchedVideo' cannot be converted from type 'mediumint' to type 'int(10) unsigned'
  Replicate_Ignore_Server_Ids:

0
0
查看评论

MySql - 主从同步且只同步指定表

Note:以下只是简单记录,详情参阅参考资料。 master 1.增加一个用户并赋予REPLICATION SLAVE, REPLICATION CLIENT权限。 2.my.cnf中[mysqld]下增加: log-bin=mysql-bin   # 开启binary l...
  • w6611415
  • w6611415
  • 2016-06-01 16:35
  • 8701

mysql 主从复制双主架构在线修改表结构、在线DDL

MySQL主主复制,在线修改表结构   一直以为双主架构能解决mysql的表在线DDL的需求,但没有实际测试经验。后来发现一直的想法还是有问题的。这里做一个测试。 双主架构,在线DDL的实现步骤是:   www.2cto.com   1,首先搭建主主复制架构,...
  • clh604
  • clh604
  • 2014-02-25 10:51
  • 5303

mysql主从复制一个小错误导致从库不更新数据

由于历史遗留问题,我们的MySQL主从库的表结构不一致,主库的某个表tableA比从库表tableA少了一个字段。 当尝试在主库上更改表结构时,这行alter语句会随着binlog同步到从库,如果从库执行这行语句时出错,主从同步线程就会自动停止,那样只能人为手动处理错误,然后再启动slave上的主从...
  • qq_31648761
  • qq_31648761
  • 2016-07-22 17:50
  • 2878

MySQL 主从复制,只复制单库时,无法复制在其他库上的执行的写入操作

因为业务需要,主从复制时,只须复制主服务器上某个库的数据,此时设置replicate-do-db=db_name,就可以了.不过在校验数据的时候发现漏掉N多数据.... 检查主库binlog文件,发现很多写操作都不是在本库执行的,比如我只复制主服务器上的A库,可是有很多写入操作都是在B库上执行的,...
  • ylqmf
  • ylqmf
  • 2012-02-21 13:40
  • 2900

mysql 主从复制的过滤的相关参数

1.M上把事件从二进制日志中过滤 参数:binlog-do-db 只复制指定的数据库(主服务器配置文件里设置) binlog-ignore-db 不复制指定的数据库(主服务器配置文件里设置) 这个生产上几乎没人使用 2.S上事件从中继日志中过滤 参数:replicate_do...
  • u012422541
  • u012422541
  • 2015-03-08 14:25
  • 841

mysql5.7主从复制---基于日志的复制

mysql作为一个开源免费的数据库经常在工作中或学习中会使用到,于此记录其主从复制的步骤。               参考资料:慕课网,mysql5.7复制实战课程         ...
  • u014739462
  • u014739462
  • 2017-04-15 09:27
  • 426

MySQL主从复制-基于GTID及多线程的复制

GTID        GTID是Global Transaction identity 的缩写。字面翻译是全局事务id。其主要目的是为了简化复制。 GTID的概念      普通的复制过程中,从库通过记录主库的bi...
  • Ghost_leader
  • Ghost_leader
  • 2017-03-09 21:06
  • 551

配置MySQL GTID 主从复制

GTID是一个基于原始mysql服务器生成的一个已经被成功执行的全局事务ID,它由服务器ID以及事务ID组合而成。这个全局事务ID不仅仅在原始服务器器上唯一,在所有存在主从关系 的mysql服务器上也是唯一的。正是因为这样一个特性使得mysql的主从复制变得更加简单,以及数据库一致性更可靠。本文主要...
  • robinson_0612
  • robinson_0612
  • 2016-02-03 17:59
  • 9292

简述anr异常和解决方案

什么是ANR 如何避免它  答:Application not Responding(程序无应答) 1)主线程中尽量少做操作 2)对繁琐的功能代码分段完成 3)潜在的耗时操作,例如网络或数据库操作,或者高耗时的计算如改变位图尺寸,应该在子线程里(或者以数据库操作为例,通过异步请...
  • Liu_ser
  • Liu_ser
  • 2017-07-06 09:51
  • 218

MySQL学习笔记--主从复制故障重置操作

一. 观察复制同步 前面已经完成简单的复制同步的配置,下面我们再进行一些测试观察   1. 先在master库进行一些操作, --建库建表并插入些记录 mysql> create database licz; Query OK, 1 row affected (0.00sec) &#...
  • lichangzai
  • lichangzai
  • 2015-12-29 14:58
  • 2540
    个人资料
    • 访问:42607次
    • 积分:726
    • 等级:
    • 排名:千里之外
    • 原创:25篇
    • 转载:16篇
    • 译文:3篇
    • 评论:0条