PG如何实现跨大版本升级

PostgreSQL-大版本升级(pg_upgrade方式) pg_upgrade 会创建新的系统表,并以重用旧的数据文件的方式进行升级。pg_upgrade 的参数选项如下:-b bindir,--old-bindir=bindir:旧的 PostgreSQL 可执行文件目录;-B bindir,--new-bindir=bindir:新的 PostgreSQL 可执行文件目录;-c,--check:只检查升级兼容性,不更改任何数据-d configdir,--old-datadir=configdir:旧版本的数据目录。 阅读详情

数据库进行升级,是一个再正常不过的功能,比如功能的需要,遇到BUG,安全漏洞等等,具体升级包含子版本升级,主版本升级。如果用过ORACLE的朋友,一定知道,在ORACLE中,如果要实现大版本的升级,比如从11g,升级到19c,一般使用的dbua来完成,并且标准的升级,一定会有数据库停机时间,小版本的升级,如19.3,升级到19.24 ,使用OPATCH 工具来完成,一样需要停数据库。

那对于PG,一样也存在升级,如果是小版本升级,比如12.0 升级到12.19 ,直接使用二进制文件替换即可,如果是大版本升级,一般使用 pg_upgrade来完成,当然,如果时间允许,也可以使用pg_dumpall也行。只是时间要长一些。

关于PG_UPGRADE的使用,可以参见官方文档:PostgreSQL: Documentation: 16: pg_upgrade

部分截图如下:

PG_UPGRADE 的用法:

      pg_upgrade -b oldbindir [-B newbindir] -d oldconfigdir -D newconfigdir [option...]

        

目前pg_upgrade 支持从 9.2.x 到目前最新的版本,甚至BETA版本。

下面我们以一个升级案例来说明:

目录

1.升级环境

2.源码安装新版本16.3

3.关闭源和目标数据库

4.执行升级检查

5.正式升级

6.修改环境变量

7.修改初始参数

8.启动PG并调整PG_UPGRADE要求的脚本

9.结果验证

10、联系我们


1.升级环境

源版本:pg 12.0     

              PGHOME=/u01/app/postgres/product/12.0/dbhome_1

              PGDATA=/u01/app/postgres/product/pgdata_12

              PORT=5432

目标版本:pg 16.3

             PGHOME=/u01/app/postgres/product/16.3/dbhome_1

             PGDATA=/u01/app/postgres/product/pgdata

             PORT=5432

操作系统:OpenEuler 24.03

sztechdb=# select * from version();
                                                  version                                                  
-----------------------------------------------------------------------------------------------------------
 PostgreSQL 12.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 12.3.1 (openEuler 12.3.1-30.oe2403), 64-bit
(1 row)
 

2.源码安装新版本16.3

  这个步骤,可以参见前面的文档:https://blog.youkuaiyun.com/cqsztech/article/details/140748640

  如果源端有额外的插件,需要安装

  这里安装,只需要到 initdb即可,不需要打开

postgres@openeuler2403 bin]$ ./initdb --pgdata=/u01/app/postgres/pgdata -U postgres
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "zh_CN.UTF-8".
The default database encoding has accordingly been set to "UTF8".
initdb: could not find suitable text search configuration for locale "zh_CN.UTF-8"
The default text search configuration will be set to "simple".

Data page checksums are disabled.

fixing permissions on existing directory /u01/app/postgres/pgdata ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Asia/Shanghai
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

initdb: warning: enabling "trust" authentication for local connections
initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

    pg_ctl -D /u01/app/postgres/pgdata -l logfile start
 

3.关闭源和目标数据库

  把源和目标数据库都关闭。

  [postgres@openeuler2403 pgdata_12]$ pg_ctl stop
        waiting for server to shut down.... done
        server stopped

4.执行升级检查

        是否能升级,正式升级之前,可以先检查一下,有点试升级的味道。

        注意,执行PG_UPGRADE命令,需要在高版本的环境下运行

        先看看pg_upgrade 的用法:

        

   

