大坑:用SQLyog连mysql的部分操作不能同步到从库

线上有个业务是一主两从,今天下午有一个从库突然告警:1677错误,提示数据类型不能从smallint改成varchar(20),以前有遇到过这样的错误,设置参数set global slave_type_conversions=ALL_NON_LOSSY;重新start slave就可了,但是这次改了参数还是没有效果。

经过询问,dba都没有改过表结构,只是开发人员调整了栏位的顺序。查看报错的表的表结构,发现这个从库的表结构和主库的不一样。解析日志发现relaylog里面有相关的alter table的操作,但是从库就是没有执行。比较奇怪的是另外那个从库很正常。

刚开始怀疑是配置文件参数设置有问题,但是对比后发现两个从库的配置是一样的,后来重新做了从库,然后让开发重新用工具给表的栏位重新排序,查看两个从库发现之前报错的那个从库现在没有报错,但是栏位的顺序还是没有变更。

查看数据库的版本,主库为5.5.33,正常从库也是5.5.33,报错从库为5.6.23.刚开始怀疑是不是因为版本不一样的问题,于是在命令行执行alter table语句,发现从库没有异常。

最后开始怀疑是工具的问题,我先用navicat更改表结构,复制没有问题;

用sqlyog v8.14版本操作,复制没有问题;

叫开发用navicat操作没有问题;

叫开发用sqlyog操作,之前的从库又没能复制过去。

查看开发的sqlyog版本为v11.24版本。

叫开发换成其它版本的sqlyog操作,复制没有问题。

这个问题不是很好排查,因为开发都是通过工具连的数据库,很少出现这个问题。

通过这次的问题,发现用工具连数据库还是会有很多隐患,要从根本上解决这个问题只能严格控制开发权限,只给他们select权限。

dba平时操作数据库的时候尽量在命令行操作。

时间: 2024-10-28 15:38:41

大坑:用SQLyog连mysql的部分操作不能同步到从库的相关文章

关于SQLyog操作Mysql双主、主从同步异常问题

本人遇到的问题发生在mysql 5.6.21 M-M中: Master1 Server version: 5.6.21-enterprise-commercial-advanced-log MySQL Enterprise Server - Advanced Edition (Commercial) Master2 Server version: 5.6.21-enterprise-commercial-advanced-log MySQL Enterprise Server - Advance

Mysql数据库常用操作

1.备份数据库 [[email protected] ~]# mysqldump -h 192.168.0.8 -uroot  -p'123456'  user >user.sql 2.查看mysql数据库字符集设置 mysql> show variables like 'character_set_%';+--------------------------+----------------------------+| Variable_name            | Value    

MySQL查询in操作 查询结果按in集合顺序显示_Mysql_脚本之家

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

mysql数据库表操作及授权

表操作:增删改查 把/etc/passwd文件的内容导入 passwd表里. mysql>load data infile"/etc/passwd" into table passwd fields terminated by ":"; 基于前面的passwd表,完成下列操作: 1:列出uid低于500且3个字母的用户 mysql> select name from passwd where uid<500 and name like "

mysql 命令行操作

导入数据库: 1 mysql>use ygeshop; ygeshop为数据库名 2 mysql>source 导入的文件名; 如我输入的命令行:mysql>source ygeshop.sql; 1. 显示数据库列表. show databases; 缺省有两个数据库:mysql和test. mysql库存放着mysql的系统和用户权限信息,我们改密码和新增用户,实际上就是对这个库进行操作. 2. 显示库中的数据表: use mysql; show tables; 3. 显示数据表的结

mysql的基础操作指令整理|环境redhat6

1.安装 yum-y install mysql mysql-server service mysqld start|stop|restart        ##启动|停止|重启 chkconfig mysqld on|off                  ##开机启动|关闭 此时输入:mysql就能启动进入(记得是start状态) 2.改密 mysqladmin –uroot password             ##创建密码 mysqladmin–uroot –pxxoo passw

ubuntu在线安装Mysql及一些操作

ubuntu在线安装Mysql及一些操作 1.安装Mysql用到的3个命令: 打开终端,输入: sudoapt-get install mysql-server 再输入: sudoapt-get install mysql-client 再输入 : sudo apt-get install libmysqlclient-dev 2.具体安装步骤: 安装mysql-server: 设置mysql登陆密码: 确认密码: 安装结果: 3.安装 mysql-client: 4.安装libmysqlcli

服务器用JDBC对mysql数据库进行操作

1:获取数据库连接 Connection connection=getConnection(); 2:准备SQL语句 3:调用Connection的creatStatement()方法获取Statement对象执行SQL语句 (注:Statement对象处理的SQL语句只能是INSERT,UPDATE或DELETE) statement=connection.createStatement(); statement.execute(SQL); 4:关闭Statement对象 5:关闭数据库连接

MySql的事务操作与示例

事务就是一个逻辑工作单元的一系列步骤.事务是用来保证数据操作的安全性 事务的特征: Atomicity(原子性) Consistency(稳定性,一致性) Isolation(隔离性) Durability(可靠性) [事务只针对对数据数据产生影响的语句有效] show engines  //查看mysql锁支持的数据引擎 MyISAM不支持事物,InnoDB支持事物 默认情况下,MySQL将以自动提交模式运行,这意味着没一条小命令都将当做一个只有一条命令的事物来执行. 如果要让mysql支持支