AliSQL 20171010版本发布 Sequence兼容PostgreSQL/Oracle语法和升级TLSv1.2

前端之家收集整理的这篇文章主要介绍了AliSQL 20171010版本发布 Sequence兼容PostgreSQL/Oracle语法和升级TLSv1.2前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

点击有惊喜

Abstract

为了增加Sequence使用的灵活性,以及方便从不同数据库进行迁移,Alisql增加了Sequence的兼容性,兼容了Postgresql和Oracle的Sequence语法。

为了保障数据传输安全,Alisql使用OpenSSL来代替社区版的yaSSL,并把默认的,已经被PCI DSS v3.1标准废弃的TLSv1.0升级到TLSv1.2版本。

并修复了一个Semisync的未合理处理信号的bug,
感谢boonie81提交的bugissue#68

Alisql REPO:https://github.com/alibaba/AliSQL
Alisql Release Notes:https://github.com/alibaba/AliSQL/wiki/Changes-in-AliSQL-5.6.32-(2017-10-10)

1. Sequence兼容Postgresql和Oracle使用语法

概要

为了增加sequence使用的用户体验,以及满足用户的使用习惯,Sequence新增了使用语法支持

Sequence创建语法保持不变:

CREATE SEQUENCE [IF NOT EXISTS] schema.seqName
   [START WITH <constant>]
   [MINVALUE <constant>]
   [MAXVALUE <constant>]
   [INCREMENT BY <constant>]
   [CACHE <constant> | NOCACHE]
   [CYCLE | NOCYCLE]
  ;

SHOW Syntax:
  SHOW CREATE SEQUENCE schema.seqName;
  SHOW CREATE TABLE schema.seqName;

除了原有支持查询方法

SELECT [nextval | currval | *] FOR schema.seqName;
 SELECT [nextval | currval | *] FROM schema.seqName;

新增了函数和dual表方法

SELECT nextval(seqName);  
 SELECT currval(seqName);

 SELECT seqName.nextval from dual;
 SELECT seqName.currval from dual;

2. 升级TLSv1.2

概要

原有的官方社区版 MysqL支持到 TLSv1.0 版本,但 TLSv1.0 已经证明是非安全的,存在漏洞,并已经被 PCI DSS v3.1 标准废弃了,考虑到社区的yaSSL只能最高支持TLSv1.1版本, 并且方便部署,减少依赖,Alisql直接静态编译了OpenSSL,提供TLSv1.2版本。 新增了编译方式和参数:

新增支持cmake编译参数:
-DWITH_SSL=openssl 即静态编译openSSL。

新增参数tls_version:
如果使用yaSSL编译:tls_version的默认值是:TLSv1,TLSv1.1
如果使用OpenSSL编译:tls_version的默认值是:TLSv1,TLSv1.1,TLSv1.2

例如:使用OpenSSL编译的Alisql:

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MysqL> show global variables like '%tls_%'; +---------------+-----------------------+
| Variable_name | Value | +---------------+-----------------------+
| have_tlsv1_2  | YES                   |
| tls_version | TLSv1,TLSv1.2 | +---------------+-----------------------+
2 rows in set (0.00 sec)

配置证书进行连接来查看当前连接的tls版本:

MysqL> show global variables like '%ssl%'; +---------------+--------------------------------------------+
| Variable_name | Value | +---------------+--------------------------------------------+
| have_openssl | YES | | have_ssl      | YES                                        |
| ssl_ca | /u01/ca.pem | | ssl_capath    |                                            |
| ssl_cert | /u01/server-cert.pem | | ssl_cipher    |                                            |
| ssl_crl | | | ssl_crlpath   |                                            |
| ssl_key | /u01/server-key.pem | +---------------+--------------------------------------------+

使用ca证书进行连接:
MysqL -h127.0.0.1 -ussl_user --ssl-ca=/u01/ca.pem --ssl-cert=/u01/client-cert.pem --ssl-key=/u01/client-key.pem

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MysqL> \s --------------
MysqL  Ver 14.14 Distrib 5.6.32,for Linux (x86_64) using EditLine wrapper Connection id:          4
Current database:
Current user:           ssl_user@127.0.0.1 SSL: Cipher in use is DHE-RSA-AES128-GCM-SHA256 Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.6.32 Source distribution Protocol version: 10 Connection: 127.0.0.1 via TCP/IP Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 TCP port: 3306 Uptime: 1 hour 35 min 31 sec Threads: 1 Questions: 16 Slow queries: 0 Opens: 70 Flush tables: 1 Open tables: 63 Queries per second avg: 0.002 --------------


MysqL> show status like 'ssl_version'; +---------------+---------+
| Variable_name | Value | +---------------+---------+
| Ssl_version | TLSv1.2 | +---------------+---------+
1 row in set (0.00 sec)

为了使用TLSv1.2版本,也必须升级客户端使用openSSL编译,其兼容性如下:

Compatibility

The TLS Protocol version matrix: -----------------------------------------------------------------------
 Pre_Server Post_yaSSL_Server Post_openSSL_Server
Pre_Client TLSv1.0 TLSv1.0 TLSv1.0 Post_yaSSL_Client TLSv1.0 TLSv1.1 TLSv1.1 Post_openSSL_Client TLSv1.0 TLSv1.1 TLSv1.2 ----------------------------------------------------------------------- 

3.Semisync的bug修复

概要

在系统启动过程中,Semisync模块的ACK Receiver线程在系统屏蔽信号之前boot,导致当有信号的时候,
ACK Receiver 线程接收到了信号,而不是专有信号处理线程,导致不能正常的Shut down。

再次感谢Github社区的boonie81同学提交的bug report。

点击有惊喜

猜你在找的Postgre SQL相关文章