我们如何从 mysqldump 文件中恢复不同名称的 mysql 数据库。我不想打开转储文件并对其进行编辑。还有其他更好的方法吗?
我只需要转储存储过程:没有数据,没有表创建。如何使用 mysqldump 执行此操作?
我最近尝试将来自网络实例的备份恢复到我的本地开发 SQL Server。令我惊讶的是,我收到以下错误消息:
消息 12824,级别 16,状态 1,第 3 行 sp_configure 值 'contained database authentication' 必须设置为 1 才能恢复包含的数据库。您可能需要使用 RECONFIGURE 来设置 value_in_use。消息 3013,级别 16,状态 1,第 3 行 RESTORE DATABASE 异常终止。
我必须遵循哪些步骤才能成功恢复数据库?
背景
我想提供重现select查询所需的数据库子集。我的目标是使我的计算工作流程可重复(如可重复研究)。
题
有没有办法可以将这个 select 语句合并到一个脚本中,该脚本将查询的数据转储到一个新数据库中,这样数据库就可以安装在新的 mysql 服务器上,并且该语句可以与新数据库一起使用。除了查询中已使用的记录外,新数据库不应包含其他记录。
更新: 为了澄清起见,我对查询结果的 csv 转储不感兴趣。我需要能够做的是转储数据库子集,以便它可以安装在另一台机器上,然后查询本身可以重现(并且可以针对相同的数据集进行修改)。
例子
例如,我的分析可能会查询需要来自多个(在本例中为 3 个)表中的记录的数据子集:
select table1.id, table1.level, table2.name, table2.level
from table1 join table2 on table1.id = table2.table1_id
join table3 on table3.id = table2.table3_id
where table3.name in ('fee', 'fi', 'fo', 'fum');
Run Code Online (Sandbox Code Playgroud) 我们每天通过 WAN 运送我们的 SQL Server 备份。我们需要最小化这些备份的大小,这样它就不会花很长时间。
我们不介意我们的备份过程是否需要更长的时间;目前,我们需要在 WAN 上移动 30gigs 的压缩备份,这需要 10 多个小时。
我们有两种选择来获得较小的每日备份。
两者都涉及我们的大量工作。我们使用的是 SQL Server 2008 pro,所有备份都是压缩的。
是否有任何商业产品可以为我们提供与选项 (2) 类似的备份大小?
是否有一个全面的脚本可以让我们完成(2)?(处理索引视图、过滤索引、外键等)
我找了实际指导的设定值BUFFERCOUNT,BLOCKSIZE以及MAXTRANSFERSIZE该的BACKUP命令。我做了一些研究(见下文),我做了一些测试,我完全意识到任何真正有价值的答案都会以“好吧,这取决于……”开头。我对我所做的测试以及我发现的任何资源中显示的测试(见下文)的担忧是,测试是在真空中完成的,很可能是在没有其他负载的系统上完成的。
我很好奇关于这三个基于长期经验的选项的正确指导/最佳实践:数周或数月内的许多数据点。而且我不是在寻找特定值,因为这主要是可用硬件的功能,但我想知道:
BUFFERCOUNT* MAXTRANSFERSIZE) 不超过可用 RAM?可能的 I/O 争用?到目前为止我收集到的:
BLOCKSIZE:
如果手动设置,该值需要 >= 用于创建数据文件的块大小,否则您将收到以下错误:
消息 3272,级别 16,状态 0,第 3 行
“C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\BackupTest.bak”设备的硬件扇区大小为 4096,但块大小参数指定不兼容的覆盖值 512。使用兼容的块大小重新发出语句。 …
尝试将备份还原到SQL Server Express 2008数据库时,出现以下错误:
Restore failed for Server '...\SQLEXPRESS'. (Microsoft.SqlServer.SmoExtended)
System.Data.SqlClient.SqlError: The database was backed up on a server running version
10.50.1600.
That version is incompatible with this server, which is running version 10.00.2531.
Either restore the database on a server that supports the backup, or use a backup
that is compatible with this server. (Microsoft.SqlServer.Smo)
Run Code Online (Sandbox Code Playgroud)
有没有办法从 SQL Server Express 的较新(在我的情况下为 10.50.1600)版本中获取与旧(在我的情况下为 10.00.2531)版本兼容的备份?
我有两个目的:
目前,亚马逊似乎不支持这两个开箱即用的用例。
我已经看到提到了mysqldump 和 xtrabackup(参见表格帖子)。
我还看到了一个更复杂的过程(记录在这里)
提示和建议表示赞赏。
我正在尝试在 SQL 服务器中恢复 .BAK,但出现以下错误:
消息 3241,级别 16,状态 7,第 1 行 设备“c:\glyn\JA.bak”上的媒体系列格式不正确。SQL Server 无法处理此媒体系列。消息 3013,级别 16,状态 1,第 1 行 RESTORE DATABASE 异常终止。
我尝试使用 2012、2008 甚至 2005 进行恢复,但没有任何效果,我使用了以下查询,Tasks >> Back up但没有任何效果,这是我的 SQL:
RESTORE DATABASE JA FROM DISK='c:\glyn\JA.bak'
Run Code Online (Sandbox Code Playgroud)
有没有人有什么建议?我已经读到 bak 可能已损坏,它是由另一位从事该项目的 DVD 开发人员发送给我的。
我正在使用 pg_dump / pg_restore 来备份和恢复 PostgreSQL 数据库,但是从 pg_restore 收到一些错误消息(和非零退出状态)。我尝试了一个超级简单的基本案例(如下所述),但仍然出现以下错误:
pg_restore: [archiver (db)] 处理 TOC 时出错:
pg_restore: [archiver (db)] 目录条目 5 中的错误;2615 2200 SCHEMA公共postgres
pg_restore: [archiver (db)] 无法执行查询:错误:架构“public”已经存在
命令是:CREATE SCHEMA public;
重现步骤:
创建一个测试数据库。我只是在做:
vagrant@vagrant-ubuntu-trusty-64:~$ psql --username=postgres postgres psql (9.3.5) 输入“帮助”以获得帮助。 postgres=# 创建数据库 mydb; 创建数据库 postgres=# \q vagrant@vagrant-ubuntu-trusty-64:~$ psql --username=postgres mydb psql (9.3.5) 输入“帮助”以获得帮助。 mydb=# 创建表数据(条目 bigint); 创建表 mydb=# 插入数据值(1); 插入 0 1 mydb=# …
backup ×10
restore ×5
sql-server ×5
mysql ×4
mysqldump ×4
dump ×1
join ×1
maintenance ×1
mysql-5 ×1
postgresql ×1
select ×1
xtrabackup ×1