GBase 8c集中式版本备份策略定制及操作流程解析
一、整体功能说明本方案面向 GBase 8c 集中式版本数据库构建一套标准化、可落地的集中式备份运维体系完整覆盖本地备份、远程异地备份两大部署场景同时提供逻辑备份、物理备份两套技术路线配套自动化脚本、定时调度、过期清理、完整恢复操作规范可适配中小业务库、TB 级海量业务集群、跨机房异地灾备等各类生产环境。方案依托 GBase 8c 原生工具 gs_dump逻辑备份、gs_probackup物理增量 /全量备份实现数据保护逻辑备份支持单库、多库选择性导出具备跨环境迁移、误删数据精准回滚能力物理备份支持全量备份 PTRACK 增量备份组合模式搭配归档 WAL 日志实现任意时间点恢复兼顾备份效率与数据完整性。整套流程内置日志记录、自动压缩、生命周期清理机制可通过 crontab 实现无人值守自动备份大幅降低人工运维成本同时统一规范备份目录、保留周期、数据库连接参数便于运维团队统一管控、快速排查备份故障。1. 本地备份本地备份指备份存储介质与 GBase 8c 数据库部署在同一服务器节点适用于单节点、单机集群日常基础数据防护分为逻辑备份、物理备份两类方案可根据业务数据规模灵活选用。1.1 逻辑备份逻辑备份基于 gs_dump 工具完成数据库逻辑对象导出以库为最小备份粒度支持自定义压缩等级、自动打包归档、过期文件自动清理适合中小型业务库、数据迁移、单库误操作恢复场景。1.1.1 备份脚本样例#!/bin/bash if [[ $1 --help ]] || [[ $1 -h ]] || [[ $# 小于2 ]]then echo help for gbase backup scripts echo 第一个参数为主机地址; echo 传递参数为数据库列表,多个数据库使用空格分开,如备份test和emp库执行:sh backup.sh 127.0.0.1 test emp exit -1fi GBASE_HOST$1DATABASES($*)unset DATABASES[0] # gbase的 base目录GBASE_HOME$GAUSSHOME/bin # 数据库链接信息GBASE_PORT15400GBASE_USERregressGBASE_PASSWD******* # 备份目录以及存放备份日志的目录DIR_BACKUP/home/gbase/backupDIR_LOG/home/gbase/backup/bakup_log # 备份数据库列表使用空格隔开# DATABASES(test emp) # DATABASES($(${GBASE_HOME}/gsql -d postgres -p ${GBASE_PORT} -U ${GBASE_USER} -q -c select datname from pg_database where datname not in (template0,template1,gha) | grep -v datname\|(\|--\|))) # gbase备份时的压缩级别0~9,0表示不压缩COMPRESS_LEVEL5 # 设置备份文件保留的天数OVERDUE_DAYS7 DATE$(date %Y%m%d%H%M)BACKUP_FILE${DIR_LOG}/gbase_back_${DATE}.log # 检查备份目录和备份日志目录test -d ${DIR_BACKUP}/gbase_backup_${DATE} || mkdir -p ${DIR_BACKUP}/gbase_backup_${DATE}test -d ${DIR_LOG} || mkdir -p ${DIR_LOG} echo -e $(date %F\ %T) Start backup ${BACKUP_FILE} # 开始按数据库备份for database in ${DATABASES[]}; do echo ------ current backup database : [ ${database} ] ------ ${BACKUP_FILE} ${GBASE_HOME}/gs_dump ${database} -h ${GBASE_HOST} -p ${GBASE_PORT} -U ${GBASE_USER} -W${GBASE_PASSWD} -Z ${COMPRESS_LEVEL} -Fc -f ${DIR_BACKUP}/gbase_backup_${DATE}/${database}_${DATE}.dump ${BACKUP_FILE}done # 打包压缩备份文件,完成后删除原文件cd ${DIR_BACKUP}echo -e \n------$(date %F\ %T) tar backup file------ ${BACKUP_FILE}tar -cvzf gbase_backup_${DATE}.tar.gz gbase_backup_${DATE} --remove-files ${BACKUP_FILE} # 删除过期的备份文件和日志echo -e \n------$(date %F\ %T) rm -rf overdue files------ ${BACKUP_FILE}find ${DIR_BACKUP} -type f -mtime ${OVERDUE_DAYS} -iname gbase_backup_\*.gz -exec rm -rf {} \;find ${DIR_LOG} -type f -mtime ${OVERDUE_DAYS} -iname gbase_bak_\*.log -exec rm -rf {} \; echo -e \n$(date %F\ %T) Backup script finish ${BACKUP_FILE}# 恢复参考命令# gs_restore -p 15433 -U gbase -WQWE123qwe -d test /tmp/test.dump​1.1.2 备份脚本修改点脚本需使用 gbase 操作系统用户创建部署部署前根据现场环境修改以下核心配置项数据库链接信息GBASE_PORT15400 #GBase 8c 数据库服务端口GBASE_USERregress #具备备份权限的数据库账号GBASE_PASSWD******* #备份账号登录密码存储目录配置DIR_BACKUP/home/gbase/backup #备份文件存储根目录DIR_LOG/home/gbase/backup/backup_log #备份运行日志存放目录1.1.3 备份执行修改配置完成后赋予脚本执行权限执行命令格式sh gbase_backup.sh 127.0.0.1 database1 database2参数说明首个参数为数据库主机 IP后续参数为需要备份的数据库名称多库使用空格分隔。1.1.4 备份定时任务挂载每日凌晨 1 点自动执行切换数据库运行用户sudo su - gbase赋予脚本执行权限chmod x /home/gbase/bin/gbase_backup.sh编辑定时任务crontab -e写入定时调度规则0 1 * * * /home/gbase/bin/gbase_backup.sh 127.0.0.1 database1 database21.2 物理备份物理备份依托 gs_probackup 工具直接拷贝数据库底层物理数据文件支持全量备份、PTRACK 增量备份搭配归档 WAL 日志可实现时间点恢复适用于 TB 级大容量数据库、业务高可用场景备份速度快、恢复效率高。1.2.1 备份脚本样例#!/bin/bash retention_redundancy30 #备份文件保留天数 retention_window30 #支持回溯恢复的最大天数 backup_path/home/gbase/backup/pro_backup #物理备份存储根路径archive_log_dir/home/gbase/backup/archive_dir/ #WAL 归档日志存放路径 db_host172.16.5.103 #数据库主机IPdb_port15400 #GBase 8c 服务端口 db_userregress #备份专用账号 db_passwd******* #账号密码 instance_namegbase_probackremote_host${db_host}remote_usergbasecompress_level5compress_algorithmzlibbackup_log/home/gbase/backup/pro_backup/log source ~/.bashrc #自动读取数据库数据目录 data_path$(gsql -d postgres -h ${db_host} -p ${db_port} -U ${db_user} -W ${db_passwd} -c show data_directory; -t | awk NR1) test -d ${backup_log} || mkdir -p ${backup_log}log_file${backup_log}/gbase_backup_$(date %Y%m%d).log #帮助提示函数 function help() { echo This script is used to backup the GBase 8c echo Usage: gbasepro_backup.sh [-b backup-mode] echo backup-mode: backup mode, supporting INIT ,FULL, PTRACK, SHOW [required]. echo INIT: 初始化备份实例配置 echo FULL: 执行物理全量备份 echo PTRACK: 执行增量备份 echo show: 查看历史备份记录 echo Example: echo sh gbasepro_backup.sh -b init echo sh gbasepro_backup.sh -b full echo sh gbasepro_backup.sh -b ptrack echo sh gbasepro_backup.sh -b show exit -1} #读取输入参数 while getopts b:h: option; do case $option in b) BACKUP_MODE${OPTARG,,} ;; h) help ;; \?) help ;; esacdone #初始化备份实例 function config_backup(){ test -d ${backup_path} || mkdir -p ${backup_path} gs_probackup init -B ${backup_path} gs_probackup add-instance -B ${backup_path} -D ${data_path} --instance ${instance_name} --remote-host ${remote_host} --remote-user ${remote_user} gs_probackup set-config -B ${backup_path} --instance ${instance_name} --retention-redundancy ${retention_redundancy} --retention-window ${retention_window} gs_probackup show-config -B ${backup_path} --instance ${instance_name} exit} #全量备份逻辑 function full_backup(){ echo -e \n$(date %F\ %T) starting full backup ${log_file} gs_probackup backup -B ${backup_path} -b FULL -h ${db_host} -p ${db_port} -U ${db_user} -W ${db_passwd} --instance ${instance_name} --delete-expired -d postgres --compress-algorithm${compress_algorithm} --compress-level${compress_level} --remote-host ${remote_host} --remote-user ${remote_user} ${log_file} 21 echo -e \n$(date %F\ %T) finished full backup ${log_file} if [[ $? -eq 0 ]];then echo Database backup successed ! exit fi} #增量备份逻辑 function increment_backup(){ echo -e \n$(date %F\ %T) starting increment backup ${log_file} gs_probackup backup -B ${backup_path} -b PTRACK -h ${db_host} -p ${db_port} -U ${db_user} -W ${db_passwd} --instance ${instance_name} --delete-expired -d postgres --compress-algorithm${compress_algorithm} --compress-level${compress_level} --remote-host ${remote_host} --remote-user ${remote_user} ${log_file} 21 echo -e \n$(date %F\ %T) finished increment backup ${log_file} if [[ $? -eq 0 ]];then echo Database backup successed ! exit fi} #查询备份记录 function show(){ gs_probackup show -B ${backup_path}} #清理过期归档日志与备份文件 function remove_archivelog(){ echo -e \n$(date %F\ %T) starting remove expired archive log ${log_file} find ${archive_log_dir} -name * -mtime ${retention_redundancy} -exec rm -rfv {} \; find ${backup_path} -name * -mtime ${retention_redundancy} -print -exec rm -rfv {} \; ${log_file} 21} #主执行入口 main(){ if [[ $BACKUP_MODE init ]];then config_backup elif [[ $BACKUP_MODE full ]];then full_backup show elif [[ $BACKUP_MODE ptrack ]];then increment_backup show elif [[ $BACKUP_MODE show ]];then show else help fi remove_archivelog} main​1.2.2 备份脚本修改点 数据库前置参数配置脚本内可配置项retention_redundancy30 #备份文件留存天数retention_window30 #可恢复数据时间窗口backup_path/home/gbase/backup/pro_backup #物理备份存储路径archive_log_dir/home/gbase/backup/archive_dir/ #WAL 归档日志路径db_host172.16.5.103 #数据库主机 IPdb_port15400 #数据库端口db_userregress #备份账号db_passwd******* #账号密码remote_usergbase #远程访问操作系统用户compress_level5 #压缩等级compress_algorithmzlib #压缩算法backup_log/home/gbase/backup/pro_backup/log #备份日志目录数据库参数前置配置增量备份必须开启#开启归档模式 gs_guc reload -N all -I all -c archive_modeon#每30分钟自动归档日志 gs_guc reload -N all -I all -c archive_timeout1800#开启增量数据页跟踪PTRACK增量必备 gs_guc reload -N all -I all -c enable_cbm_trackingon#配置归档日志落地路径按磁盘规划调整 gs_guc reload -N all -I all -c archive_command cp %p /home/gbase/backup/archive_dir/%f​1.2.3 备份执行操作#第一步初始化备份实例首次部署仅执行一次 sh gbasepro_backup.sh -b init #第二步执行物理全量备份 sh gbasepro_backup.sh -b full #第三步执行PTRACK增量备份 sh gbasepro_backup.sh -b ptrack #第四步查看所有历史备份记录校验备份有效性 sh gbasepro_backup.sh -b show​1.2.4 备份定时挂载周全量 日增量组合策略采用每周一次全量、每日增量的混合备份策略平衡备份耗时与存储成本切换 gbase 用户sudo su - gbase赋予脚本权限chmod x /home/gbase/bin/gbasepro_backup.sh编辑定时任务crontab -e写入调度规则#每周日凌晨 1 点执行全量备份输出独立日志 0 1 * * 0 /home/gbase/bin/gbasepro_backup.sh -b full /home/gbase/log/gbase_full_$(date \%F).log 21 #周一至周六凌晨 1 点执行增量备份输出独立日志 0 1 * * 1-6 /home/gbase/bin/gbasepro_backup.sh -b ptrack /home/gbase/log/gbase_inc_$(date \%F).log 21​2. 远程异地备份远程备份指备份存储服务器与数据库主机分属不同机房、不同服务器用于异地灾备规避本地服务器磁盘损坏、机房故障导致备份丢失风险。整体执行逻辑与本地备份完全一致仅需满足两项前置条件① 远程备机安装与数据库同版本 GBase 8c 客户端工具② 脚本中数据库 IP 填写集群主节点业务 IP同时配置免密 SSH 通道实现文件传输。2.1 逻辑备份远程逻辑备份脚本、修改参数、执行方式、定时任务与本地逻辑备份完全通用仅需调整数据库 IP 为远端生产库主 IP支持跨机房多库批量导出归档。2.1.1 备份脚本样例同 1.1.1 本地逻辑备份脚本仅修改 GBASE_HOST 为生产库远程 IP。2.1.2 备份脚本修改点仅需根据远程存储服务器磁盘规划修改存储目录DIR_BACKUP/home/gbase/backup #远程备机存储根目录DIR_LOG/home/gbase/backup/backup_log #远程备机日志目录2.1.3 备份执行sh gbase_backup.sh 172.16.X.X database1 database2 参数 1 为远程生产数据库主机 IP后续为待备份数据库名称。2.1.4 备份定时任务挂载定时规则与本地逻辑备份一致在远程备机的 gbase 用户下配置 crontab。2.2 物理备份远程物理备份依托 gs_probackup 远程 SSH 传输能力可直接将生产库物理文件同步至异地备机支持归档日志异地同步满足两地三中心灾备规范。2.2.1 备份脚本样例同 1.2.1 本地物理备份脚本新增异地归档传输配置。2.2.2 备份脚本修改点 异地归档配置脚本内基础参数修改项同本地物理备份异地归档额外配置归档传输命令#异地归档日志传输替换为备机实际IP gs_guc reload -N all -I all -c archive_command scp %p gbase172.16.X.X:/data/mpp/backup/zhck/archive_dir/%f​2.2.3 备份执行执行命令与本地物理备份一致在远程备机执行sh gbasepro_backup.sh -b initsh gbasepro_backup.sh -b fullsh gbasepro_backup.sh -b ptracksh gbasepro_backup.sh -b show​2.2.4 备份定时挂载定时规则与本地物理备份一致在远程灾备服务器配置 crontab 调度。3. 逻辑恢复操作规范逻辑备份文件后缀为.dump适用于单库迁移、误删表 / 库精准恢复恢复前需将备份文件上传至目标恢复服务器执行标准恢复命令gs_restore -p 15400 -U gbase -W****** -d 目标数据库名 /tmp/备份文件.dump​可支持恢复至不同 GBase 8c 兼容版本环境灵活性高适合开发测试环境数据克隆。4. 物理全量恢复操作规范物理恢复依托完整物理备份 归档日志可整实例快速恢复适合服务器硬件故障、集群整体损坏场景恢复至原集群会停止数据库对外服务存在业务中断风险执行前需提前评估业务影响建议业务低峰期操作仅恢复主节点数据目录备节点无需单独恢复。查看集群数据目录gs_om -t status --detail完整停止数据库集群gs_om -t stop备份原有损坏数据目录防止二次数据丢失mv /data/database/install/data/dn /data/database/install/data/dn_bak查询可用备份集 IDsh gbasepro_backup.sh -b show执行本地恢复替换备份集 ID、目标数据目录gs_probackup restore -B /home/gbase/backup/pro_backup --instancegbase_proback -D /opt/software/data/single_node -i T5K5MX异地备机远程恢复命令gs_probackup restore -B /home/gbase/backup/ --instancegbase_cluster -D /home/gbase/restore_test -i T5K5MX --remote-host172.*.*.* --remote-usergbase恢复完成启动集群gs_om -t start方案整体价值体现整套 GBase 8c 集中式版本备份方案覆盖本地基础防护、远程异地灾备双场景融合逻辑、物理两种备份模式形成 “全量 增量 归档日志” 多层级数据保护体系一方面通过自动化脚本与定时调度实现 7×24 小时无人值守备份大幅降低数据库运维人工成本标准化脚本统一参数、日志、清理规则减少人为操作失误另一方面兼顾中小库灵活迁移、海量集群快速恢复的差异化需求物理备份支持分钟级实例恢复、PITR 任意时间点回滚满足金融、政务等行业数据安全监管要求异地备份机制彻底规避单机 / 单机房故障导致的数据彻底丢失风险。同时方案内置备份生命周期自动清理、完整运行日志留存、备份集校验能力可快速定位备份失败问题平衡存储资源消耗与数据留存周期在保障数据零丢失、缩短故障 RTO/RPO 恢复指标的前提下最大化降低企业存储与运维投入构建稳定、合规、低成本的 GBase 8c 数据库数据安全防线。

