MySQL学习笔记16分组复制的几个常见问题以及解决办法

MySQL分组复制提供的功能很强大,但是有时会出现一些问题,或者使用上存在一些限制主要包括:

(1)分组复制的限制。

(a)存储引擎只能是InnoDB。

(b)二进制日志格式只支持ROW格式。

(c)只支持使用GTID模式。

(d)每个分组最多只支持9个成员节点。

(2)数据表必须有主键。

mysql> create table test (name varchar(100));

Query OK, 0 rows affected (0.05 sec)

mysql> insert into test values( now()),(now());

ERROR 3098 (HY000): The table does not comply with the requirements by an external plugin.

查看日志:

2017-08-19T06:23:22.253181Z 13 [ERROR] Plugin group_replication reported: ‘Table test does not have any PRIMARY KEY. This is not compatible with Group Replication‘

2017-08-19T06:24:18.493848Z 13 [ERROR] Plugin group_replication reported: ‘Table test does not have any PRIMARY KEY. This is not compatible with Group Replication‘

解决办法:

创建有主键的数据表。

mysql> create table test ( name varchar(100) primary key);

Query OK, 0 rows affected (0.02 sec)

mysql> insert into test (name) values (‘001‘);

Query OK, 1 row affected (0.02 sec)

mysql> insert into test (name) values (‘002‘);

Query OK, 1 row affected (0.01 sec)

mysql> insert into test (name) values (‘003‘);

Query OK, 1 row affected (0.00 sec)

mysql> insert into test (name) values (now());

Query OK, 1 row affected (0.01 sec)

(3)数据库已经存在。

日志中出现了数据库已经存在而无法创建数据库的错误。

2017-08-19T06:51:50.784471Z 28 [ERROR] Slave SQL for channel ‘group_replication_recovery‘: Error ‘Can‘t create database ‘test‘; database exists‘ on query. Default database: ‘test‘. Query: ‘create database test‘, Error_code: 1007

2017-08-19T06:51:50.784523Z 28 [Warning] Slave: Can‘t create database ‘test‘; database exists Error_code: 1007

2017-08-19T06:51:50.784530Z 28 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log ‘binlog.000001‘ position 1082

解决办法:

mysql> stop group_replication;

Query OK, 0 rows affected (9.43 sec)

mysql> drop database test;

ERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot execute this statement

mysql> set global super_read_only=0;

Query OK, 0 rows affected (0.00 sec)

mysql> drop database test;

Query OK, 0 rows affected (0.00 sec)

mysql> set global super_read_only=1;

Query OK, 0 rows affected (0.00 sec)

mysql> set global group_replication_allow_local_disjoint_gtids_join=ON;

Query OK, 0 rows affected (0.00 sec)

mysql> start group_replication;

Query OK, 0 rows affected (3.19 sec)

为了防止在MySQL的节点在启动时出现此问题,可将下面的配置加入MySQL配置文件。

loose-group_replication_allow_local_disjoint_gtids_join=on

时间: 2024-12-28 17:30:28

MySQL学习笔记16分组复制的几个常见问题以及解决办法的相关文章

MySQL学习笔记14分组复制的部署之(一)单主模式的部署及故障恢复

