如何在Adminer中克隆数据库 无函数存储过程复制选项求解
Adminer实现含函数/存储过程/事件的全量数据库克隆方案
Adminer原生暂未提供一键完整克隆数据库的功能,自带的跨库复制能力仅支持同步表结构、表数据,没有开放函数、存储过程、事件、触发器等非表对象的复制选择入口,现有功能界面如下:
可通过以下三种可落地的方案实现完整数据库克隆:
方案1:原生导出导入法(无需装插件/额外工具,最通用)
这是兼容性最高、不需要修改Adminer配置的方案,全流程都可在Adminer网页端完成:
- 选中需要复制的源数据库,点击左侧菜单栏的「导出」按钮
- 导出配置页中,除默认勾选的表结构、表数据选项外,手动勾选函数、存储过程、事件、触发器、视图所有需要同步的对象类型,导出格式选择SQL,将生成的SQL文件保存到本地
- 提前创建好目标数据库(若要复制到已存在的数据库可跳过建库步骤),切换到目标数据库后点击左侧「导入」按钮,上传刚才保存的SQL文件执行即可,所有对象会被完整同步到目标库
注意:如果目标库内已经存在同名对象,导入前请提前确认是否需要备份清理,避免主键冲突、对象定义覆盖的问题。
方案2:插件扩展法(适合频繁做库复制的场景)
如果日常需要经常做跨库克隆操作,可以安装Adminer官方生态的数据库复制插件,补全原生功能缺口:
- 下载对应版本的
adminer-database-copy插件文件,放到Adminer部署目录下的plugins文件夹 - 在Adminer的配置文件中添加插件加载配置,刷新网页后即可在数据库操作栏看到「全量复制数据库」的入口
- 进入复制页后可自由勾选需要同步的对象类型,支持一键选择表、视图、函数、存储过程、事件,直接在网页端完成跨库复制,不需要手动导出导入文件。
方案3:SQL命令直写法(适合有数据库高级权限的场景)
以MySQL/MariaDB类数据库为例,只要账号有读取系统表、建库、创建对象的权限,可以直接在Adminer的SQL命令执行窗口完成操作:
- 首先执行建库语句创建目标库:
CREATE DATABASE IF NOT EXISTS `你的目标库名` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
- 从系统表中查询生成所有函数、存储过程、事件、触发器的创建语句,将语句内的源库名替换为目标库名后执行,完成非表对象的同步
- 回到原生跨库复制功能页,全选所有表执行复制,同步所有表结构和数据,即可完成完整克隆。
内容的提问来源于stack exchange,提问作者Er.KT
相关产品推荐
相关产品推荐