[postgres@openeuler2403 bin]$ pg_upgrade -c --old-datadir=/u01/app/postgres/pgdata_12 \
>                                           --new-datadir=/u01/app/postgres/pgdata \
>                                           --old-bindir=/u01/app/postgres/product/12.0/dbhome_1/bin \
>                                           --new-bindir=/u01/app/postgres/product/16.3/dbhome_1/bin

查看丢失的库是什么

[postgres@openeuler2403 pgdata_12]$ cat /u01/app/postgres/pgdata/pg_upgrade_output.d/20240801T164259.299/loadable_libraries.txt
could not load library "$libdir/pgcrypto": ERROR:  could not access file "$libdir/pgcrypto": ûĿ¼
In database: postgres

--暂时源端去掉这个插件

postgres=# drop extension pgcrypto;
DROP EXTENSION
 

再次检查,OK。

5.正式升级

  [postgres@openeuler2403 bin]$ pg_upgrade --old-datadir=/u01/app/postgres/pgdata_12  \
>                                        --new-datadir=/u01/app/postgres/pgdata     \
>                                        --old-bindir=/u01/app/postgres/product/12.0/dbhome_1/bin \
>                                        --new-bindir=/u01/app/postgres/product/16.3/dbhome_1/bin

Performing Consistency Checks
-----------------------------
Checking cluster versions                                     ok
Checking database user is the install user                    ok
Checking database connection settings                         ok
Checking for prepared transactions                            ok
Checking for system-defined composite types in user tables    ok
Checking for reg* data types in user tables                   ok
Checking for contrib/isn with bigint-passing mismatch         ok
Checking for incompatible "aclitem" data type in user tables  ok
Checking for user-defined encoding conversions                ok
Checking for user-defined postfix operators                   ok
Checking for incompatible polymorphic functions               ok
Creating dump of global objects                               ok
Creating dump of database schemas                             
                                                              ok
Checking for presence of required libraries                   ok
Checking database user is the install user                    ok
Checking for prepared transactions                            ok
Checking for new cluster tablespace directories               ok

If pg_upgrade fails after this point, you must re-initdb the
new cluster before continuing.

Performing Upgrade
------------------
Setting locale and encoding for new cluster                   ok
Analyzing all rows in the new cluster                         ok
Freezing all rows in the new cluster                          ok
Deleting files from new pg_xact                               ok
Copying old pg_xact to new server                             ok
Setting oldest XID for new cluster                            ok
Setting next transaction ID and epoch for new cluster         ok
Deleting files from new pg_multixact/offsets                  ok
Copying old pg_multixact/offsets to new server                ok
Deleting files from new pg_multixact/members                  ok
Copying old pg_multixact/members to new server                ok
Setting next multixact ID and offset for new cluster          ok
Resetting WAL archives                                        ok
Setting frozenxid and minmxid counters in new cluster         ok
Restoring global objects in the new cluster                   ok
Restoring database schemas in the new cluster                 
                                                              ok
Copying user relation files                                   
                                                              ok
Setting next OID for new cluster                              ok
Sync data directory to disk                                   ok
Creating script to delete old cluster                         ok
Checking for extension updates                                notice

Your installation contains extensions that should be updated
with the ALTER EXTENSION command.  The file
    update_extensions.sql
when executed by psql by the database superuser will update
these extensions.

Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade.
Once you start the new server, consider running:
    /u01/app/postgres/product/16.3/dbhome_1/bin/vacuumdb --all --analyze-in-stages
Running this script will delete the old cluster's data files:
    ./delete_old_cluster.sh
[postgres@openeuler2403 bin]$ 

6.修改环境变量

