PolarDB开源数据库进阶课12 集群版转换为单机版

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介: 本文介绍了如何将“共享存储实例”转换为“本地存储实例”,实验环境依赖于Docker容器中的loop设备模拟共享存储。具体步骤包括准备本地目录、停库、拷贝数据、修改配置文件并启动实例。通过这些操作,可以实现从共享存储到本地存储的平滑转换。相关系列文章详细记录了PolarDB RAC一写多读集群的搭建与管理,提供了丰富的实战经验。

背景

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

本篇文章介绍一下如何把“共享存储实例”转换为“本地存储实例”? 实验环境依赖 《在Docker容器中用loop设备模拟共享存储》 , 如果没有环境, 请自行参考以上文章搭建环境.

本文还依赖如下文章:

DEMO

b站视频链接

Youtube视频链接

在pb3容器进行演示. 假设在pb3 容器中的standby节点已经被成功激活. 接下来将介绍把这个“共享存储实例”转换为“本地存储实例”.

预览当前目录结构:

# 数据放在PFS内  
$ sudo pfs -C disk ls /nvme2n1/shared_data/  
   Dir  1     256               Tue Dec 24 09:52:52 2024  pg_multixact  
   Dir  1     768               Tue Dec 24 14:29:01 2024  pg_wal  
   Dir  1     0                 Tue Dec 24 09:52:54 2024  pg_commit_ts  
   Dir  1     512               Tue Dec 24 14:46:02 2024  polar_fullpage  
   Dir  1     0                 Tue Dec 24 09:52:57 2024  pg_replslot  
   Dir  1     0                 Tue Dec 24 09:52:57 2024  pg_tblspc  
  File  1     227               Tue Dec 24 09:52:57 2024  polar_non_exclusive_backup_label  
  File  1     257               Tue Dec 24 09:52:57 2024  postgresql.auto.conf  
   Dir  1     0                 Tue Dec 24 09:52:57 2024  pg_twophase  
   Dir  1     128               Tue Dec 24 09:52:57 2024  pg_xact  
   Dir  1     128               Tue Dec 24 14:45:55 2024  pg_logindex  
   Dir  1     7808              Tue Dec 24 09:52:57 2024  global  
   Dir  1     512               Tue Dec 24 09:52:58 2024  base  
total 16384 (unit: 512Bytes)  
  
# 本地实例放在本地目录中  
$ ls ~/standby  
backup_label.old  current_logfiles  pg_dynshmem    pg_log       pg_multixact  pg_serial     pg_stat_tmp  PG_VERSION         polar_fullpage        polar_shmem_stat_file  postmaster.opts  
backup_manifest   global            pg_hba.conf    pg_logical   pg_notify     pg_snapshots  pg_subtrans  pg_xact            polar_rel_size_cache  postgresql.auto.conf   postmaster.pid  
base              pg_commit_ts      pg_ident.conf  pg_logindex  pg_replslot   pg_stat       pg_tblspc    polar_cache_trash  polar_settings.conf   postgresql.conf

设计目标目录结构

# 数据放在本地 /data/standby/shared_data 目录中  
  
# 本地实例还是放在本地 ~/standby 目录中

1、准备存放PFS 共享盘数据库目录的本地目录

mkdir -p /data/standby/shared_data

2、停库

pg_ctl stop -m fast -D ~/standby

3、把PFS的内容拷贝到本地目录, 并修改owner和权限

pfs cp -r /nvme2n1/shared_data /data/standby/  
  
chmod 700 /data/standby/shared_data  
chown -R postgres:postgres /data/standby/shared_data

预览新的本地共享数据目录结构

