近日一朋友发了一个问题,大致的描述情况如下:我主库加了字段为啥从库没有添加呢?

看到朋友的问题,第一想法就是,是不是从库配置了“--replicate-do-”类似的参数呢,通过确认,果不其然。配置了“--replicate-do-db”和“--replicate-do-talbe”参数。那么原因很简单,执行alter 的时候不在当前库了。所以,对于“--replicate-do-” 此类的参数来讲慎用,如果要用,一定要注意语句,一定要在当前库的环境下执行。

如果不想修改语句的话,是不是就没有办法解决呢?结果肯定是不是。如果要跨裤操作语句还要求同步的话,就需要“--replicate-wild-do-table”来了,跨库操作没有问题。但是它也有他的局限于,不能用于stored procedures and functions, or events。详细的参数介绍,可以参考官网:https://dev.mysql.com/doc/refman/5.7/en/replication-options-slave.html#option_mysqld_replicate-wild-do-table

字段的问题,本以为这就解决了。没想到还有问题,为啥从库没有字段,主从复制还不报错呢?

主库表结构不一致,但是从库不报错,我也是第一次碰到。话不多话,赶紧找机器去测试验证下:

Master表结构:CREATE TABLE `t` (

`id` int(11) DEFAULT NULL,

`name` char(4) DEFAULT NULL,

`phone` int(11) DEFAULT NULL,

`address` char(6) DEFAULT NULL

) ENGINE=InnoDB

Slave表结构(Master的基础上删除最后一列):alter table t drop column address;

Query OK, 0 rows affected (0.51 sec)

Records: 0 Duplicates: 0 Warnings: 0

Master操作:mysql> insert into t(id,name,phone,address) values(1,'abcd',123456789,'hahah');

Query OK, 1 row affected (0.05 sec)

Slave查看数据:mysql> select * from t ;

+------+------+-----------+

| id | name | phone |

+------+------+-----------+

| 1 | abcd | 123456789 |

+------+------+-----------+

1 row in set (0.01 sec)

???很奇怪吧?尽然从库插入成功了,把末尾的col数据丢弃了。我们继续操作

Slave删除字段name:mysql> alter table t drop column name;

Query OK, 0 rows affected (0.46 sec)

Records: 0 Duplicates: 0 Warnings: 0

Master插入数据:mysql> insert into t(id,name,phone,address) values(2,'cde',1234567890,'new');

Query OK, 1 row affected (0.08 sec)

Slave查看数据:mysql> select * from t ;

+------+-----------+

| id | phone |

+------+-----------+

| 1 | 123456789 |

+------+-----------+

1 row in set (0.00 sec)

从库数据还是只有第一条,第二条数据没有。肯定报错了。报错信息如下:worker 1 failed executing transaction '43bb72ce-c48d-11e9-b618-00e04c01219a:4' at master log mysql-bin.000003, end_log_pos 1238; Column 1 of table 'tslave.t' cannot be converted from type 'char(16(bytes))' to type 'int(11)'

通过上面的报错解释不了。主从复制难道主从表结构不一致也可以么?心中的疑问越来越多。后来只能去翻看手册,最后发现如下解释:Source and target tables for replication do not have to be identical. A table on the master can have more or fewer columns than the slave's copy of the table. In addition, corresponding table columns on the master and the slave can use different data types, subject to certain conditions.

是不是很惊讶?看了这句我大致懂了。但是没搞明白,MySQL为什么要这么去做啊?求大神们来给我讲下吧。谢谢~

