基于IvorySQL+Patroni+vip-manager构建高可用集群

postgresql高可用patroni集群部署 Patroni是用于构建和管理PostgreSQL高可用(HA)集群的开源工具,通过利用外部的分布式一致性存储(如etcd, Consul, Zookeeper, Kubernetes),实现自动故障转移、领导者选举和动态配置,确保集群服务连续性。它为每个PG实例运行一个代理,监控节点健康,并使用共识算法决定集群操作,提供REST API管理,是构建可靠PG HA环境的关键。主要组件与技术:PostgreSQL: 数据库核心,支持物理和逻辑复制。 阅读详情

数据库是现代应用架构中的核心组件,然而,单点故障可能导致应用中断和数据丢失。为了确保高可用性和数据冗余,我们选择了IvorySQL和Patroni来构建一个强大而稳健的数据库高可用集群,从而确保业务的连续性和数据的安全性。

Patroni作为一款简单易用的高可用性工具,能够轻松地管理PostgreSQL集群,从而确保数据安全性和连续性。最新发布的Patroni 3.2版本提供了与PostgreSQL 16的兼容性,与IvorySQL 3.1版本可以完美适配,共同构建出强大而稳定的数据库高可用集群。同时,结合vip-manager的灵活虚拟IP的漂移功能,能够在故障转移时实现客户端的无感知访问,确保业务的平滑运行。

下面,我们就详细介绍一下IvorySQL 3.1+Patroni 3.2+vip-manager 2.0的高可用集群部署流程。我们以 x86_64 架构的 CentOS7 操作系统为例,并准备三台 CentOS7 服务器作为环境搭建的基础。每台服务器上都需要执行数据库及高可用组件的安装与配置工作,以确保整个集群的顺利运行和高度可用性。

01 安装配置IvorySQL数据库

1.1 下载IvorySQL安装包

wget https://github.com/IvorySQL/IvorySQL/releases/download/IvorySQL_3.1/ivorysql3-libs-3.1-1.rhel7.x86_64.rpm
wget 
https://github.com/IvorySQL/IvorySQL/releases/download/IvorySQL_3.1/ivorysql3-3.1-1.rhel7.x86_64.rpm
wget https://github.com/IvorySQL/IvorySQL/releases/download/IvorySQL_3.1/ivorysql3-contrib-3.1-1.rhel7.x86_64.rpm
wget
https://github.com/IvorySQL/IvorySQL/releases/download/IvorySQL_3.1/ivorysql3-server-3.1-1.rhel7.x86_64.rpm

1.2 安装rpm包

安装依赖:

yum install -y libicu libxslt python3

在安装rpm包的过程中,各rpm包之间有依赖关系,因此需要按照以下顺序安装rpm包:

rpm -ivh ivorysql3-libs-3.1-1.rhel7.x86_64.rpm
rpm -ivh ivorysql3-3.1-1.rhel7.x86_64.rpm
rpm -ivh ivorysql3-contrib-3.1-1.rhel7.x86_64.rpm --nodeps
rpm -ivh ivorysql3-server-3.1-1.rhel7.x86_64.rpm

数据库将被安装在/usr/local/ivorysql路径下。

1.3 创建用户及环境变量

(1)创建操作系统用户

在root会话中,我们需要新建用户ivorysql:

/usr/sbin/groupadd ivorysql    
/usr/sbin/useradd -m -g ivorysql ivorysql -c "IvorySQL3.1 Server" 
/usr/bin/passwd ivorysql

(2)修改文件夹权限

在root会话中,执行以下命令:

chown -R ivorysql.ivorysql /usr/local/ivorysql/

(3)配置环境变量

切换到用户ivorysql后,接下来需要修改文件/home/ivorysql/.bash_profile,以便配置相应的环境变量:

export LD_LIBRARY_PATH=/usr/local/ivorysql/ivorysql-3/lib:$LD_LIBRARY_PATH 
export PATH=/usr/local/ivorysql/ivorysql-3/bin:$PATH 
export PGDATA=/usr/local/ivorysql/ivorysql-3/data