$ ll /data/standby/shared_data  
total 8  
drwx------ 15 postgres postgres  480 Dec 24 15:55 ./  
drwxr-xr-x  3 postgres postgres   96 Dec 24 15:48 ../  
drwxr-xr-x  6 postgres postgres  192 Dec 24 15:55 base/  
drwxr-xr-x 63 postgres postgres 2016 Dec 24 15:55 global/  
drwxr-xr-x  2 postgres postgres   64 Dec 24 15:55 pg_commit_ts/  
drwxr-xr-x  3 postgres postgres   96 Dec 24 15:55 pg_logindex/  
drwxr-xr-x  4 postgres postgres  128 Dec 24 15:55 pg_multixact/  
drwxr-xr-x  2 postgres postgres   64 Dec 24 15:55 pg_replslot/  
drwxr-xr-x  2 postgres postgres   64 Dec 24 15:55 pg_tblspc/  
drwxr-xr-x  2 postgres postgres   64 Dec 24 15:55 pg_twophase/  
drwxr-xr-x  8 postgres postgres  256 Dec 24 15:55 pg_wal/  
drwxr-xr-x  3 postgres postgres   96 Dec 24 15:55 pg_xact/  
drwxr-xr-x  6 postgres postgres  192 Dec 24 15:55 polar_fullpage/  
-rw-r--r--  1 postgres postgres  227 Dec 24 15:55 polar_non_exclusive_backup_label  
-rw-r--r--  1 postgres postgres  257 Dec 24 15:55 postgresql.auto.conf

共享数据目录中这两个文件没什么用可以删掉

rm /data/standby/shared_data/polar_non_exclusive_backup_label  
rm -f /data/standby/shared_data/postgresql.auto.conf

4、修改 ~/standby 内配置文件

postgresql.conf

echo "  
huge_pages=off  
port=5432  
polar_hostid=3  
polar_enable_shared_storage_mode=on  
polar_disk_name='home'  # 修改
# polar_storage_cluster_name='disk'   # 修改  
polar_datadir='file-dio:///data/standby/shared_data/'    # 修改  
polar_vfs.localfs_mode=true    # 修改   
shared_preload_libraries='\$libdir/polar_vfs,\$libdir/polar_worker'  
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  . 或者使用zfs这类cow的文件系统时也可以关掉以下2个配置.  
full_page_writes = off  
polar_has_partial_write = on  # 修改
polar_resource_manager.enable_resource_manager=off
" >> ~/standby/postgresql.conf

5、启动实例

pg_ctl start -D ~/standby

将“共享存储实例”转换为“本地存储实例”完成

$ psql  
psql (PostgreSQL 15.10 (PolarDB 15.10.2.0 build d4f5477d debug) on aarch64-linux-gnu)  
Type "help" for help.  
  
postgres=# \dt  
         List of relations  
 Schema | Name  | Type  |  Owner     
--------+-------+-------+----------  
 public | t     | table | postgres  
 public | t1    | table | postgres  
 public | t2    | table | postgres  
 public | t_new | table | postgres  
 public | tbl   | table | postgres  
(5 rows)  
  
postgres=# show polar_datadir;  
             polar_datadir               
---------------------------------------  
 file-dio:///data/standby/shared_data/  
(1 row)  
  
postgres=# create table t3(id int);  
CREATE TABLE  
postgres=# insert into t3 select generate_series(1,10);  
INSERT 0 10

验证完转换成功后, 可以把本地的pfsd进行退出.

PS: 如果你想比较平滑的完成转换, 可用考虑采用先建立本地盘的standby然后激活的方式. 参考 《如何搭建PolarDB容灾(Standby)节点》

这还不是完全的单机版, 完全的单机版参考: 《穷鬼玩PolarDB RAC一写多读集群系列 | 原来PolarDB还有单机版?》

参考

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

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

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

《穷鬼玩PolarDB RAC一写多读集群系列 | 计算节点 Switchover》

《穷鬼玩PolarDB RAC一写多读集群系列 | 在线备份》

《穷鬼玩PolarDB RAC一写多读集群系列 | 在线归档》

《穷鬼玩PolarDB RAC一写多读集群系列 | 实时归档》

《穷鬼玩PolarDB RAC一写多读集群系列 | 时间点恢复(PITR)》

《穷鬼玩PolarDB RAC一写多读集群系列 | 读写分离》

