主从复制环境中,通过主从库滚动升级的方式实现升级,首先升级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: