AliSQL20171010版本釋出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 提交的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
--------------
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。
相關文章
- oracle sequence語法Oracle
- 分階段釋出,讓版本升級更平穩
- oracle小版本升級patch過程和分析Oracle
- 雲資料庫PostgreSQL版重磅升級開年釋出會資料庫SQL
- oracle版本升級路線圖Oracle
- POSTGRESQL 小版本升級失敗後的原因分析SQL
- PostgreSQL升級方案SQL
- 使用者體驗再升級!Erda 1.2 版本正式釋出
- Weex系列(9) —— Weex和安卓升級相容安卓
- Python升級和相容性配置Python
- 【Oracle版本升級圖--小麥苗】Oracle
- PostgreSQL 序列(Sequence)SQL
- PostgreSQL sequence (一)SQL
- 12. Oracle版本、補丁及升級——12.3. 升級Oracle
- Oracle 12.1.0.2.0 版本釋出Oracle
- Swoole v4.5.9 版本釋出,相容 PHP8!PHP
- Oracle10g升級時出現主目錄不相容錯誤Oracle
- oracle 11.2.0.2 版本for aix和hp平臺釋出OracleAI
- 最穩定可靠,PostgreSQL 12.1版本正式釋出!SQL
- PostgreSQL10高可用本地SSD盤版本釋出SQL
- async語法升級踩坑小記
- oracle 9.2.0.1 升級到oracle 9.2.0.8方法Oracle
- node 版本升級
- gcc版本升級GC
- NiFi版本升級Nifi
- 亞馬遜釋出升級版Fire TV電視棒:支援Alexa語音亞馬遜
- Apache Lucene 5.0釋出,不再相容3.X系列版本Apache
- 流程+許可權全面升級,LeaRun敏捷開發框架,.Net Core版本釋出敏捷框架
- [重磅釋出] PerfDogService 商業版本正式開啟,功能優化,體驗升級!Gse優化
- 【版本升級】介面控制元件DevExpress釋出v17.2.8|附下載控制元件devExpress
- oracle版本升級:從11.2.0.1到11.2.0.3Oracle
- 阿里雲 EMAS Serverless 升級釋出阿里Server
- 重磅升級!TDengine3.0 正式釋出
- A Oracle Data Guard Broker 升級和降級Oracle
- PostgreSQL 13.0正式版本釋出!更多新特性來襲SQL
- 升級到oracle 12c 的相容性矩陣Oracle矩陣
- POSTGRESQL postgresql 升級的需求來自哪裡SQL
- CFHD六月年度版本釋出,巨人城全面升級震撼歸來