[postgres@openeuler2403 bin]$ cat ~/.bash_profile
# Source /root/.bashrc if user has one
[ -f ~/.bashrc ] && . ~/.bashrc
export PGPORT=5432
export PGDATA=/u01/app/postgres/pgdata
export PGHOME=/u01/app/postgres/product/16.3/dbhome_1
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
export PATH=$PGHOME/bin:$PATH:.
export PGHOST=$PGDATA
export PGUSER=postgres
export PGDATABASE=postgres
export PGCLIENTENCODING=GBK

7.修改初始参数

cat >> $PGDATA/postgresql.conf << "EOF"

listen_addresses = '*'

port=5432

unix_socket_directories='/u01/app/postgres/pgdata'

logging_collector = on

log_directory = 'pg_log'

log_filename = 'postgresql-%a.log'

log_truncate_on_rotation = on

max_connections = 500

shared_buffers = 2GB

EOF

cat >> $PGDATA/pg_hba.conf << "EOF"

# TYPE  DATABASE    USER    ADDRESS       METHOD

host      all       all    0.0.0.0/0        md5

EOF

8.启动PG并调整PG_UPGRADE要求的脚本

--插件更新

[postgres@openeuler2403 pgdata]$ psql -f /u01/app/postgres/product/16.3/dbhome_1/bin/update_extensions.sql
You are now connected to database "postgres" as user "postgres".
ALTER EXTENSION
ALTER EXTENSION
ALTER EXTENSION

--收集统计信息

[postgres@openeuler2403 pgdata]$ /u01/app/postgres/product/16.3/dbhome_1/bin/vacuumdb --all --analyze-in-stages
vacuumdb: processing database "postgres": Generating minimal optimizer statistics (1 target)
vacuumdb: processing database "sztechdb": Generating minimal optimizer statistics (1 target)
vacuumdb: processing database "template1": Generating minimal optimizer statistics (1 target)
vacuumdb: processing database "postgres": Generating medium optimizer statistics (10 targets)
vacuumdb: processing database "sztechdb": Generating medium optimizer statistics (10 targets)
vacuumdb: processing database "template1": Generating medium optimizer statistics (10 targets)
vacuumdb: processing database "postgres": Generating default (full) optimizer statistics
vacuumdb: processing database "sztechdb": Generating default (full) optimizer statistics
vacuumdb: processing database "template1": Generating default (full) optimizer statistics

--删除老版本的文件

[postgres@openeuler2403 pgdata]$ cat /u01/app/postgres/product/16.3/dbhome_1/bin/delete_old_cluster.sh
#!/bin/sh

rm -rf '/u01/app/postgres/pgdata_12'
rm -rf '/data/pgdata/PG_12_201909212'
[postgres@openeuler2403 pgdata]$ /u01/app/postgres/product/16.3/dbhome_1/bin/delete_old_cluster.sh
[postgres@openeuler2403 pgdata]$ ls -ltr /u01/app/postgres/
总计 8
drwxrwxr-x.  4 postgres postgres   30  7月31日 17:53 product
drwxr-xr-x.  2 postgres postgres 4096  7月31日 19:17 archive_log
drwx------. 21 postgres postgres 4096  8月 1日 17:36 pgdata
[postgres@openeuler2403 pgdata]$ ls -ltr /data/pgdata/
总计 8
drwx------ 3 postgres postgres 4096  8月 1日 09:23 PG_16_202307071_bak
drwx------ 3 postgres postgres 4096  8月 1日 17:27 PG_16_202307071

9.结果验证

到此,PG_UPGRADE 升级就完成了。

但感觉PG_UPGRADE还是有一些遗憾,

1.整个升级,都是命令行完成,没有图形界面,不太直观

2.升级过程中,数据文件路径要变化,不能就数据文件原地升级,也许是强迫症吧。

10、联系我们

如果你还想和我交流,可以按如下方式找到我们。

----------------------------------------------------------------------
微信群:水煮数据库

主要交流日常运维中用到的数据库相关问题,包含但不限于:ORACLE,PG,MYSQL,SQLSERVER,OB,TIDB,达梦,TDSQL,OPENGAUSS,人大金仓,GBASE等等,