为了使环境变量在当前ivorysql用户会话中立即生效,我们需要执行以下命令:

source .bash_profile

1.4 关闭防火墙

执行以下命令关闭防火墙:

systemctl stop firewalld
systemctl disable firewalld

在使用防火墙的情况下,为了确保ivorysql、patroni和etcd的正常运行,我们需要开放相应的端口,如下:

Ivorysql:1521、5432

patroni:8008

etcd:2379、2380

开放端口的命令:

firewall-cmd --zone=public --add-port=1521/tcp --permanent 
firewall-cmd --zone=public --add-port=5432/tcp --permanent 
firewall-cmd --zone=public --add-port=8008/tcp --permanent 
firewall-cmd --zone=public --add-port=2379/tcp --permanent 
firewall-cmd --zone=public --add-port=2380/tcp --permanent 
firewall-cmd --reload 

02 安装配置启动etcd

Patroni采用DCS(Distributed Configuration Store)机制来管理集群状态并确保分布式一致性存储的实现。在此场景中,我们选用etcd作为patroni的DCS。

2.1安装etcd

yum install etcd

查看etcd版本

[root@sophia-pghost5 ~]# etcd --version
etcd Version: 3.3.11
Git SHA: 2cf9e51
Go Version: go1.10.3
Go OS/Arch: linux/amd64

2.2配置etcd.yml

作为ivorysql用户,我们需要在/usr/local/ivorysql目录下创建名为etcd的文件夹,并在etcd文件夹内创建etcd.yml配置文件,配置内容如下:

name: 'etcd_01'
data-dir: /usr/local/hghac/etcd/etcd01
listen-peer-urls: http://192.168.31.105:2380
listen-client-urls: http://192.168.31.105:2379,http://127.0.0.1:2379
initial-advertise-peer-urls: http://192.168.31.105:2380
advertise-client-urls: http://192.168.31.105:2379
initial-cluster: etcd_01=http://192.168.31.105:2380,etcd_02=http://192.168.31.106:2380,etcd_03=http://192.168.31.107:2380
initial-cluster-token: 'etcd-cluster'
initial-cluster-state: 'new'

2.3启动etcd

etcd --config-file etcd.yml

在成功启动三个节点的etcd集群之后,我们需要查看etcd集群的状态:

[ivorysql@sophia-pghost5 etcd]$ etcdctl member list
57eb343a6baf05a: name=etcd_03 peerURLs=http://192.168.31.107:2380 clientURLs=http://192.168.31.107:2379 isLeader=false
11020de439841796: name=etcd_02 peerURLs=http://192.168.31.106:2380 clientURLs=http://192.168.31.106:2379 isLeader=false
a26f27e0d5c5a30d: name=etcd_01 peerURLs=http://192.168.31.105:2380 clientURLs=http://192.168.31.105:2379 isLeader=true

03 安装配置启动Patroni

3.1安装依赖库及patroni

yum install gcc python3-devel
pip install psycopg2
pip install patroni

pip install patroni过程中会自动安装其他依赖库,安装完成之后查看patroni版本:

[root@sophia-pghost5 ~]# patroni --version
patroni 3.2.2

3.2配置patroni.yml

以ivorysql用户的身份,在/usr/local/ivorysql目录下创建文件夹patroni。然后,在该patroni文件夹下创建patroni.yml配置文件夹,配置内容如下:

scope: ivorysql-cluster
namespace: /service/
name: ivorysql_01

restapi:
  listen: 192.168.31.105:8008
  connect_address: 192.168.31.105:8008

etcd:
  hosts: 192.168.31.105:2379,192.168.31.106:2379,192.168.31.107:2379

log:
  level: INFO
  traceback_level: INFO
  dir: /usr/local/ivorysql/patroni

bootstrap:
  dcs:
    ttl: 30
    loop_wait: 10
    retry_timeout: 10
    maximum_lag_on_failover: 1048576
    master_start_timeout: 300
    synchronous_mode: false
    postgresql:
      use_pg_rewind: true
      parameters:
        wal_level: replica
        hot_standby: "on"
        wal_keep_size: 100
        max_wal_senders: 10
        max_replication_slots: 10
        wal_log_hints: "on"
        archive_mode: "off"
        archive_timeout: 1800s
        logging_collector: on

