PolarDB开源数据库进阶课4 计算节点 Switchover

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 本文介绍了如何在PolarDB RAC一写多读集群中进行计算节点的Switchover操作。实验环境依赖于Docker容器中的loop设备模拟共享存储,确保Primary节点停止写入后,再将Replica节点提升为Primary节点,避免多节点同时写入导致的数据异常。文中详细描述了Switchover的具体步骤、常见问题及解决方案,并提供了相关配置和命令示例。通过这些步骤,可以顺利完成节点角色的切换,确保集群的高可用性和数据一致性。

背景

穷鬼玩PolarDB RAC一写多读集群系列已经写了3篇:

本篇文章介绍一下如何进行PolarDB计算节点的Switchover? 实验环境依赖 《在Docker容器中用loop设备模拟共享存储》 , 如果没有环境, 请自行参考以上文章搭建环境.

还需要参考如下文档:

DEMO

b站视频链接

Youtube视频链接

只有当 Primary 节点停止写入后,才可以将 Replica 节点提升为 Primary 节点,否则将会出现集群内多个节点同时写入存储的情况。当数据库检测到出现多节点写入时,将会导致运行异常。

1、停止p1 primary

# 进入pb1容器  
docker exec -ti pb1 bash  
  
# 停止primary  
pg_ctl stop -m fast -D ~/primary  
  
日志如下:   
waiting for server to shut down.... done  
server stopped

2、promote p2 replica 切记: promote之前请再三确认RW节点已经停止了, 因为promote的命令没有做保护(激活过程中polardb和pfs都没有所谓的分布式排他锁), 会直接激活, 所以可能出现多个RW的情况, 数据有被破坏的可能.

# 进入pb2容器  
docker exec -ti pb2 bash  
  
# promote replica  
pg_ctl promote -D ~/replica1

出现报错如下:

[PFSD_SDK INF Dec 18 14:33:38.327335][859]pfsd_umount_force 247: pbdname nvme1n1  
[PFSD_SDK INF Dec 18 14:33:38.330154][859]chnl_connection_release_shm 1164: client umount return : deleted /var/run/pfsd//nvme1n1/859.pid  
[PFSD_SDK INF Dec 18 14:33:38.330163][859]pfsd_umount_force 261: umount success for nvme1n1  
waiting for server to promote...[PFSD_SDK INF Dec 18 14:33:38.444794][859]pfsd_umount_force 247: pbdname nvme1n1  
[PFSD_SDK INF Dec 18 14:33:38.446306][859]chnl_connection_release_shm 1164: client umount return : deleted /var/run/pfsd//nvme1n1/859.pid  
[PFSD_SDK INF Dec 18 14:33:38.446314][859]pfsd_umount_force 261: umount success for nvme1n1  
.[PFSD_SDK INF Dec 18 14:33:38.690673][859]pfsd_umount_force 247: pbdname nvme1n1  
[PFSD_SDK INF Dec 18 14:33:38.693022][859]chnl_connection_release_shm 1164: client umount return : deleted /var/run/pfsd//nvme1n1/859.pid  
[PFSD_SDK INF Dec 18 14:33:38.693035][859]pfsd_umount_force 261: umount success for nvme1n1  
[PFSD_SDK INF Dec 18 14:33:38.917831][859]pfsd_umount_force 247: pbdname nvme1n1  
[PFSD_SDK INF Dec 18 14:33:38.919652][859]chnl_connection_release_shm 1164: client umount return : deleted /var/run/pfsd//nvme1n1/859.pid  
[PFSD_SDK INF Dec 18 14:33:38.919664][859]pfsd_umount_force 261: umount success for nvme1n1  
[PFSD_SDK INF Dec 18 14:33:39.364163][859]pfsd_umount_force 247: pbdname nvme1n1  
[PFSD_SDK INF Dec 18 14:33:39.390100][859]chnl_connection_release_shm 1164: client umount return : deleted /var/run/pfsd//nvme1n1/859.pid  
[PFSD_SDK INF Dec 18 14:33:39.390109][859]pfsd_umount_force 261: umount success for nvme1n1  
 stopped waiting  
pg_ctl: server did not promote in time

数据库日志如下:

$PGDATA/pg_log/postgresql-2024-12-18_142905_error.log  
  
849     2024-12-18 14:33:38.330 CST LOG:  received promote request  
849     2024-12-18 14:33:38.330 CST LOG:  async lock replay: startup@polar_alr_terminate_worker: terminate worker  
849     2024-12-18 14:33:38.333 CST LOG:  redo done at 0/484CAF88 system usage: CPU: user: 0.00 s, system: 0.00 s, elapsed: 263.78 s  
849     2024-12-18 14:33:38.333 CST LOG:  last completed transaction was at log time 2024-12-18 14:29:14.656403+08  
849     2024-12-18 14:33:38.333 CST WARNING:  polar_log_read_record read records from 'currRecPtr: 0/484C5168, read record: (0/484C5168, 0/484C51E0), decoded record: (0/484C5168, 0/484C51E0, 0/0)' to 'currRecPtr: 0/484CAF88, read record: (0/484CAF88, 0/484CB000), decoded record: (0/484CAF88, 0/484CB000, 0/0)', next record is 'currRecPtr: 0/484CAF88, read record: (0/484CAF88, 0/484CB000), decoded record: (0/484CAF88, 0/484CB000, 0/0)'  
849     2024-12-18 14:33:38.380 CST WARNING:  replica can't modify file in shared storage by pfs: /nvme1n1/shared_data//base/5  
849     2024-12-18 14:33:38.424 CST WARNING:  replica can't modify file in shared storage by pfs: /nvme1n1/shared_data//base/1  
849     2024-12-18 14:33:38.465 CST WARNING:  replica can't modify file in shared storage by pfs: /nvme1n1/shared_data//base/4  
849     2024-12-18 14:33:38.509 CST WARNING:  replica can't modify file in shared storage by pfs: /nvme1n1/shared_data//base/13572  
849     2024-12-18 14:33:38.509 CST LOG:  selected new timeline ID: 2  
849     2024-12-18 14:33:38.511 CST LOG:  vfs_unlink /nvme1n1/shared_data//pg_wal/xlogtemp.849  
Got coredump signal(11) in process(849)  
Process Info:  
  pid:  849  
  type: startup  
  sql:  <NULL>  
Backtrace:  
  #0  polar_program_error_handler+0x388 [0xaaaad54f72a4]  
  #1  +0x388 [0xffffabc2d790]  
  #2  strerrordesc_np+0x1e30 [0xffffaac19950]  
  #3  dopr+0x164 [0xaaaad55824b0]  
  #4  pg_vsnprintf+0xa0 [0xaaaad5581c68]  
  #5  pvsnprintf+0x44 [0xaaaad5574e54]  
  #6  appendStringInfoVA+0xb4 [0xaaaad5576cb8]  
  #7  errmsg+0x1c4 [0xaaaad54ef674]  
  #8  polar_vfs_file_handle_node_type+0x158 [0xffffa77de3cc]  
  #9  polar_stat_file_before_hook+0x44 [0xffff933b5ef8]  
  #10 vfs_unlink+0xf0 [0xffffa77daa00]  
  #11 polar_unlink+0x4c [0xaaaad4e017bc]  
  #12 XLogFileCopy+0x130 [0xaaaad4e06f38]  
  #13 XLogInitNewTimeline+0xe4 [0xaaaad4e0acf4]  
  #14 StartupXLOG+0xcd0 [0xaaaad4e0bf68]  
  #15 StartupProcessMain+0xcc [0xaaaad51f49b4]  
  #16 AuxiliaryProcessMain+0x284 [0xaaaad51e2520]  
  #17 StartChildProcess+0x60 [0xaaaad51f27c0]  
  #18 PostmasterMain+0x1564 [0xaaaad51eb5bc]  
  #19 main+0x380 [0xaaaad50dde60]  
  #20 __libc_init_first+0x7c [0xffffaaba73fc]  
  #21 __libc_start_main+0x98 [0xffffaaba74cc]  
  #22 _start+0x30 [0xaaaad4cc1f70]  
