如何将 MySQL 表从一台物理服务器移动到另一台物理服务器?
例如这个确切的场景: 我有一个使用 innodb 表的 MySQL 服务器,大小约为 20GB。
我想将其移至新服务器,最有效的方法是什么?
自 SQL Server 6.5 以来,我一直在使用 SQL Server,但仍然萦绕在我脑海中的旧建议是永远不要进行就地升级。
我目前正在将我的 2008 R2 DEV 和 TEST 系统升级到 SQL Server 2012,并且需要使用相同的硬件。不必恢复我的报告服务配置的想法非常有吸引力,我真的很聪明。不涉及分析服务或任何不寻常或非标准的东西——只安装了数据库引擎和报告服务。
有没有人遇到过就地升级的严重问题?或者我应该重新评估我对就地升级的立场?
如何在不停机的情况下对实时数据库进行架构更改?
例如,假设我有一个 PostgreSQL 数据库,其中包含一个包含各种用户数据(如电子邮件地址等)的表,所有这些数据都与特定用户相关联。如果我想将电子邮件地址移动到一个新的专用表,我必须更改架构,然后将电子邮件数据迁移到新表。如何在不停止写入原始表的情况下完成此操作?当然,当数据从旧表写入新表时,新数据会继续写入旧表而被遗漏,对吗?
我想这个问题经常出现,但我找不到任何标准的解决方案来处理它。
这篇文章解决了这个问题,但我并没有真正理解第3步。他说要写入两个表,然后将旧数据从第一个表迁移到新表。您如何确保只迁移旧数据?
(我在 Heroku 上使用PostgreSQL。)
我想知道是否可以编写与大多数或所有数据库 100% 互操作的 SQL 语句,包括:
(例如,我可以只遵循特定的 SQL 标准吗?例如,是否有类似于 SQL 的 POSIX 合规性标准?)
如果是这样,是否有任何可用的 linting 工具可以在 git post-receive 挂钩中使用以拒绝不遵循此类标准或不合规 SQL 代码的 SQL 使用,而不必尝试在所有数据库上提交代码?
如果我需要将数据库从 SQL Server 2012(32 位)移动到 SQL Server 2005(64 位),我有哪些选择?
我知道我不能:
我知道我可以:
有没有更简单的选择?
由于我们的数据库变得太大,我们目前遇到了一些性能问题。有过去 10 年存储的数据,我看不出为什么必须将 2 年以上的数据与新数据存储在相同的表中。
现在,由于我在管理数据库方面没有非常丰富的经验,我正在寻找存档旧数据的最佳方法。
数据库中总共有大约 310'000'000 条记录。
数据库需要 250 GB 的硬盘空间。
我想过两种可能:
创建类似于生产服务器上的数据库,并将所有旧数据插入新数据库中。
使用与生产数据库中相同的表创建新模式 fe [hist]。将所有旧数据插入新模式中的这些新表中。
提前致谢
补充问题:
新创建的存档表是否也需要主键/外键?
或者他们应该只有列但没有键/约束?
很多次我在软件开发工作结束时被引入并被告知“好吧,我们已经有了所有这些新代码,它需要更改表并迁移数据”。
似乎每次都是一次性的,从臀部射门,最好的猜测场景。我觉得这是我作为 DBA 最弱的技能。
我想了解一些接近、管理和测试数据迁移的模式。
请告诉我一些最佳实践和/或我可以从哪里获得学习材料以帮助我在这方面做得更好。
我最近将 SQL Server 2000 数据库升级到 2008 R2。
我所做的是:
问题:我还应该做些什么来完成迁移?
我想要:
换句话说:我只想知道如何正确且完全地将旧的 SQL 2000 数据库转换为新的 2008 R2 数据库,保持冷静,一切都做得对,并对所有新功能感到满意。
我问这个问题是因为我在互联网上发现很多网站都说了很多不同的东西让我感到困惑:有人说需要重建索引,有人说要做其他事情......现在我什么都不知道,所以我想听听有经验的人的意见和清晰的分步说明。我在一家非常小的公司工作,我一个人,我不想把事情搞砸。
先生,您的回答给我留下了深刻的印象,我没想到这么多。
所以一些评论:
该数据库现已投入生产。正如我所说,它是使用 deattach-attach 方法升级的,正如我在第一篇文章中所描述的和 MSDN 上所述:http : //msdn.microsoft.com/en-us/library/ms189625.aspx 它必须快速完成,所以我被迫这样做。让我们忘记它有多么不合适,而专注于当前的情况。
用户/权限在这里不是问题 - 只有少数并且权限很简单。
使用数据库的应用程序兼容 SQL 2000 到 2012 年,所以这也不是问题。
数据库文件 (MDF) 不大 - 只有大约 1GB。
还有几个问题:
你推荐使用备份/恢复方法,但我按照上面写的做了,所以我现在会遇到什么问题吗?一切正常,没有任何问题。 …
问题定义
我们的数据库服务器需要转移到另一个数据中心。它运行在 Microsoft SQL Server 2012 Enterprise(64 位)上,包含两个大约 2TB 和 1TB 的数据库。
几乎没有停机时间将是理想的。
工作量
这些数据库用于 .NET 网站,并且会不断更新。
不过,周末不可用也是可以接受的。当前使用的数据库将一直是唯一使用的数据库,直到切换到新数据库。
理想情况下,只需将 DNS 条目更改为指向新的数据库服务器,同时确保数据库未更新,即可实现该切换。
此外,只要从一台服务器切换到另一台服务器(停机时间)保持在较低水平,此操作所花费的时间并不重要。
考虑的方法
备份还原
过去曾这样做过,但即使是通过内部网络完成的,停机时间也很长,因此比通过 Internet更有效
日志传送
据我所知,这种方法可以通过配置主/从并将主数据库的精确副本传输到其只读从属来最大限度地减少停机时间。如上所述,不需要访问从属数据库,我们只需要一种方法来拥有主数据库的副本而不会损坏数据。
它在资源利用方面似乎也非常有效,并且不会对主性能产生太大影响。
我可能对这种方法有误,因此请随时纠正我。
数据库镜像
我不太了解这种方法,但它似乎是一个有效的选择。不需要实时同步,主节点的性能非常重要,因此如果选择这种方法,异步将是可行的方法。
其他选择?
该服务器直接在裸机硬件上运行,因此不幸的是,不能选择较低级别的解决方案。也许有更好的方法来完成这项工作?
约束
如上所述,这些数据库非常大,以至于难以维护,但这是另一个问题。
SQL Server 的版本将相同(Microsoft SQL Server 2012 Enterprise 64 位)。
它必须在两个数据中心之间通过网络传输,因此很可能通过 Internet 传输。不幸的是,将磁盘从一个站点发送到另一个站点进行初始同步并不是一种选择。为转移提供某种安全性是理想的,但我们会在这种情况下做到最好。
这应该很好地概述了我们对这项任务的需求,希望你们中的一些人以前不得不面对这种情况。
我在 Windows 服务器上的 SQL Server 2008 上有一个数据库,我想将所有数据移动到 Ubuntu 服务器上的 MySQL 数据库。我尝试将 SQL Server 导入和导出向导与 MySQL ODBC 驱动程序一起使用,它可以正确访问两个数据库,但包含类型转换规范的 xml 文件不存在,而且规范太有限,我无法正确创建它们。有谁知道如何创建类型转换文件或从哪里获得更好的工具来传输这些数据?
migration ×10
sql-server ×5
mysql ×2
backup ×1
deployment ×1
downgrade ×1
log-shipping ×1
mirroring ×1
mysqldump ×1
postgresql ×1
restore ×1
schema ×1
ssrs ×1
testing ×1
upgrade ×1