加我微信:zq24803366,备注:水煮数据库, 我拉你入群。
----------------------------------------------------------------------

   

pg课堂笔记-新版本特性和版本升级 版本特性:一年一个大版本,三个月一个小版本9.4支持 jsonb​9.6 支持并行​10 支持逻辑复制和声明分区​11 支持jit 、存储过程​14 引入 idle_session_timeout​15 逻辑复制有大幅度提升​16 支持standby logical replication ,并行回放, 以及 libpq的负载均衡。 阅读详情

相关推荐

pg_upgrade 版本升级

--对于小版本的升级,内部存储格式是兼容的,大版本不一定兼容 --小版本可以直接替换二进制文件,大版本需要导出与导入升级 Minor releases never change the internal storage format and are always compatible with earlier and later minor releases of the same major v

rudy gao 2530

PostgreSQL版本升级,选pg_upgrade还是逻辑复制?我对比了这两种主流方案

本文深度对比了PostgreSQL版本升级的两种主流方案:pg_upgrade和逻辑复制。通过分析核心机制、适用场景及生产环境决策矩阵,帮助技术负责人根据数据规模、业务连续性等关键因素选择最优升级策略,并提供风险防控建议和前沿趋势展望。

weixin_29297127的博客 124

2.postgresSQL跨版本升级

pg_upgrade 是 PostgreSQL 官方提供的工具,用于在不同大版本之间进行无损升级。升级前需进行全量备份和文件系统备份,并检查目标版本的兼容性。升级过程中,需停止旧版本服务,编译安装新版本,并配置新版本的二进制目录和 systemd 服务。使用 pg_upgrade 执行升级时,需指定旧版本和新版本的二进制目录及数据目录。升级完成后,需重新收集统计信息以优化查询性能,并验证新数据库的正常运行。最后,可删除旧集群数据以释放磁盘空间。

liuzhuoqi的博客 1679

pg大版本升级之pg_upgrade

本文主要介绍pg_upgrade这一工具,以pg12升级至pg14为例,给读者演示这一工具如何使用及使用中的注意事项。

HighGO 4516

python基础语法与数据结构

本文摘要: Python基础语法包含输入输出、函数、变量、数据类型及运算符等内容。输入函数input()获取键盘输入并以字符串存储,输出函数print()可格式化输出数据。函数通过def定义,可带参数和返回值,提高代码复用性。变量无需声明类型,可动态赋值。数据类型包括数字、字符串、布尔及复合类型,可通过type()查看。运算符包含算术、赋值等类型,其中复合赋值运算符如+=可简化运算。类型转换函数如int()、str()等可实现显式类型转换。这些基础语法构成Python编程的核心要素。

MM602388的博客 433

ROS学习【11】-----基于ubuntu16.04上Gazebo机器人环境搭建的传感器仿真(camera、kinect、Lidar),并通过Rviz进行数据显示

ROS学习-----基于ubuntu16.04上Gazebo机器人环境搭建的传感器仿真目录一、Gazebo环境搭建前的准备1、将搭建模型下载到我们的gazebo环境下2、升级我们的gazebo版本二、创建配置launch文件参数的world文件1、进入工程包mbot_gazebo2、创建文件夹worlds3、进入该文件夹4、创建playground.world文件5、创建room.world文件三...

qq_42451251的博客 3607

postgresql数据库升级,小版本及大版本 pg_upgrade

使用pg_upgrade的link模式升级:首先需要了解旧版本有哪些Extension及表空间,当使用链接模式运行pg_upgrade之后,pg_upgrade程序会把旧版本数据目录中的pg_control文件重命名为pg_control.old,如果仍然想运行旧版本的数据库实例,需要把pg_control.old重命名回pg_control。在普通模式下,会把旧版本的数据拷贝到新版本中,所以如果使用普通模式升级,要确保有足够的磁盘空间存储新旧两份数据;6)使用pg_upgrade普通模式升级。

jnrjian的博客 6345

