美文网首页爱编程,爱生活
mysql 数据库主-主模式常见问题以及修复方式

mysql 数据库主-主模式常见问题以及修复方式

作者: 熬夜的猫头鹰 | 来源:发表于2018-06-16 23:42 被阅读17次

mysql 数据库主-主模式常见问题以及修复方式

上面的图就是主-主模式原理简介

数据库A可以读(R)可以写(W),数据库B同样可以读(R)写(W)。
应用在会将数据随机的写入数据库A或者是数据库B,然后数据再将自己拥有的数据同步到彼此。比如现在在数据库A中的Test表中写入了一条记录,那么数据库A会将这条记录同步到B。但是主-主模式因为是双写双读,所以容易产生同步问题:
比如说数据库中有一张表,表的数据结构中有一个联合主键 ,假设一种情况,如果在设计接口的时候不是幂等的情况下,很有可能将两条相同联合主键的记录写入到数据库中;
但是两条相同的数据恰巧是A中写入一条B中写入一条,此时A向数据库B中同步数据的时候,因为数据库B中已经存在了一条相同主键的数据,所以就会导致B中主键冲突,同理数据库B中向A中同步的时候,也会出现这种问题。

解决办法如下:

mysql在主从复制过程中,由于各种的原因,从服务器可能会遇到执行BINLOG中的SQL出错的情况,在默认情况下,服务器会停止复制进程,不再进行同步,等到用户自行来处理。
slave-skip-errors的作用就是用来定义复制过程中从服务器可以自动跳过的错误号,当复制过程中遇到定义的错误号,就可以自动跳过,直接执行后面的SQL语句。
slave_skip_errors选项有四个可用值,分别为:off,all,ErorCode,ddl_exist_errors。
默认情况下该参数值是off,我们可以列出具体的error code,也可以选择all,mysql5.6及MySQL Cluster NDB 7.3以及后续版本增加了参数ddl_exist_errors,该参数包含一系列error code(1007,1008,1050,1051,1054,1060,1061,1068,1094,1146)
一些error code代表的错误如下:

  • 1007:数据库已存在,创建数据库失败
  • 1008:数据库不存在,删除数据库失败
  • 1050:数据表已存在,创建数据表失败
  • 1051:数据表不存在,删除数据表失败
  • 1054:字段不存在,或程序文件跟数据库有冲突
  • 1060:字段重复,导致无法插入
  • 1061:重复键名
  • 1068:定义了多个主键
  • 1094:位置线程ID
  • 1146:数据表缺失,请恢复数据库
  • 1053:复制过程中主服务器宕机
  • 1062:主键冲突 Duplicate entry '%s' for key %d

my.cnf中的写法:

slave_skip_errors=1062,1053
slave_skip_errors=all
slave_skip_errors=ddl_exist_errors

作为mysql启动参数的写法:

--slave-skip-errors=1062,1053
--slave-skip-errors=all
--slave-skip-errors=ddl_exist_errors

从数据库中查看该参数的值:

mysql> show variables like 'slave_skip%';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| slave_skip_errors | 1007  |
+-------------------+-------+

相关文章

  • mysql 数据库主-主模式常见问题以及修复方式

    mysql 数据库主-主模式常见问题以及修复方式 上面的图就是主-主模式原理简介 数据库A可以读(R)可以写(W)...

  • mysql 主主模式+keeplived

    1、主主模式 2、keeplived 主从关系报错信息处理: 临时解决:stop slave;set global...

  • 【4/30】数据库服务器集群及相关

    今天学习了数据库服务器集群的搭建,数据库服务器集群主要有几种模式:主备模式,其一主多从模式,主主模式。通过以上几种...

  • MySQL ( MGR ) 08-(故障切换)

    1.单主模式1.1 模拟主节点挂掉(xag211) 1.2 原主节点故障修复(xag211)即启动 2.要是三个节...

  • 分布式ID

    前言 1.数据库自增ID 为了解决数据库可靠性问题,可尝试下述[数据库多主模式] 2.数据库多主模式 为了解决上面...

  • MySQL主主模式+Keepalived高可用

    今天闲来无事,打算搭建一个MySQL的高可用架构,采用的是MySQL的主主结构,再外加Keepalived,对外统...

  • 查询MYSQL表注释以及字段注释

    查询MYSQL数据库所有表名以及表注释 查询MYSQL数据库所有字段名以及字段注释

  • PHP与数据库

    PHP与数据库PHP有三种方式操作MySQL数据库1.PHP有三种方式操作MySQL数据库(1)MySQL扩展库(...

  • MySQL主主复制详细教程

    配置说明 主数据库1: 192.168.245.22主数据库2: 192.168.245.33 1、修改MySQL...

  • MySQL双主一致性架构优化

    一、双主保证高可用 MySQL数据库集群常使用一主多从,主从同步,读写分离的方式来扩充数据库的读性能,保证读库的高...

网友评论

    本文标题:mysql 数据库主-主模式常见问题以及修复方式

    本文链接:https://www.haomeiwen.com/subject/darieftx.html