TiDB topology.yaml中配置 timezone可能性 & timestamp、datetime選用

Hi TiDB顧問們好,

TiDB版本:v4.0.8

1. Topology.yaml配置timezone可行性?

已看過TiDB文章,TiDB預設時區會設置成System,也就是會跟Linux機器時區一致

目前公司Linux機器預設時區是/Asia/Shanghai,但DB都是預設UTC時區

[dba@dev-tidb-kv3 ~]$ ls -l /etc/localtime
lrwxrwxrwx. 1 root root 35 Oct 29 10:28 /etc/localtime -> …/usr/share/zoneinfo/Asia/Shanghai

想請問顧問是否有辦法在topology.yaml設定檔內,配置Timezone相關參數,而不用在建立TiDB後
透過以下指令再後續配置全域timezone為UTC,主要是怕在建置機器後,忘記去做這個動作。

set @@time_zone = ‘UTC’;

2. 由於timestamp有2038年限制,是否在時間類型選用上,選用datetime會比較好?

ex:
CREATE TABLE IF NOT EXISTS market (
id BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_RANDOM,
market_id SMALLINT UNSIGNED NOT NULL,
outcome_type varchar(20),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY (market_id)
);

CREATE TABLE IF NOT EXISTS market (
id BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_RANDOM,
market_id SMALLINT UNSIGNED NOT NULL,
outcome_type varchar(20),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY (market_id)
);

3.是否TiDB不支援透過ALTER TABLE MODIFY COLUMN將原本TIMESTAMP轉為DATETIME?

MySQL [sport]> alter table market modify column created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT ‘資料產生時間點’;
ERROR 8200 (HY000): Unsupported modify column: type datetime not match origin timestamp

第三點 已找到官方文件TiDB的確無法直接ALTER TABLE轉TIMESTAMP TO DATETIME
reference:
https://docs.pingcap.com/zh/tidb/stable/mysql-compatibility

第一點再麻煩顧問協助解惑, 感謝!

原先使用 ansible 部署时,可以在 inventory.ini 中配置变量 timezone,在 v4.0 版本通过 tiup 部署目前暂时没有看到可以配置的选项,可以在 github 上提交一个需求。