相关新闻

生成式AI驱动的银行碳账户:从行为反馈到金融激励

生成式AI驱动的银行碳账户:从行为反馈到金融激励

1. 项目概述:当银行App开始“算碳账”,这不只是技术升级,而是金融逻辑的重构“地球的资源足以满足我们的需要,却不足以填满我们的贪婪。”——甘地这句话被印在无数环保报告的首页,但真正把它变成可执行动作的&#xf…

2026/7/2 11:25:08阅读更多 →
CX6 PFC / DCQCN sysfs 目录文件简述

CX6 PFC / DCQCN sysfs 目录文件简述

CX6 PFC / DCQCN sysfs 目录文件简述1. PFC / QoS 相关目录路径:/sys/class/net/enp9s0f0np0/qos/当前文件:buffer_size maxrate prio2buffer tc_numprio2buffer描述 priority 到 buffer 的映射关系。示例:Priority Buffer 0 1 …

2026/7/2 11:25:08阅读更多 →
Java程序员转行AI应用开发:收藏这份避坑指南,小白也能轻松上手大模型

Java程序员转行AI应用开发:收藏这份避坑指南,小白也能轻松上手大模型

本文分享了自己从传统Java后端转向AI应用开发的经历。文章重点介绍了AI应用开发与单纯调API的区别,详细阐述了RAG、Agent、MCP等关键技术的实现细节和常见问题。同时,文章探讨了Java程序员在AI应用开发中的优势和机遇,鼓励Java开发者积极探索…