postgresql:
  database: postgres
  listen: 0.0.0.0:5432
  connect_address: 192.168.31.105:5432
  bin_dir: /usr/local/ivorysql/ivorysql-3/bin
  data_dir: /usr/local/ivorysql/ivorysql-3/data
  config_dir: /usr/local/ivorysql/ivorysql-3/data

  authentication:
    replication:
      username: ivorysql
      password: ivory123
    superuser:
      username: ivorysql
      password: ivory123
    rewind:
      username: ivorysql
      password: ivory123

  pg_hba:
  - local   all             all                                     trust
  - host    all             all             0.0.0.0/0               trust
  - host    all             all             ::1/128                 trust
  - local   replication     all                                     trust
  - host    replication     all             0.0.0.0/0               trust
  - host    replication     all             ::1/128                 trust

tags:
    noloadbalance: false
    clonefrom: false
    nosync: false

3.3启动patroni

首先,在第一个节点上启动patroni,patroni将自动初始化并启动数据库:

patroni patroni.yml

在第一个节点启动之后,确认是否已成功作为leader节点运行:

[ivorysql@sophia-pghost5 patroni]$ patronictl -c patroni.yml list
+ Cluster: ivorysql-cluster (7346459572541124634) +----+-----------+
| Member      | Host           | Role   | State   | TL | Lag in MB |
+-------------+----------------+--------+---------+----+-----------+
| ivorysql_01 | 192.168.31.105 | Leader | running |  1 |           |
+-------------+----------------+--------+---------+----+-----------+

接下来,我们需要在另外两个节点上分别启动patroni,patroni会自动执行pg_basebackup命令以拷贝数据,并启动备库建立流复制,查看集群状态:

[ivorysql@sophia-pghost5 patroni]$ patronictl -c patroni.yml list
+ Cluster: ivorysql-cluster (7346459572541124634) ---+----+-----------+
| Member      | Host           | Role    | State     | TL | Lag in MB |
+-------------+----------------+---------+-----------+----+-----------+
| ivorysql_01 | 192.168.31.105 | Leader  | running   |  1 |           |
| ivorysql_02 | 192.168.31.106 | Replica | streaming |  1 |         0 |
| ivorysql_03 | 192.168.31.107 | Replica | streaming |  1 |         0 |
+-------------+----------------+---------+-----------+----+-----------+

04 安装配置启动vip-manager

4.1下载安装包

wget https://github.com/cybertec-postgresql/vip-manager/releases/download/v2.3.0/vip-manager_2.3.0_Linux_x86_64.tar.gz

4.2解压安装包

将vip-manager的tar压缩包复制到/usr/local下,并进行解压:

[root@sophia-pghost5 local]# tar -zxvf vip-manager_2.3.0_Linux_x86_64.tar.gz
vip-manager_2.3.0_Linux_x86_64/LICENSE
vip-manager_2.3.0_Linux_x86_64/README.md
vip-manager_2.3.0_Linux_x86_64/vip-manager.yml
vip-manager_2.3.0_Linux_x86_64/vip-manager

4.3配置vip-manager.yml

interval: 1000
trigger-key: "/service/ivorysql-cluster/leader"
trigger-value: "ivorysql_01"
ip: 192.168.0.108 
netmask: 24 
interface: enp0s3 
hosting-type: basic 
dcs-type: etcd 
dcs-endpoints:
    http://127.0.0.1:2379,http://192.168.31.101:2379,http://192.168.31.102:2379,http://192.168.31.103:2379
retry-num: 2
retry-after: 250 
verbose: false

4.4启动vip-manager

以root用户权限启动vip-manager:

./vip-manager --config vip-manager.yml

查看主节点上VIP的绑定情况:

[root@sophia-pghost5 vip-manager_2.3.0_Linux_x86_64]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:75:18:bd brd ff:ff:ff:ff:ff:ff
    inet 192.168.31.105/24 brd 192.168.31.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet 192.168.31.108/24 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe75:18bd/64 scope link
       valid_lft forever preferred_lft forever