1. 单主模式的部署步骤 目标:部署一个有3台主机的单主模式的MySQL分组. Primary:192.168.197.110. Secondary:192.168.197.111. Secondary:192.168.197.112. MySQL端口:3306,MySQL分组复制端口:33061. (1)主机192.168.197.110上的操作. 按照如下步骤完成MySQL配置,并且将自己加入到分组中,最后启动分组. (a)修改MySQL配置. 修改MySQL服务的配置文件. [mysqld

MySQL学习笔记13分组复制相关概念

本文主要内容如下:1.分组复制产生的背景2.几种复制技术的比较3.失效检测4.组成员5.故障容忍度6.成员的节点状态7.分组复制的两种模式8.供体节点 1.分组复制产生的背景 多个MySQL服务组成的普通的复制体系存在必须的维护管理工作.MySQL分组复制技术使用MySQL组内通信协议提供了如下的好处: (1)提供组内的MySQL服务之间的自动化协调. (2)支持单个Primary体系或者多个Primary体系的分组. (3)单个Primary体系的分组支持自动化的Primary选举. (4)多

MySQL学习笔记十七:复制特性

一.MySQL的复制是将主数据库(master)的数据复制到从(slave)数据库上,专业一点讲就是将主数据库DDL和DML操作的二进制日志传到从库上,然后从库对这些二进制日志进行重做,使得主数据库与从数据库的数据保持同步. 二.MySQL复制的一些优点: 可以将大部分的查询任务放在从库上进行,降低主库的负载,提高性能,但要注意实时性要求高的数据仍需在主库上读取. 如果主库出现了宕机,可以快速切换到从库上,提高了可用性. 可以在从库上进行数据备份,降低在备份期间对主库的影响. 将数据挖掘和分析等

MySql学习笔记(一)之DQL常用查询

MySql学习笔记(一)之DQL常用查询 前言:mysql是中小型的数据库软件,SQL语言分为DDL,DCL,DML,DQL四种,在这里重点讲解DQL的单表查询. 正文:在学习mysql单表查询之前,我们先做一些准备工作. 需要安装的软件如下: 1.mysql,版本可以选择5.1或者5.5,安装过程可以参考博客:http://www.cnblogs.com/ixan/p/7341637.html 2.mysql图形化管理软件:Navicate,sqlyog(二选一,推荐使用sqlyog). 本文

MySQL学习笔记-操作数据表中的记录

MySQL学习笔记-操作数据表中的记录 1.插入记录 INSERT INSERT [INTO] tbl_name [(col_name,...)] {VAULES|VALUE} ({expr|DEFAULT},...),(...),... 例,插入单条记录: mysql> USE testDatabase changed mysql> CREATE TABLE users(    -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,   

MySql学习笔记(转载)

/* 启动MySQL */net start mysql /* 连接与断开服务器 */mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */mysqld --skip-grant-tables-- 修改root密码密码加密函数password()update mysql.user set password=password('root'); SHOW PROCESSLIST -- 显示哪些线程正在运行SHOW VARIABLES -- /* 数据库操

MySQL学习笔记-自定义函数

MySQL学习笔记-自定义函数 1.自定义函数简介 自定义函数:用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同 自定义函数的两个必要条件:(1)参数  (2)返回值 自定义函数: 创建自定义函数 CREATE FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} routine_body 关于函数体: 1.函数体可以由合法的SQL语句构成: 2.函数体可以是

MySQL学习笔记-数据类型与操作数据表

MySQL学习笔记-数据类型与操作数据表 数据类型:  1.字符型  2.整型  3.浮点型  4.日期时间型 数据表操作:  1.插入记录  2.查找记录 记录操作:  1.创建数据表  2.约束的使用 1.数据类型 [1]整型: 数据类型 存储范围 字节 TINYINT 有符号型:-128~127(-2^7~2^7 -1),无符号型0~255(0~2^8 -1) 1 SMALLINT 有符号型:-2^15~2^15 -1,无符号型0~2^16 -1 2 MEDIUMINT 有符号型:-2^2

MySQL学习笔记—SQL服务器模式汇总

MySQL学习笔记-SQL服务器模式汇总 MySQL服务器可以以不同的SQL模式来操作,并且可以为不同客户端应用不同模式.这样每个应用程序可以根据自己的需求来定制服务器的操作模式. 模式定义MySQL应支持哪些SQL语法,以及应执行哪种数据验证检查.这样可以更容易地在不同的环境中使用MySQL,并结合其它数据库服务器使用MySQL. 你可以用–sql-mode="modes"选项启动mysqld来设置默认SQL模式.如果你想要重设,该值还可以为空(–sql-mode ="&q