首页 > 数据库 > MySQL > 正文

mysql公开课之 mysql5.7复制特征

2022-07-31 18:43:33
字体:
来源:转载
供稿:网友
     GTID的基础知识
     BEGIN;
     INSERT INTO innodb_tbl(…);
     INSERT INTO myisam_tbl(…);
     COMMIT;
 
     在事务中使用临时表
     BEGIN;
     INSERT INTO innodb_tbl(…);
     CREATE TEMPORARY TABLE temp1;
...
COMMIT;
 
小技巧
启用GTID前,检测系统中是否有GTID不支持的语句/事务,提前处理。
 全局系统变量enforce-gtid-consistency
 OFF 不检测是否有GTID不支持的语句/事务
 WARN 当发现不支持的语句/事务时,返回警告,并在日志中记录警告信息。
 ON 当发现语句/事务不支持GTID时,返回错误。                     ----所以上面报错了
 在线上的数据库服务器或测试环境中,开启WARN模式。
+---------+------+---------------------------------------------------------------+
| Level | Code | Message |
+---------+------+---------------------------------------------------------------+
| Warning | 1786 | Statement violates GTID consistency: CREATE TABLE ... SELECT. |
+---------+------+---------------------------------------------------------------+
2016-07-11T10:48:34.627976Z 2 [Warning] Statement violates GTID consistency: CREATE TABLE ... SELECT.
 
处理完GTID不支持的语句后,再启用GTID。
 
Mysql5.7多线程并发复制
基本搭建过程可参如下文档:
 
mysql5.6多线程复制:基于datababase/schema的
mysql5.7多线程复制:继承5.6的同时,基于事务执行的逻辑时钟(Logical Clock)的并发(5.7以来)
 
具体区别如下:
 两种类型的并发
   基于库(Database/Schema)的并发(5.6以来)
     Binlog中记录语句使用的所有的库的名字。
     不同库上的事务可以并发执行,同库的事务顺序执行。
   基于事务执行的逻辑时钟(Logical Clock)的并发(5.7以来)。
     Binlog中记录事务执行时的相对顺序信息。
     基本原理是锁的冲突检测,因此也叫基于锁的并发机制。
 
基于锁的并发复制的原理
待续。。。。
  
在线快速切换为并发复制:
mysql> STOP SLAVE SQL_THREAD;
mysql> SET GLOBAL slave_parallel_workers = 8; #并发线程数量
mysql> SET GLOBAL slave_parallel_type = “ LOGICAL_CLOCK” ; #or DATABASE      
mysql> START SLAVE SQL_THREAD
 注意:如果主5.6 从5.7使用LOGICAL_CLOCK的模式可能会出现如下类型错误
Last_Errno: 1756
 
Last_Error: … The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state. A restart should restore consistency automatically, although using non-transactional storage for data or info tables or DDL queries could lead to problems. In such cases you have to examine your data (see documentation for details).

(编辑:错新网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表