MySQL 5.1.69/5.5.31/5.6.11 三版连发

2020-02-14 12:49栏目:龙电竞官网
TAG:

图片 1

基于GTID的复制

行草公司的MySQL研究开发公司前几日带给了多个分支更新版本——5.1.69、5.5.31和5.6.11。在这里五个本子中,天性均获得了提拔,且都不再动用暗许的OpenSSL压缩。这个本子的要紧改良如下:MySQL 5.1.69急需专一的是,新本子在复制操作时,允许使用基于语句记录将表复制到一个同名的视图,但假使利用基于行记录复制时则只怕诱致从服务器报错。现在MySQL会在实行其它DML此前检查评定对象对象类型,假若从服务器上的靶子不是表时则会报错。MySQL 5.5.31新本子修改了KEY分区哈希函数,要是同numeric、date、time、ENUM和SET columns一齐利用,并经过KEY在随便受影响的列类型中让表使用分区或子分区,则该操作与MySQL 5.1不相配。那是因为通过MySQL 5.5或更加高版本总结的分区ID与5.1本子总计出来的两样所致。MySQL 5.6.11复制操作时,GTID_SUBTRACT()和GTID_SUBSET(卡塔尔函数在此之前只可以在libmysqld库被营造并援助复制时选用。今后风流罗曼蒂克旦使用libmysqld库,就足以运用那三个函数。今后服务器向顾客端错误地发送多少个超时密码时,会冒出错误代码E中华V_MUST_CHANGE_PASSWORD_LOGINmysql_config_editor现在帮衬--port 和 --socket选项,用于钦定TCP/IP端口号和Unix socket文件名。mysqlcheck现在有三个新的--skip-database选项,用于跳过检查有个别数据库。而外,那多个本子修复了汪洋的bug,详细音信:Changes in MySQL 5.1.69Changes in MySQL 5.5.31Changes in MySQL 5.6.11下载地址:

简介

依靠GTID的复制是MySQL 5.6后新增添的复制格局.

GTID (global transaction identifierState of Qatar 即全局职业ID, 保险了在种种在主库上提交的业务在集群中有一个唯风度翩翩的ID。

在本来基于日志的复制中, 从库需求报告主库要从哪些偏移量进行增量同步, 就算内定错误会促成数据的疏漏, 进而变成数据的不及致.

而依据GTID的复制中, 从库会报告主库已经实行的业务的GTID的值, 然后主库会将具有未推行的事情的GTID的列表重临给从库. 并且可以保障同二个事务只在钦定的从库推行贰遍。

GTID开启配置如下:

SHOW VARIABLES LIKE '%GTID%';

结果:

图片 2

 

 

实战

1、在主库上建设构造复制账户并给予权限

依靠GTID的复制会自动地将未有在从库举行的事体重播, 所以不要在此外从库上确立平等的账号. 就算建构了同风流罗曼蒂克的账户, 有望招致复制链路的错误.

mysql> create user 'repl'@'172.%' identified by '123456';

留目的在于生养上的密码必需比照相关标准以达到一定的密码强度, 而且规定在从库上的特定网段上本事访谈主库.

mysql> grant replication slave on *.* to 'repl'@'172.%';

翻看顾客

mysql> select user, host from mysql.user;
+-----------+-----------+
| user  | host  |
+-----------+-----------+
| prontera | %   |
| root  | %   |
| mysql.sys | localhost |
| root  | localhost |
+-----------+-----------+
4 rows in set (0.00 sec)

查阅授权

mysql> show grants for repl@'172.%';
+--------------------------------------------------+
| Grants for repl@172.%       |
+--------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.%' |
+--------------------------------------------------+
1 row in set (0.00 sec)

2、配置主库服务器

[mysqld]
log_bin = /var/log/mysql/mysql-bin
log_bin_index = /var/log/mysql/mysql-bin.index
binlog_format = row
server_id = 101
gtid_mode = ON
enforce_gtid_consistency = ON
#log_slave_updates = ON

NOTE: 把日记与数据分开是个好习惯, 最棒能松手不一致的多寡分区

enforce_gtid_consistency 强迫GTID后生可畏致性, 启用后以下命令不恐怕再利用:

1、create table ... select ...

例如:

mysql> create table dept select * from departments;
ERROR 1786 (HY000): Statement violates GTID consistency: CREATE TABLE ... SELECT.

因为实际是五个独立事件, 所以只好将其拆分先创造表, 然后再把数量插入到表中。

2、事务内部无法创建一时表create temporary table

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> create temporary table dept(id int);
错误代码: 1787
When @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1, the statements CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE can be executed in a non-transactional context only, 
and require that AUTOCOMMIT = 1. These statements are also not allowed in a function or trigger because functions and triggers are also considered to be multi-statement transactions.

下面的大错特错中涉嫌,当专业是全自动提交的,是足以施行的,如下:

版权声明:本文由龙竞技官网发布于龙电竞官网,转载请注明出处:MySQL 5.1.69/5.5.31/5.6.11 三版连发