vasp计算练习1-Si

si的vasp训练流程

qq_41074165的博客 3295

PostgreSQL 利用pg_upgrade升级版本

根据官方文档介绍,PostgreSQL 每次升级主要体现在系统表的改变,对于数据文件的格式基本不做改动,因此利用这个特性,只要重建所有系统表,复用原有数据文件,即可完成升级。需要注意的是,即便如此,该方法也有一定的限制,在官方文档的NOTE部分有详细说明。一是使用pg_dump/pg_restore,该方法比较耗时,也即是停机时间比较长,特别是大数据量下,但是 稳定且易于操作。二是和MySQL那样利用复制的方式,停机时间短,但操作相对复杂。2. 安装新版PostgreSQL。3. 停止新旧数据库服务。

Baiyi_destroyer的博客 889

槽型光电开关传感器原理图设计,已量产(光电传感器)

在嵌入式设备的位置限位、物料计数等场景中,槽型光电开关是性价比极高的传感器方案 —— 它通过遮挡发射器与接收器之间的光路实现电平切换,电路简单且抗干扰性优于漫反射式光耦。今天分享一个实际项目中落地的槽型光电开关检测电路,从器件选型到逻辑设计都做了简化适配,适合小批量原型或低成本产品的需求。

不脱发的程序猿 716

python爬取银行年报2

python爬取公司年报(巨潮资讯网)

bboysteed的博客 4730

PostgreSQL升级:使用pg_upgrade进行大版本(16.3)升级(17.0)

使用 pg_upgrade -c 只会检查新旧版本的兼容性,不会运行真正的升级程序,不会修改数据文件,并且在命令结束时,会输出一份检查结果的报告,还会对需要手动调整的项做出简要的描述。pg_upgrade 会创建新的系统表,并重用旧的数据进行升级,统计信息并不会随升级过程迁移,所以在启用新版本之前,应该首先重新收集统计信息,避免没有统计信息导致错误的查询计划。-B bindir,--new-bindir=bindir:新的 PostgreSQL 可执行文件目录;

听雪楼主 4142

AI上推荐 之 逻辑回归模型与GBDT+LR(特征工程模型化的开端)