验证从其他服务器通过VIP能成功连接数据库:

[root@sophia-pghost6 ~]# psql -h 192.168.31.108 -U ivorysql -d postgres
psql (16.1)
Type "help" for help.

postgres=# select * from pg_is_in_recovery();
 pg_is_in_recovery
-------------------
 f
(1 row)

05 高可用故障场景模拟

将ivorysql_01所在服务器关机来模拟主节点故障,随后,在其他节点上查看集群状态:

[ivorysql@sophia-pghost7 patroni]$ patronictl -c patroni.yml list
+ Cluster: ivorysql-cluster (7346459572541124634) ---+----+-----------+
| Member      | Host           | Role    | State     | TL | Lag in MB |
+-------------+----------------+---------+-----------+----+-----------+
| ivorysql_02 | 192.168.31.106 | Leader  | running   |  2 |           |
| ivorysql_03 | 192.168.31.107 | Replica | streaming |  2 |         0 |
+-------------+----------------+---------+-----------+----+-----------+

由此可见,ivorysql_02已成功提升为新主库,并且VIP(虚拟IP地址)已经自动漂移到了这个新主库。

将ivorysql_01启动以后,再次启动patroni以查看当前集群状态:

[ivorysql@sophia-pghost7 patroni]$ patronictl -c patroni.yml list
+ Cluster: ivorysql-cluster (7346459572541124634) ---+----+-----------+
| Member      | Host           | Role    | State     | TL | Lag in MB |
+-------------+----------------+---------+-----------+----+-----------+
| ivorysql_02 | 192.168.31.106 | Leader  | running   |  2 |           |
| ivor[ivorysql@sophia-pghost7 patroni]$ patronictl -c patroni.yml list
+ Cluster: ivorysql-cluster (7346459572541124634) ---+----+-----------+
| Member      | Host           | Role    | State     | TL | Lag in MB |
+-------------+----------------+---------+-----------+----+-----------+
| ivorysql_01 | 192.168.31.105 | Replica | streaming |  2 |         0 |
| ivorysql_02 | 192.168.31.106 | Leader  | running   |  2 |           |
| ivorysql_03 | 192.168.31.107 | Replica | streaming |  2 |         0 |
+-------------+----------------+---------+-----------+----+-----------+

当原主库ivorysql_01恢复正常后,它将以备库的身份跟随新主库进行同-;。-

vip-manager:根据etcd或Consul中保存的状态管理虚拟IP 贵宾经理 根据etcd或Consul中保存的状态管理虚拟IP。 监视etcd中的状态 目录 建造 确保至少具有Golang 1.14版本才能获得适当的模块支持。 您可以通过go 1.12或1.13获得成功,但是可以使用YMMV。 为确保内部包含(vipconfig和checker软件包)得到满足,请将此项目的基本目录正确放入$GOPATH 。 结果位置应为$GOPATH/src/github.com/cybertec-postgresql/vip-manager/ 。 最简单的方法是: go get github.com/cybertec-postgresql/vip-manager 使用 立即下载

相关推荐

安装Anaconda和Labelme的教程

1 登录Anaconda官网,选择Download https://www.anaconda.com/distribution/ 2 选择你想下载的Python版本,选择你的操作系统和位数,然后点击Download按钮就开始下载了 3 开始安装 下面两个框框都勾选 点击next,等待安装成功 打开Anaconda Navigator 点击红色圈圈的按钮 在cmd中输入 (1)创建虚拟环境 conda create -n labelme python=3.6 (2)激活虚拟环境 conda activa

qq_42178122的博客 3813

推荐:vip-manager——智能虚拟IP管理工具

推荐:vip-manager——智能虚拟IP管理工具 项目地址:https://gitcode.com/gh_mirrors/vi/vip-manager 项目简介 vip-manager 是一个强大的工具,专为基于状态存储(如etcd或Consul)的虚拟IP管理设计。它确保在分布式系统中正确地注册和注销虚拟IP,以实现高可用性和故障切换。 项目技术分析 编写语言: 使用Go编程语言编写,保证...