851     2024-12-18 14:33:38.628 CST WARNING:  Failed to get the instance memory usage  
836     2024-12-18 14:33:39.049 CST LOG:  startup process (PID 849) was terminated by signal 11: Segmentation fault  
836     2024-12-18 14:33:39.049 CST LOG:  terminating any other active server processes  
836     2024-12-18 14:33:39.051 CST LOG:  shutting down due to startup process failure  
[PFSD_SDK INF Dec 18 14:33:39.051684][836]pfsd_umount_force 247: pbdname nvme1n1  
[PFSD_SDK INF Dec 18 14:33:39.072031][836]chnl_connection_release_shm 1164: client umount return : deleted /var/run/pfsd//nvme1n1/836.pid  
[PFSD_SDK INF Dec 18 14:33:39.072049][836]pfsd_umount_force 261: umount success for nvme1n1  
836     2024-12-18 14:33:39.072 CST LOG:  umount pbd nvme1n1 success  
836     2024-12-18 14:33:39.103 CST LOG:  database system is shut down

core文件bt如下:

$ gdb --exec=/home/postgres/tmp_polardb_pg_15_base/bin/postgres --core=/home/postgres/replica1/core  
GNU gdb (Ubuntu 12.1-0ubuntu1~22.04.2) 12.1  
Copyright (C) 2022 Free Software Foundation, Inc.  
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>  
This is free software: you are free to change and redistribute it.  
There is NO WARRANTY, to the extent permitted by law.  
Type "show copying" and "show warranty" for details.  
This GDB was configured as "aarch64-linux-gnu".  
Type "show configuration" for configuration details.  
For bug reporting instructions, please see:  
<https://www.gnu.org/software/gdb/bugs/>.  
Find the GDB manual and other documentation resources online at:  
    <http://www.gnu.org/software/gdb/documentation/>.  
  
For help, type "help".  
Type "apropos word" to search for commands related to "word".  
  
warning: Can't open file /dev/zero (deleted) during file-backed mapping note processing  
  
warning: Can't open file /dev/shm/PostgreSQL.3630676106 during file-backed mapping note processing  
  
