zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

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

Oraclepostgresql 版本 发布 升级 语法 兼容 sequence
2023-09-27 14:27:24 时间
为了增加Sequence使用的灵活性,以及方便从不同数据库进行迁移,AliSQL增加了Sequence的兼容性,兼容了PostgreSQL和Oracle的Sequence语法。 为了保障数据传输安全,AliSQL使用OpenSSL来代替社区版的yaSSL,并把默认的,已经被PCI DSS v3.1标准废弃的TLSv1.0升级到TLSv1.2版本。
Abstract

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

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

并修复了一个Semisync的未合理处理信号的bug,
感谢 boonie81 提交的bug issue#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.1,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

--------------


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。


云栖重磅发布 - AnalyticDB PostgreSQL 7.0版本,企业级分析能力升级! 云原生数据仓库AnalyticDB PostgreSQL(简称ADB PG) 7.0版本发布公开测试。该版本着重于提升企业级分析能力,安全管理,执行性能等方面,整体性价比显著提升!
关于PostgreSQL数据库兼容Oracle数据库闪回查询的实现方案 注:关于在PostgreSQL上面实现Oracle数据库的闪回功能(闪回查询 闪回表 闪回删除…)的这个想法已经有很长时间了,但是鉴于本人的能力 精力和身体条件 迟迟没有完成。期间也有很多的小伙伴跟我一起研究过这个功能,但是最终都因为各种各样的问题 没有做下去。Oracle数据库闪回功能跨越版本较大,功能也比较强大 在PostgreSQL数据库上实现,需要对数据库内核有很深入的理解 两大数据库不同的底层原理也终将影响各自的实现策略,PostgreSQL标记删除就地插入的特点和基于事务快照行可见性的特性是我们可以开发PostgreSQL闪回查询的大前提。本文主要介绍 实现闪回查询的 一种实现方案
PostgreSQL , EDB EPAS PPAS(兼容Oracle) , Oracle 对比(兼容性、特性优劣势) - 企业去O,去IOE PostgreSQL , PPAS , EPAS , edb , enterprisedb , Oracle , 兼容性 , 优缺点 EPAS为EDB的PostgreSQL Oracle兼容企业版,基于PostgreSQL社区版本开发,2004年发布了第一个Oracle兼容版,已经在ORACLE兼容性上耕耘了15年。 2018年推出EPAS 11 版本,完成了 Oracle
分析型数据库(PostgreSQL版)正式推出 Greenplum 6.0 兼容版 信息摘要: 分析型数据库(PostgreSQL版)正式推出 Greenplum 6.0 兼容版。 免费公测中,邀您体验!适用客户: 互联网/游戏/政务/开发者 / 大型零售连锁商超 / 金融保险行业 / 考试认证的机构/版本/规格功能: 分析型数据库 AnalyticDB for PostgreSQL 6.0 公测发布,兼容 Greenplum 6.0 版。
强强联合 阿里云 RDS for SQL Server 与 金蝶 K/3 WISE 产品实现兼容适配 强强联合 阿里云 RDS for SQL Server 与 金蝶 K/3 WISE 产品实现兼容适配,原K/3 WISE用户通过简单配置就可以无缝搭配RDS SQL Server使用,不需再费时费力自建SQL Server数据库。
云数据库PPAS版,是阿里云与EnterpriseDB公司(简称EDB)合作基于PostgreSQL高度兼容Oracle语法的数据库服务,为用户提供易于操作的迁移工具,兼容范围涵盖:PL/SQL、数据类型、高级函数、表分区等。