mysql replicate函数_【MySQL】主从复制参数“--replicate-do-*”请谨慎使用相关推荐

  1. mysql geo 函数_地理位置geo处理之mysql函数

    目前越来越多的业务都会基于LBS,附近的人,外卖位置,附近商家等等,现就讨论离我最近这一业务场景的解决方案. 原文:https://www.jianshu.com/p/455d0468f6d4 目前已 ...

  2. mysql geo 函数_【后端开发】地理位置geo处理之mysql函数的详细介绍(附代码)

    本篇文章给大家带来的内容是关于地理位置geo处理之mysql函数的详细介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 目前越来越多的业务都会基于LBS,附近的人,外卖位 ...

  3. MySQL 创建函数, MySQL定义函数实现汉字转拼音 MySQL汉字转拼音MySQL汉字生成拼音字符串

    MySQL 创建函数, MySQL定义函数实现汉字转拼音 MySQL汉字转拼音 一.MySQL创建函数 1.语法 CREATE FUNCTION fun_name([paramName type , ...

  4. mysql replicate函数_使用mysqlreplicate命令快速搭建 Mysql 主从复制

    MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对MySQL有更高性能.更高可靠性要求的场合. 与之对应的是另一个同步技术是MyS ...

  5. mysql中没有内置函数_[mysql]MySQL中的内置函数

    用在select  语句,以及子句where   order  by    hacing  中    update   delete 函数中可以将字段名作为字段来用,变量的值就是这个列对应的每一行记录 ...

  6. mysql开窗函数_魔幻的SQL开窗函数,为您打开进阶高手的一扇天窗

    经常写SQL脚本的朋友,通常会有一种迷之自信,似乎各种问题都有自己的一套解决方案.时间长了,人的思维可能会逐渐固化.思维固化能提高工作效率,但从某些角度看是很可怕的,我们也同时会失去接受新知识的内在动 ...

  7. mysql 本周函数_【转】MySQL时间函数的使用:查询本周、下周、本月、下个月份的数据...

    MySQL时间函数的使用:查询本周.上周.本月.上个月份的数据[转] /*今天*/ select * from 表名 where to_days(时间字段) = to_days(now()); /*昨 ...

  8. mysql算法函数_十个实用MySQL函数

    本文首发于个人微信公众号<andyqian>,期待你的关注! 前言 继上一次<十个实用MySQL命令>后,今天奉上十个实用MySQL函数.下面都是一些比较常用且简单的函数,在工 ...

  9. mysql异常恢复工具_[MySQL异常恢复]mysql ibd文件恢复

    在mysql中由于某种原因保存有ibd文件,但是表已经被删除或者frm文件损坏亦或者ibdata文件损坏/丢失等.本文模拟在这种情况下,通过mysql自身技术即可完成ibd文件恢复. 测试环境mysq ...

  10. mysql 文本备份_[MySQL]用mysqldump制作文本备份_MySQL

    mysqldump bitsCN.com [MySQL] 用mysqldump制作文本备份 在使用mysqldump备份MySQL时,备份文件是SQL格式的文本文件,它由一系列create table ...

最新文章

  1. ViewGroup的Touch事件分发(源码分析)
  2. Maya摄像机动画技能学习教程
  3. Chisel3 - Tutorial - VendingMachine
  4. linux去重文件第一列,科学网—Linux实用命令 - 刘洪波的博文
  5. 那个学Python 的同龄人,也许已经超越你了!
  6. Style和Script中的注释问题。
  7. matlab二维函数的傅立叶变换,二维傅里叶变换和滤波(Two
  8. 导出excel文件对空值用“--“占位处理
  9. 计算机限制无法压缩,电脑上文件夹压缩不了怎么办
  10. Cannot mix different versions of joi schemas解决方案
  11. 唐诗三百首的爬取以及出现最多字数的统计
  12. 2017年中国银行业软件测试成果交流会”在京成功举办-「D-Uni」
  13. LAMP虚拟主机架设论坛
  14. python爬取音乐并保存的格式_python爬取QQ音乐歌单歌曲保存到本地,json解析
  15. 关于POJO 即DO/DTO/BO/VO/AO说明
  16. 量子计算机预言未来,科学家预测,未来5-10年内,将出现家用量子计算机
  17. C# Hex工具类(可用于mac转化)
  18. CentOS7.4系统中安装Eclipse
  19. python12306抢学生票票下载,基于Python3.6+splinter实现自动抢火车票
  20. java计算机毕业设计校园约自习网站源码+mysql数据库+lw文档+系统+调试部署

热门文章

  1. 基于MATLAB/Simulink的太阳能光伏MPPT控制蓄电池充电仿真模型
  2. 哪些企业使用CEGBU低代码配置平台能够获得最大的投资回报率(ROI)
  3. 求大神帮忙看一下sql
  4. 拼图游戏 Vue 版本
  5. NRF52840 Reset 复位后板子起不来及解决方法
  6. 解决(精简版Excel+2007)中,不能跨表引用公式和复制问题
  7. 【调剂】四川大学计算机学院(软件学院)2021年 非全日制硕士研究生接受调剂生的通知...
  8. python ppt转pdf 苹果系统_批量将ppt转换为pdf的Python代码 只要27行!
  9. git爬坑不完全指北(一):Permission to xxx.git denied to user的解决方案
  10. Windows 7 自动隐藏任务栏 (auto-hide the taskbar)