warning: Can't open file /SYSV000c289a (deleted) during file-backed mapping note processing  
[New LWP 849]  
[Thread debugging using libthread_db enabled]  
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".  
Core was generated by `postgres(5432): startup                                                      '.  
Program terminated with signal SIGSEGV, Segmentation fault.  
#0  __pthread_kill_implementation (threadid=281473559998496, signo=signo@entry=11, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44  
44  ./nptl/pthread_kill.c: No such file or directory.  
(gdb) bt  
#0  __pthread_kill_implementation (threadid=281473559998496, signo=signo@entry=11, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44  
#1  0x0000ffffaabff254 in __pthread_kill_internal (signo=11, threadid=<optimized out>) at ./nptl/pthread_kill.c:78  
#2  0x0000ffffaabba67c in __GI_raise (sig=11) at ../sysdeps/posix/raise.c:26  
#3  0x0000aaaad54f74f0 in ?? ()  
#4  0x0000000b00000000 in ?? ()  
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

在pb2 sudo dmesg 系统层面未看到oom或其他报错, 尝试了关闭其他容器(降低内存使用), 问题依旧.

暂时无法进行后续操作, 请问有什么解决办法?

在研发同学帮助下, 已经找到问题并解决: 没有开启logindex, 导致ro无法被激活. 但是这个手册中没有提及, 期待未来官方文档的补充说明. 开启logindex配置几个参数即可, 参数已经更新到 《在Docker容器中用loop设备模拟共享存储》 . 你跟着做的话, 应该不会碰到我的问题了.

promote 正常的日志如下:

$ pg_ctl promote -D ~/replica1
[PFSD_SDK INF Dec 24 09:56:35.922139][747]pfsd_umount_force 247: pbdname nvme1n1
[PFSD_SDK INF Dec 24 09:56:35.923984][747]chnl_connection_release_shm 1164: client umount return : deleted /var/run/pfsd//nvme1n1/747.pid
[PFSD_SDK INF Dec 24 09:56:35.924002][747]pfsd_umount_force 261: umount success for nvme1n1
waiting for server to promote...[PFSD_SDK INF Dec 24 09:56:36.036961][747]pfsd_umount_force 247: pbdname nvme1n1
[PFSD_SDK INF Dec 24 09:56:36.038059][747]chnl_connection_release_shm 1164: client umount return : deleted /var/run/pfsd//nvme1n1/747.pid
[PFSD_SDK INF Dec 24 09:56:36.038070][747]pfsd_umount_force 261: umount success for nvme1n1
 done
server promoted
postgres@895e6aa6ffd4:~$ psql
psql (PostgreSQL 15.10 (PolarDB 15.10.2.0 build d4f5477d debug) on aarch64-linux-gnu)
Type "help" for help.
slot 也正常的切换了:  
postgres=# select * from pg_replication_slots;
 slot_name | plugin | slot_type | datoid | database | temporary | active | active_pid | xmin | catalog_xmin | restart_lsn | confirmed_flush_lsn | wal_status | safe_wal_size | two_phase 
-----------+--------+-----------+--------+----------+-----------+--------+------------+------+--------------+-------------+---------------------+------------+---------------+-----------
 replica1  |        | physical  |        |          | f         | f      |            |      |              | 0/40940E40  |                     | reserved   |               | f
 standby1  |        | physical  |        |          | f         | f      |            |      |              | 0/40942F38  |                     | reserved   |               | f
(2 rows)

3、“配置p1 primary作为replica” OR “重建1个replica” .

参考: 《穷鬼玩PolarDB RAC一写多读集群系列 | 在Docker容器中用loop设备模拟共享存储》

假设是全新的计算节点(容器), 需要参考以上文章依次执行如下:

  • 1 部署PolarDB二进制. 参考步骤 9、将编译好的二进制拷贝到pb1, pb2的HOME目录, 便于调用
  • 2 部署PFS二进制. 参考步骤 使用 polardb_pg_devel:ubuntu22.04 镜像, 自带pfs, 无需再安装pfs.
  • 3 接入共享块设备. 参考步骤 可以跳过步骤 : 5.1 和 5.2
  • 4 将共享块设备软链到 nvme1n1. 参考步骤 5.3、将loop设备软链到nvme1n1
  • 5 启动 pfsd 参考步骤 7、在pb1, pb2都启动pfsd, -w为工作进程数量, 数字越大IO性能越好, 这里受制于容器资源限制设置为1.
  • 6 新增部署replica节点. 参考步骤 15、replica节点部署. 及后续步骤

本文将继续使用pb1的容器来演示, 因为在pb1 容器中前面5步都已经完成了, 所以只需要操作第6步(新增部署replica节点).

3.1、清理pb1 旧的本地数据目录

# 进入pb1容器  
docker exec -ti pb1 bash    
  
rm -rf $HOME/primary

3.2、通过 polar-initdb.sh 脚本使用共享存储上的数据目录来初始化 Replica 节点的本地目录。 因为我想后续其他实验部分依旧把pb1作为primary节点, 所以目录依旧使用primary命名.

mkdir -m 0700 $HOME/primary    
sudo /home/postgres/tmp_polardb_pg_15_base/bin/polar-initdb.sh $HOME/primary/ /nvme1n1/shared_data/ replica

3.3、修改replica数据目录及子目录及文件的权限和owner

sudo chmod -R 700 $HOME/primary    
sudo chown -R postgres:postgres  $HOME/primary

3.4、生成初始配置文件

initdb -D /tmp/primary    
cp /tmp/primary/*.conf $HOME/primary/  
rm -rf /tmp/primary

3.5、编辑pb1 replica节点配置文件

配置postgresql.conf

echo "    
port=5432    
polar_hostid=1   # 注意  
polar_enable_shared_storage_mode=on    
polar_disk_name='nvme1n1'    
polar_datadir='/nvme1n1/shared_data/'    
polar_vfs.localfs_mode=off    
shared_preload_libraries='\$libdir/polar_vfs,\$libdir/polar_worker'    
polar_storage_cluster_name='disk'    
logging_collector=on    
log_line_prefix='%p\t%r\t%u\t%m\t'    
log_directory='pg_log'    
listen_addresses='0.0.0.0'    
max_connections=200  
# 下面几个参数解决replica不能promote的问题, 因为RO依赖logindex.  
polar_logindex_mem_size=64MB  
polar_xlog_queue_buffers=64MB  
polar_xlog_page_buffers=64MB  
# 使用pfs时可以关掉 full page write 和 polar_has_partial_write , 否则请打开这两   
full_page_writes = off  
polar_has_partial_write = off
polar_resource_manager.enable_resource_manager=off
    
# replication    
primary_slot_name='replica1'    
primary_conninfo='host=172.17.0.3 port=5432 user=postgres dbname=postgres application_name=replica1'    # 注意    
" >> ~/primary/postgresql.conf

配置pg_hba.conf

echo "      
host all all 0.0.0.0/0 md5      
host  replication postgres  172.17.0.0/16 trust      
" >> ~/primary/pg_hba.conf

3.6、标识节点以 Replica 模式启动:

touch $HOME/primary/replica.signal

3.7、启动 Replica 节点:

pg_ctl start -D $HOME/primary

3.8、pb2 检查到replica复制槽正常连接

postgres=# select * from pg_stat_replication;    
-[ RECORD 1 ]----+------------------------------  
pid              | 844  
usesysid         | 10  
usename          | postgres  
application_name | replica1  
client_addr      | 172.17.0.2  
client_hostname  |   
client_port      | 57928  
backend_start    | 2024-12-24 10:06:13.679898+08  
backend_xmin     |   
state            | streaming  
sent_lsn         | 0/40943100  
write_lsn        | 0/40943100  
flush_lsn        | 0/40943100  
replay_lsn       | 0/40943100  
write_lag        |   
flush_lag        |   
replay_lag       |   
sync_priority    | 0  
sync_state       | async  
reply_time       | 2024-12-24 10:06:43.729921+08

此时已经完成了switchover.

4、switchover again.

因为我想后续其他实验部分依旧把pb1作为primary节点, 所以我下面再做一次角色转变: 把pb2 停掉, 把pb1 promote, 把pb2 重建为replica.

4.1、把pb2 RW节点停掉

pg_ctl stop -m fast -D ~/replica1

4.2、把pb1 promote 为RW节点

pg_ctl promote -D ~/primary

4.3、把pb2 重建为replica.

略. 参考本文第3步 以及 下面的文章 15、replica节点部署 章节.

因为pb2之前就是RO节点, 其他都配置好了. 实际上把pb2切换回RO节点比较简单, 只需要2步. 但在工程化过程中往往会复用模块, 统一采用新增replica的流程.

touch $HOME/replica1/replica.signal  
pg_ctl start -D ~/replica1

参考

《穷鬼玩PolarDB RAC一写多读集群系列 | 在Docker容器中用loop设备模拟共享存储》

《穷鬼玩PolarDB RAC一写多读集群系列 | 如何搭建PolarDB容灾(standby)节点》

《穷鬼玩PolarDB RAC一写多读集群系列 | 共享存储在线扩容》

https://apsaradb.github.io/PolarDB-for-PostgreSQL/zh/operation/ro-online-promote.html

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
打赏
0
0
0
0
20702
分享
相关文章
【瑶池数据库训练营及解决方案本周精选(探索PolarDB,参与RDS迁移、连接训练营)】(5.30-6.8)
本周精选聚焦数据库迁移训练营、快速连接云数据库RDS训练营及智能多模态搜索解决方案。为用户提供模拟教程与实战演练,学习RDS MySQL实例连接与数据管理技能,助力企业智能化发展。每周解锁数据库实战新场景,抓紧时间,精彩不容错过!
MyEMS开源系统安装之数据库
本文详细讲解MyEMS的安装步骤,重点介绍数据库架构与脚本部署。MyEMS支持MySQL 8.0、MariaDB 10.5及SingleStore 7.0等数据库服务器。通过命令行或客户端工具执行SQL脚本完成安装,包括多个数据库(如myems_billing_db、myems_energy_db等)。此外,提供解决常见问题的方法,如“用户拒绝访问”、“COLLATE设置”和“MAX_ALLOWED_PACKET错误”。注意,不建议在生产环境中将数据库安装于Docker容器内。
56 1
阿里云PolarDB与沃趣科技携手打造一体化数据库解决方案,助推国产数据库生态发展
阿里云瑶池数据库与沃趣科技将继续深化合作,共同推动国产数据库技术的持续创新与广泛应用,为行业生态的繁荣注入更强劲的技术动力。
阿里云PolarDB与沃趣科技携手打造一体化数据库解决方案,助推国产数据库生态发展
客户说|知乎基于阿里云PolarDB,实现最大数据库集群云原生升级
近日,知乎最大的风控业务数据库集群,基于阿里云瑶池数据库完成了云原生技术架构的升级。此次升级不仅显著提升了系统的高可用性和性能上限,还大幅降低了底层资源成本。
PolarDB开源:云原生数据库的架构革命
本文围绕开源核心价值、社区运营实践和技术演进路线展开。首先解读存算分离架构的三大突破,包括基于RDMA的分布式存储、计算节点扩展及存储池扩容机制,并强调与MySQL的高兼容性。其次分享阿里巴巴开源治理模式,涵盖技术决策、版本发布和贡献者成长体系,同时展示企业应用案例。最后展望技术路线图,如3.0版本的多写多读架构、智能调优引擎等特性,以及开发者生态建设举措,推荐使用PolarDB-Operator实现高效部署。
181 2
PolarDB开源数据库入门教程
PolarDB是阿里云推出的云原生数据库,基于PostgreSQL、MySQL和Oracle引擎构建,具备高性能、高扩展性和高可用性。其开源版采用计算与存储分离架构,支持快速弹性扩展和100%兼容PostgreSQL/MySQL。本文介绍了PolarDB的安装方法(Docker部署或源码编译)、基本使用(连接数据库、创建表等)及高级特性(计算节点扩展、存储自动扩容、并行查询等)。同时提供了性能优化建议和监控维护方法,帮助用户在生产环境中高效使用PolarDB。
754 21
PolarDB开源进阶篇:深度解析与实战优化指南
PolarDB是阿里云开源的云原生数据库,采用计算-存储分离架构,结合高性能共享存储与Parallel Raft多副本一致性协议,实现微秒级延迟和卓越性能。本文深入解析其架构设计,涵盖智能调度层、性能优化技巧(如查询优化器调优和分布式事务提升)、高可用与容灾配置、扩展功能开发指南以及监控运维体系。同时,通过电商平台优化案例展示实际应用效果,并展望未来演进方向,包括AI结合、多模数据库支持及Serverless架构发展。作为云原生数据库代表,PolarDB为开发者提供了强大支持和广阔前景。
172 15
PolarDB开源数据库进阶课17 集成数据湖功能
本文介绍了如何在PolarDB数据库中接入pg_duckdb、pg_mooncake插件以支持数据湖功能, 可以读写对象存储的远程数据, 支持csv, parquet等格式, 支持delta等框架, 并显著提升OLAP性能。
250 3
PolarDB开源数据库进阶课15 集成DeepSeek等大模型
本文介绍了如何在PolarDB数据库中接入私有化大模型服务,以实现多种应用场景。实验环境依赖于Docker容器中的loop设备模拟共享存储,具体搭建方法可参考相关系列文章。文中详细描述了部署ollama服务、编译并安装http和openai插件的过程,并通过示例展示了如何使用这些插件调用大模型API进行文本分析和情感分类等任务。此外,还探讨了如何设计表结构及触发器函数自动处理客户反馈数据,以及生成满足需求的SQL查询语句。最后对比了不同模型的回答效果,展示了deepseek-r1模型的优势。
255 3
PolarDB开源数据库进阶课14 纯享单机版
PolarDB不仅支持基于“共享存储+多计算节点”的集群版,还提供类似开源PostgreSQL的单机版。单机版部署简单,适合大多数应用场景,并可直接使用PostgreSQL生态插件。通过Docker容器、Git克隆代码、编译软件等步骤,即可完成PolarDB单机版的安装与配置。具体操作包括启动容器、进入容器、克隆代码、编译软件、初始化实例、配置参数及启动数据库。此外,还有多个相关教程和视频链接供参考,帮助用户更好地理解和使用PolarDB单机版。
223 1

相关产品

  • 云原生数据库 PolarDB
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等