首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不同架构的同一服务器上进行MySQLDump备份和恢复

问在不同架构的同一服务器上进行MySQLDump备份和恢复
EN

Stack Overflow用户
提问于 2021-09-25 08:34:43
回答 1查看 52关注 0票数 0

我有一个staging MySQL db,我在其中创建了用于数据加载的中间表。我想使用mysqldump将这个数据库迁移到Prod,但只使用生产中需要的表(以及所有例程、事件和触发器)。

在我将脚本交给平台团队在生产中执行之前,我想在本地测试它,所以我们在同一台服务器上创建了一个单独的模式,并尝试了以下内容:

我们尝试了不带--add-drop database的mysqldump命令,而是使用了--no-create-db,因为我担心在还原过程中,存储过程定义中的"use stage“语句可能会更改数据库并清除我的阶段数据库。结果是表被复制了,但例程没有。

有没有办法在这样做的同时做到这一点:

A.选择表的子集以及所有例程和事件

B.在不同的架构中恢复它们

C.而不会冒着破坏原始模式的风险?

EN

回答 1

Stack Overflow用户

发布于 2021-09-25 08:48:25

使用:

代码语言:javascript
复制
mysqldump -u username -p password  --hex-blob -R -e --triggers database_name > database_name.sql

您可以根据需要在转储命令中添加或删除选项。

--single-transaction ->选项,如果您不想或不能执行表锁

-d -> -d是--no-data的简称。

-R ->如果您的数据库有存储过程/函数,也可以考虑添加--routines (简称-R

-B ->包含CREATE DATABASE命令。--databases数据库名(缩写:-B数据库名)

-r ->为了避免shell的字符集干扰编码,-r schema.sql比> schema.sql更可取。另外,使用--default- character - set =utf8 (或者其他任何东西)显式指定字符集也是一个好主意。您仍然需要检查转储文件顶部的集合名称。我以前在MySQL字符集编码地狱中被抓到过

--routines ->如果您的数据库有存储过程/函数,也可以考虑添加--routines

如果数据库中具有blob数据类型,则为--hex-blob

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69324468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档