TDSQL外置
一、前置约束
- 仅支持ONES安装时指定;
- 要求ONES版本不低于3.14.29,适配版本为TDSQL MySQL(MySQL 8.0);
- 需提供TDSQL数据库root用户密码。
二、准备外置数据库
请自行准备好一个TDSQL数据库实例,最好是一个新的实例,不要使用已有的实例,以免影响已有业务。
调整TDSQL数据库配置
| 参数 | ONES 配置 |
|---|---|
| bulk_insert_buffer_size | 8388608 |
| character_set_server | utf8mb4 |
| collation_server | utf8mb4_unicode_ci |
| explicit_defaults_for_timestamp | ON |
| innodb_large_prefix | ON |
| innodb_lock_wait_timeout | 120 |
| innodb_max_dirty_pages_pct | 90 |
| interactive_timeout | 28800 |
| join_buffer_size | 8192kb |
| max_connect_errors | 6000 |
| net_read_timeout | 600 |
| net_write_timeout | 600 |
| query_cache_size | 8M |
| read_buffer_size | 2M |
| session_track_gtids | OWN_GTID |
| sort_buffer_size | 8M |
| tmp_table_size | 16M |
| wait_timeout | 28800 |
| transaction_isolation | REPEATABLE-READ |
| innodb_flush_log_at_trx_commit | 2 |
| init_connect | 'SET NAMES utf8mb4' |
| read_rnd_buffer_size | 8M |
三、使用外置TDSQL初始化安装ONES
请先根据安装文档部署ONES,当部署到“配置 ONES”这一步时,根据如下步骤继续部署。
当前版本只支持单机场景下使用外置TDSQL初始化安装ONES。
通过命令行配置 ONES
执行下方的命令后,根据命令行提示输入所需配置项的值:
ones-ai-k8s.sh make init-config
示例输出:
[root@localhost config]# ones-ai-k8s.sh make init-config
kubectl rollout status deploy -n ones-installer installer-api --timeout=60s
deployment "installer-api" successfully rolled out
kubectl get po -n ones-installer -l app=installer-api --sort-by='{.metadata.creationTimestamp}' -o jsonpath='{.items[-1].metadata.name}'
kubectl exec -n ones-installer -it installer-api-74cc465bcb-wv6qv -c installer-api -- bash -c "cd /data/ones/ones-ai-k8s && make init-config"
make[1]: Entering directory '/data/ones/ones-ai-k8s'
python3 script/app/files/init-config.py \
--cmd_to_list_env="make get_value GET_ALL_CONFIG=true --no-print-directory" \
--config_rules=default/init-config/init-config-rules.yaml
local_env by [sh -c make get_value GET_ALL_CONFIG=true --no-print-directory]
Notice!!!
Please read the Terms of Service( https://ones.cn/service-terms ) and Privacy Policy( https://ones.cn/privacy-policy ) of ONES.
Please enter 'yes' to save the configuration, otherwise exit: yes
# [defaultLanguage] Team's default language. For example 'zh(Chinese)', 'en(English)', 'ja(Japanese)' etc.
# [defaultLanguage] When entering an empty value, use the system-generated value 'zh'
please input [defaultLanguage]:
...more
修改外置数据库相关配置
请根据实际情况调整 ONES 侧需要的外置数据库配置(config/private.yaml),参数调整请参考MySQL外置的第三章第4节。
修改配置
进入操作机:
ones-ai-k8s.sh
编辑配置文件:
vi config/private.yaml
# 如 果是 TDSQL 8,需要配置 migrationRuntime
migrationRuntime: "img.ones.pro/library/mysqldump8:8.0.34_2" # 需要手动拉取这个镜像放到环境中
命令行安装启动ONES
上一步已经进入了操作机,直接执行下方的命令即可; 如果是在宿主机上,可以执行 ones-ai-k8s.sh bash script/ones/deploy-ones.sh; 等待脚本执行完成后,代表ONES部署完成。后续登录ONES,以及验证系统是否正常部署完成请参考登录 ONES 文档。
bash script/ones/deploy-ones.sh
四、内置Mysql迁移到外置TDSQL
- 根据备份文档完成 ONES 数据备份。
- 补充数据库相关配置
vi config/private.yaml;已有的配置项请先注释,具体配置同第三章。 - 执行
make init-db。 - 参考MySQL外置的“导出 mysql 数据”章节、先从 MySQL 导出得到 SQL 文件,注意生成的 mysqldump 指令中不要出现
--master-data、--single-transaction和--set-gtid-purged=OFF这三个参数,大致内容如下:导出完成后再走外置 MySQL 导入数据的流程将数据导入到 TDSQLmysqldump --host=localhost --port=3306 --user=root --password=${mysqlRootPassword} \
--max-allowed-packet=32M --skip-lock-tables --quick \
--extended-insert --hex-blob --default-character-set=utf8mb4 --databases project wiki wizeditor > /tmp/all.sql - 最后执行
make rebuild-cdc,然后即可使用。