2026/7/2 11:25:08阅读更多 →
近 5 万 Star 的中国独立开发者项目列表,看看别人都在做什么

近 5 万 Star 的中国独立开发者项目列表,看看别人都在做什么

文章目录近 5 万 Star 的中国独立开发者项目列表,看看别人都在做什么这个仓库到底是什么为什么这么多人关注仓库的结构我翻完之后的感受近 5 万 Star 的中国独立开发者项目列表,看看别人都在做什么 GitHub 上有一个仓库,专门收集中国独立开发…

2026/7/2 14:10:39阅读更多 →
基于STM32F439ZG与MAX9744的高效音频系统设计

基于STM32F439ZG与MAX9744的高效音频系统设计

1. 项目背景与核心价值 在音频系统设计中,功率放大器的选择直接影响最终的声音表现。传统AB类放大器虽然音质优秀,但效率低下(通常只有50%左右),导致发热严重、体积笨重。而D类放大器(如MAX9744&#xff09…

2026/7/2 14:10:39阅读更多 →
鱼香ros一键安装命令

鱼香ros一键安装命令

wget http://fishros.com/install -O fishros && . fishros

2026/7/2 14:10:39阅读更多 →
13DOF传感器与PIC18F2525实现低成本高精度定位导航

13DOF传感器与PIC18F2525实现低成本高精度定位导航

1. 项目背景与核心需求在嵌入式系统开发领域,精准的定位与导航能力一直是技术攻坚的重点方向。传统方案往往面临成本、精度和实时性难以兼顾的困境。这个项目通过13DOF传感器与PIC18F2525微控制器的创新组合,试图在低成本硬件平台上实现媲美专业级设备的…

2026/7/2 14:10:39阅读更多 →
OBS AI背景移除技术深度解析:从神经网络架构到实时视频处理的实战指南

OBS AI背景移除技术深度解析:从神经网络架构到实时视频处理的实战指南

OBS AI背景移除技术深度解析:从神经网络架构到实时视频处理的实战指南 【免费下载链接】obs-backgroundremoval An OBS plugin for removing background in portrait images (video), making it easy to replace the background when recording or streaming. 项目…

2026/7/2 14:10:39阅读更多 →
STM32F469II与25CSM04 SPI EEPROM高速数据存储方案

STM32F469II与25CSM04 SPI EEPROM高速数据存储方案

1. 项目背景与核心需求 在嵌入式系统开发中,快速精确的数据检索一直是个关键挑战。传统方案往往需要在存储容量、访问速度和成本之间做出妥协。25CSM04这颗4Mb SPI EEPROM与STM32F469II高性能MCU的组合,恰好能平衡这三者关系。 我最近在一个工业传感器项…

2026/7/2 14:05:38阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/2 12:10:34阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/2 12:10:34阅读更多 →
塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧

塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧

塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 想在《塞尔达传说:旷野之息…

2026/7/2 0:03:01阅读更多 →
告别 AccessKey:多云平台 CLI OAuth 免密认证完全指南

告别 AccessKey:多云平台 CLI OAuth 免密认证完全指南

在本地开发环境使用云厂商 CLI 时,传统的 AccessKey(AK)方式需要手动创建、下载和保管密钥,不仅繁琐,还存在泄漏风险。其实,主流云平台都已提供基于 OAuth 2.0 的免密认证方案,让开发者可以通过浏览器登录一次性完成授权,CLI 自动管理临时凭证的刷新,兼顾了便利与安全…

2026/7/2 0:03:01阅读更多 →
基于13DOF传感器与PIC32MZ的高精度嵌入式导航系统设计

基于13DOF传感器与PIC32MZ的高精度嵌入式导航系统设计

1. 项目背景与核心价值在嵌入式系统开发领域,高精度定位与导航一直是极具挑战性的技术方向。传统方案往往面临成本、精度和实时性难以兼顾的困境。这个项目通过13DOF(13自由度)传感器组合与PIC32MZ2048EFH100高性能MCU的协同工作,…

2026/7/2 0:03:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/2 0:33:58阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/2 1:32:11阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/2 1:50:13阅读更多 →