《穷鬼玩PolarDB RAC一写多读集群系列 | 主机全毁, 只剩共享存储的PolarDB还有救吗?》

《穷鬼玩PolarDB RAC一写多读集群系列 | 激活容灾(Standby)节点》

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
16天前
|
存储 NoSQL 数据库
Redis 逻辑数据库与集群模式详解
Redis 是高性能内存键值数据库,广泛用于缓存与实时数据处理。本文深入解析 Redis 逻辑数据库与集群模式:逻辑数据库提供16个独立存储空间,适合小规模隔离;集群模式通过分布式架构支持高并发和大数据量,但仅支持 database 0。文章对比两者特性,讲解配置与实践注意事项,并探讨持久化及性能优化策略,助你根据需求选择最佳方案。
47 5
|
28天前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
1月前
|
SQL 关系型数据库 数据库
【YashanDB知识库】OM仲裁节点故障后手工切换方案和yasom仲裁重新部署后重新纳管数据库集群方案
本文介绍了主备数据库集群的部署、OM仲裁故障切换及重新纳管的全过程。首先通过解压软件包并调整安装参数完成数据库集群部署,接着说明了在OM仲裁故障时的手动切换方案,包括关闭自动切换开关、登录备节点执行切换命令。最后详细描述了搭建新的yasom仲裁节点以重新纳管数据库集群的步骤,如生成配置文件、初始化进程、执行托管命令等,确保新旧系统无缝衔接,保障数据服务稳定性。
|
2天前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
1月前
|
存储 缓存 Oracle
崖山数据库YashanDB的共享集群机制初探
YashanDB共享集群是崖山数据库系统的核心特性,支持单库多实例并发读写,确保强一致性与高可用性。基于Shared-Disk架构和Cohesive Memory技术,实现数据页协同访问及资源控制。其核心组件包括YCK、YCS和YFS,提供金融级RPO=0、RTO<10秒的高可用能力。通过自研“七种武器”(如页内锁、去中心化事务管理等),优化性能并解决读写冲突。相比Oracle RAC,YashanDB在TPC-C测试中性能高出30%,适用于金融、电信等关键领域,推动国产化替代进程。
崖山数据库YashanDB的共享集群机制初探
|
25天前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
|
1月前
|
存储 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:单机性能优化篇
日前,阿里云PolarDB云原生数据库以超越原记录2.5倍的性能一举登顶TPC-C基准测试排行榜,以每分钟20.55亿笔交易(tpmC)和单位成本0.8元人民币(price/tpmC)的成绩刷新TPC-C性能和性价比双榜的世界纪录。 每一个看似简单的数字背后,都蕴含着无数技术人对数据库性能、性价比和稳定性的极致追求,PolarDB的创新步伐从未止步。「阿里云瑶池数据库」公众号特此推出「PolarDB登顶TPC-C技术揭秘」系列硬核文章,为你讲述“双榜第一”背后的故事,敬请关注!
登顶TPC-C|云原生数据库PolarDB技术揭秘:单机性能优化篇
|
1月前
|
存储 缓存 API
自研一款共享集群数据库,有多难?
共享集群数据库管理系统是一种单库多实例的多活数据库管理系统,用户连接任意实例都可以访问同一个数据库,具备透明多写、高可用、高性能等特性。共享集群技术因其开发难度高,一直被国外垄断,也被称为数据库领域的“塔尖”技术。
|
2月前
|
关系型数据库 分布式数据库 数据库
喜报|PolarDB开源社区荣获“2024数据库国内活跃开源项目”奖
喜报|PolarDB开源社区荣获“2024数据库国内活跃开源项目”奖
|
2月前
|
关系型数据库 分布式数据库 数据库
首届全国大学生计算机系统能力大赛PolarDB数据库创新设计赛(天池杯)圆满收官
首届全国大学生计算机系统能力大赛PolarDB数据库创新设计赛(天池杯)圆满收官

相关产品

  • 云原生数据库 PolarDB
  • 下一篇
    oss创建bucket