gitblog_00074的博客 687

SYSU-MM01数据集评估避坑指南:从RGB/IR图像理解到Python评估脚本调优

本文详细解析了SYSU-MM01数据集在跨模态行人重识别(ReID)评估中的关键技巧与常见陷阱。从RGB/IR图像理解到Python评估脚本优化,提供了数据评估模式选择、single-shot/multi-shot差异分析、特征文件处理规范等实用指南,帮助研究者避开指标异常问题,提升评估效率与准确性。

weixin_29044713的博客 197

【亲测免费】 探索vip-manager:高效管理虚拟IP的开源利器

探索vip-manager:高效管理虚拟IP的开源利器 在现代IT架构中,虚拟IP(VIP)的管理是确保服务高可用性和负载均衡的关键环节。今天,我们将深入介绍一个强大的开源工具——vip-manager,它能够帮助你轻松管理基于etcd或Consul的虚拟IP。 项目介绍 vip-manager是一个由Cybertec PostgreSQL维护的开源项目,旨在通过监控分布式协调服务(如etcd或C...

gitblog_00153的博客 589

OpenAI,从推出更强大的Sora 2模型展开探索与未来发展前景+部署方法大全+文末邀请码*12

摘要 OpenAI推出的Sora 2是第二代AI视频生成模型,在多模态内容生成领域实现重大突破。文末足足有12个邀请码,速来速享!!!

aqfcca的博客 2250

用UltraISO制作镜像以RAW格式刻录系统到U盘后,在Windows上无法识别的解决办法

在这篇文章中,用UltraISO制作镜像后,会使得U盘无法识别!!!那么,如何抹掉U盘的数据,格式化U盘呢?

拥抱具身智能,昇腾Ascend C 2732

随手记一下 keepalived

本地有一个vip-manager 的vip ,我的目的是为了检测vip-manager 是否正常起来并且vip 落在某个节点上才启动keepalived的vip。换句话说:目的是需要两个vip都落在一个节点上。下面为测试集群,没有vip。所以直接检测网卡的ip 是否存在即可。看到了vip 在网卡上了。但是ping不通, 吧 global_default 的 vrrp_strict 删掉重启服务。在ping一次就好了。3.在VRRP版本2中有IPv6地址,开启动此项会自动开启iptables防火墙规则。

a755142155的博客 229

基于STM32单片机的环境监测系统设计与实现

综上所述,基于STM32单片机的环境监测系统具有良好的实时性、准确性和稳定性,能够满足环境监测的需求。本系统的研究意义在于,首先,它能够为用户提供准确的室内空气质量信息,帮助用户了解室内环境的质量状况,从而采取相应的措施来改善室内环境。本文设计并实现了一种基于STM32单片机的环境监测系统,该系统能够实时监测并显示室内环境的温湿度、甲醛浓度以及二氧化碳浓度,为用户提供准确的空气质量信息。实验过程中,我们模拟了不同的环境条件,包括温湿度变化、甲醛和二氧化碳浓度的波动等,以测试系统的实时性、准确性和稳定性。

3254968421的博客 2万+

开源项目VIP-Manager常见问题解决方案

开源项目VIP-Manager常见问题解决方案 1. 项目基础介绍和主要编程语言 VIP-Manager 是一个开源项目,用于管理基于 etcd 或 Consul 的虚拟 IP 地址。该项目允许用户通过 Patroni REST API 来管理 PostgreSQL 的虚拟 IP。它的主要编程语言是 Go。 2. 新手在使用这个项目时需要特别注意的3个问题及解决步骤 问题一:如何安装 VIP-Ma...

gitblog_00573的博客 628

手把手教你学SOME/IP「1.0•概述」

本文介绍了SOME/IP协议的基本概念和主要特点。SOME/IP全称为"Scalable service-Oriented MiddlewarE over IP",是一种面向服务的车载嵌入式通信协议,支持远程过程调用、事件通知等功能。文章指出SOME/IP是AUTOSAR标准的一部分,在车载以太网架构中处于应用层位置,负责服务调度和通信封装。协议具有可扩展性强、资源消耗低、兼容性好等优势,能满足汽车电子领域对实时性、可靠性的严格要求。同时,文章也说明了SOME/IP的正确书写规范,并解释

nihaoljq2010的博客 679

华为OD机考2025C卷 - 精准核酸检测(Java & Python& JS & C++ & C语言)

华为OD机考2025C卷 - 精准核酸检测,提供在线OJ Java & Python& JS & C++ & C

算法大师! 2883

高可用PgSQL集群架构设计与落地

高可用PgSQL集群架构设计与落地 [PostgreSQL中文社区](javascript:void(0)???? 今天 把数据库拉起来是一回事,部署专业水准的数据库集群又是另一回事。想要真正用好管好数据库,需要良好的架构设计让多种组件协同配合起来。今天我们就来介绍一下典型的高可用PgSQL集群架构及其 落地方式。 本文将以 Pigsty v0.8 为例,介绍高可用集群的设计与部署。 “ Pigsty针对大规模数据库集群监控与管理而设计,提供业界顶尖的PostgreSQL监控系统与开箱即用的高可用数据库供给

m0_46426259的博客 2823

23 RAG 为什么答不准:召回、分块、排序的常见坑

RAG 答不准时,不要先怪模型。本文把常见失败拆成召回不到、召回不准、分块不完整、排序靠后、上下文污染和生成不忠实六类,并给出从 Top-K 检查到评估集的排查流程。

老于的笔记的专栏 249

利用VIP Manager实现王永庆的经营之道

<br />摘要:台湾的“经营之神”王永庆先生16岁开米店。创业之初,估计哪家买的<br />米快要吃完了,他就主动把米送到那户人家,如此很快得到顾客的信任,生意越<br />做越大。本文介绍了如何利用天池大客户关系管理软件实现这一经营方式的自动<br />化。<br /><br />关键词:王永庆,经营之道,销售管理自动化,VIP Manager<br /><br />虽然台湾的“经营之神”王永庆先生驾鹤西去,相信他的用心和勤奋会继<br />续激励一代代的年轻人白手起家,奋发图强,开创成功人生。<br

chunaivvcrm的专栏 581

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

从零到一!CLup助你秒建IvorySQL4.0高可用集群

在CLup数据库管理系统中可以快速便捷地创建IvorySQL4.0数据库高可用流复制集群。泡杯茶的时间,轻松创建IvorySQL数据库高可用流复制集群,快来试试吧!

csudata的博客 841

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

基于etcd+Patroni的PostgreSQL11高可用方案及离线部署

前言 本文基于etcd+patroni对PostgreSQL数据库做高可用配置(1主2从),HAProxy+Keepalived搭建负载均衡与虚拟IP漂移功能,使得后端服务无需担心主备切换后造成的IP及端口不一致问题。 软件包及环境说明 鉴于大多数服务器并不能直连外网,无法使用yum源直接安装,本文提供一种离线部署方式,以供参考。 环境说明 操作系统:Centos7.x PG版本:PostgreSQL-11.11,下载网址:https://www.postgresql.org/docs/..

qq_41924672的博客 4890

基于Patroni+etcd+流复制搭建PostgreSQL高可用——筑梦之路

是一个基于zk、etcd、consul等的pg ha模板,可以使用python来创建和定制高可用性解决方案。Patroni使用分布式key-value数据库作为数据存储,主节点故障时进行主节点重新选举。通过PG内置的流复制,支持同步和异步复制。由于数据库信息记录在ETCD中,

筑梦之路 4644

fast-lio2复现跑avia数据集

本文详细介绍了在Windows WSL2中安装Ubuntu 22.04并配置ROS2 Humble环境的全过程,涵盖系统初始化、ROS2安装、Livox雷达驱动编译及FAST-LIO2 ROS2版本的构建与验证。通过完整数据集回放与建图测试,成功实现点云地图生成与轨迹记录,并利用evo工具完成轨迹分析与可视化。最终输出包括累积点云地图、位姿轨迹及实验配置文件,为后续精度评估与复现提供基准。

chase_my_dream的博客 369

linux学习

sudo make install:组装好的家具(编译好的库文件),原本放在你的临时工作区。坏处是,你的程序体积会变大。于是,他会根据你的计划书,结合你电脑的当前情况(比如装了什么编译器,库在哪),生成一本极度详细的《施工进度表》。很多大牌的第三方库(比如你刚装的 libevent)为了照顾不同的需求,会同时提供动态库(.so)和静态库(.a),但并不是所有库都这样。只有动态库:常见于系统的核心库(比如你系统的底层 C 库),或者一些商业闭源软件(厂商只给你一个黑盒子,不让你直接把代码打包进你的程序)。

d_mail的博客 194

ubuntu 偶发启动失败问题分析

ubuntu 系统启动偶发异常问题分析

平面到立体 193

MySQL系统篇,库的操作(三):建库、字符集校验规则与备份恢复

本文系统讲解MySQL数据库创建与管理,聚焦字符集(CHARACTER SET)与校验规则(COLLATE)的核心作用:前者决定字符存储范围,后者影响比较与排序逻辑。通过对比utf8_general_ci(不区分大小写)与utf8_bin(二进制比较)的实测差异,揭示其对查询结果和排序顺序的显著影响。文章还详解CREATE DATABASE语法、IF NOT EXISTS防错机制、命名规范及跨版本兼容性问题,并强调新项目应优先使用utf8mb4以支持完整Unicode。最后提供SHOW CREATE DAT

dasdasfv的博客 316

Spring 事务详解:@Transactional 如何生效、何时回滚、传播行为怎么选

从订单与库存写入出发,拆解 @Transactional 的代理调用链、默认回滚规则与自调用问题;通过 Spring Boot + H2 的五个验证用例比较 REQUIRED、REQUIRES_NEW、NESTED,并说明数据库事务与 Redis、消息和远程接口的边界。

qq_74421990的博客 332

Oracle多租户集群PDB异机恢复至单机部署数据库

本文详细演示了将Oracle RAC集群中的PDB(RMAN_PDB)通过RMAN备份恢复至单机CDB的全过程。首先在源库创建测试PDB并插入数据,随后配置RMAN备份路径,备份该PDB及其元数据文件。接着将备份文件传输至单机环境,启动实例并恢复控制文件与数据文件,最后利用DBMS_PDB.EXPOSE_PDB_FROM_RMAN生成PDB描述文件,将其插入新单机CDB中,实现PDB的独立使用。整个流程涵盖数据准备、备份、恢复及插入,完整验证了跨环境PDB迁移的可行性。

qq_57492774的博客 201

IvorySQL 是怎么把 Oracle 兼容塞进 PostgreSQL 内核的

IvorySQL 以“不重写内核、紧跟 PG 上游”为路径,通过会话级 compatible_mode 实现 Oracle 与 PostgreSQL 方言共存,依托独立解析器和 PL/iSQL 支持存储过程、包、隐式转换等核心特性,兼容性覆盖语法、数据类型、系统视图及扩展生态。其双测试框架保障与上游同步,避免兼容层拖累原生功能。相比 openGauss 等深度改造方案,IvorySQL 更适合存量 PL/SQL 多、欲保生态、追求开源与可迁移性的场景,是 Oracle 迁移中兼具可行性与前瞻性的选择。

u011436548的专栏 244

Oracle日志体系分层结构与故障定位路径

Oracle日志不止是告警日志,实例层、会话层与存储层各司其职。本文按ADR目录结构梳理告警日志、跟踪文件、重做与归档、监听与审计记录的分工,给出挂起转储、会话跟踪、日志挖掘等取证手段的触发条件与代价,并用实例终止、连接风暴、批量作业变慢三个场景推演完整排查路径,附日志治理与常见误区清单。

搞定过:百亿级数据、万级QPS、零宕机、AI工业化。 234
上一篇: 交个朋友 | 白鲸开源科技与瀚高股份IvorySQL完成产品兼容性互相认证!
下一篇: 上周六的南京,近百位南京PG圈爱好者都来啦!
IvorySQL
博客等级 码龄5年 745粉丝 565原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值