1. 前言 随着信息技术和互联网的发展, 我们已经步入了一个信息过载的时代,这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战: 信息消费者:如何从大量的信息中找到自己感兴趣的信息? 信息生产者:如何让自己生产的信息脱颖而出, 受到广大用户的关注? 为了解决这个矛盾, 推荐系统应时而生, 并飞速前进,在用户和信息之间架起了一道桥梁,一方面帮助用户发现对自己有价值的信息, 一方面让信息能够展现在对它感兴趣的用户前面。 推荐系统近几年有了深度学习的助推发展之势迅猛, 从前深度学习的传统推荐模型(协

Miracle8070 8251

pg 大版本升级方法 及 pg_upgrade就地升级测试

一、 主要升级方法 PostgreSQL自身有三种大版本升级的方法: 三种方法升级建议架构如下: 另外根据pg大会介绍,还有一种升级工具叫做PgQ 其特点如下 二、pg_upgrade就地升级测试 1. 测试环境 测试postgresql 9.6 升级至 postgresql 10.4 源库:9.6环境 prefix目录: ...

Hehuyi_In的博客 3687

isaaclab无法识别NVIDIA显卡,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!    📌 特别说明: 文中部分技术问题来源于真实生产环境及网络公开案例,均经过精挑细选与系统化整理,并结合多位一线资深架构师和工程师多年实战经验沉淀,提

**My Coding Family** 1146

倍福EL6002做RS232通信获取称重数据..

本文介绍EL6002模块通过RS232自由口通信协议获取从站数据。具体数据对照说明手册即可。

weixin_41883890的博客 1011

pg之使用pg_upgrade进行大版本升级

官网:https://www.postgresql.org/docs/current/pgupgrade.html 描述 pg_upgrade(以前称为pg_migrator)允许存储在PostgreSQL数据文件中的数据升级到更高的PostgreSQL主版本,而不需要进行主版本升级所需的数据转储/重新加载,例如从9.5.8升级到9.6.4或从10.7升级到11.2。对于较小的版本升级,例如从9.6.2升级到9.6.3或从10.1升级到10.2,它不是必需的。 主要的PostgreSQL版本会定期添加

深海微澜 2516

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

PG大小版本升级步骤

PG大小版本升级步骤,大版本pg_upgrade方式

qq961573863的博客 1888

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

PostgreSQL 数据库跨版本升级常用方案

本文介绍了 PostgreSQL 数据库版本升级的 3 种常用方案,包括通过 pg_dump/pg_dumpall 逻辑备份与还原进行升级,利用 pg_upgrade 工具进行升级,使用逻辑复制功能进行升级。了解它们的优缺点和适用场景可以帮助我们选择最佳的升级方式。

Tony.Dong的专栏 1万+

PG版本升级

~不适用于大数据库~~pg_upgrade速度快,搭配并行和link模式,但是需要停机~~逻辑复制最平滑~~由于dump+restore总体相对耗时较长,因此不适用于大数据量的数据库,或是写入比较频繁的场景使用。尤其是对于核心的业务程序(特别是有99.999保证的程序)来说是不可接受的,好处就是十分安全,当然也可以不停机,使用逻辑复制搭配decoder_raw等Plugins解析出备份之后的操作SQL,不过不能保证一致性。~~

ArchonSbkd的博客 1429

PostgreSQL - 跨版本升级的技巧与问题排查

PostgreSQL跨版本升级指南:策略与实践 本文详细介绍了PostgreSQL数据库跨版本升级的两种核心方法。对于逻辑升级(pg_dump/pg_restore),文章提供了从安装新版本到验证数据的完整步骤,特别适合中小型数据库或需要数据清洗的场景。针对大型数据库,重点讲解了物理升级(pg_upgrade)的快速迁移方案,强调其秒级切换的优势和兼容性要求。文章还包含Java应用配置示例和性能优化技巧,帮助开发者在最小停机时间内完成安全升级。无论选择哪种方法,都强调了备份验证和测试环境演练的重要性,确保升

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

线上版本升级 — — pg数据库备份

线上版本升级 — — pg数据库备份

weixin_45565886的博客 4334

RDS PostgreSQL一键大版本升级技术解密

简介: 内容简要: 一、PostgreSQL行业位置 二、PostgreSQL版本升级背景 三、PostgreSQL版本升级解密 四、PostgreSQL版本升级成果 一、PostgreSQL行业位置 (一)行业位置 在讨论PostgreSQL(下面简称为PG)在整个数据库行业的位置之前,我们先看一下阿里云数据库在全球的数据库行业里的位置。 魔力象限领导者 *Gartner 2020,阿里云数据库挺进全球数据库魔力象限领导者 PG年度最佳产品奖 *2020 PG亚洲大会上,阿里云数据库专属

阿里云云栖号 1309

如何看pg数据库版本号_PostgreSQL通过pg_upgrade进行大版本升级

PostgreSQL自身有两种大版本升级(比如从pg9.2到pg9.4,可以跨一个或多个大版本)的方法:1.通过pg_upgrede升级.(该方法对数据量较大时,速度更快)2.先从老版本执行pg_dump,再到新版本执行pg_restore.(该方法在数据量较大时,速度较慢)本文主要介绍使用pg_upgrade的方法、步骤以及相关的注意事项。一、使用pg_upgrade升级的各步要求1.移动旧的数...

weixin_39900023的博客 994

PG大版本升级

PG大版本升级

a17603877842的博客 1424

pg大版本升级

pg14.9升级16.4

DBA成长之路 1299
上一篇: 再论pg归档日志的设置
下一篇: MySQL 5.7.42升级到MySQL 8.4.2
cqsztech
博客等级 码龄13年 549粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值