数据迁移的数据迁移的技术准备
数据转换与迁移通常包括多项工作:旧系统数据字典整理、旧系统数据质量分析、新系统数据字典整理、新旧系统数据差异分析、建立新旧系统数据之问的映射关系、开发部署数据转换与迁移程序、制定数据转换与迁移过程中的应急方案、实施旧系统数据到新系统的转换与迁移工作、检查转换与迁移后数据的完整性与正确性。
数据转换与迁移的过程大致可以分为抽取、转换、装载三个步骤。数据抽取、转换是根据新旧系统数据库的映射关系进行的,而数据差异分析是建立映射关系的前提,这其中还包括对代码数据的差异分析。转换步骤一般还要包含数据清洗的过程,数据清洗主要是针对源数据库中,对出现二义性、重复、不完整、违反业务或逻辑规则等问题的数据进行相应的清洗操作;在清洗之前需要进行数据质量分析,以找出存在问题的数据,否则数据清洗将无从谈起。数据装载是通过装载工具或自行编写的SQL程序将抽取、转换后的结果数据加载到目标数据库中。
对数据的检查包括以下6个方面。
(1)数据格式检查。检查数据的格式是否一致和可用,目标数据要求为number型。
(2)数据长度检查。检查数据的有效长度,对于char类型的字段转换到varchar类型中,需要特别关注。
(3)区间范围检查。检查数据是否包含在定义的最大值和最小值的区间中。例如年龄为300或录入日期为4000—1—1显然有问题。
(4)空值、默认值检查。检查新旧系统定义的空值、默认值是否相同,不同数据库系统对空值的定义可能不同,需要特别关注。
(5)完整性检查。检查数据的关联完整性。如记录引用的代码值是否存在,特别需要注意的是有些系统在使用一段时间后,为了提高效率而去掉了外键约束。
(6)一致性检查。检查逻辑上是否存在违反一致性的数据,特别是存在分别提交操作的系统。
是要你把目前服务器上的仓库备份到本地吧?然后等新的服务器到了,再还原回去。简单 把你Visual
SVN
server
上的SVN对应的Repositories
目录
copy
出来就可以了;等新的服务器到了,安装好Visual
SVN
server
后,再将这个目录copy过去,在SVN控制台中将Repositories目录指向你备份的这个目录即可。
以下有几款迁移工具的对比,可以参考,比较推荐DB2DB
软件易用性主要是指软件在导入前的配置是否容易。由于很多软件设计是面向程序员而非一般的数据库管理人员、甚至是普通的应用程序实施人员,而这一类人员很多时候并没有数据源配置经验。因为一些使用 ODBC 或者 ADO 进行配置的程序往往会让这类用户造成困扰(主要是不知道应该选择什么类型的数据库驱动程序)。下面让我们看看四个工具的设计界面:
>>>>
1、SQLyog
SQLyog 使用的是古老的 ODBC 连接,但对于新一代的程序来说,这种方式的非常的不熟悉并且不容易使用,并且必须要求本机安装好相应的数据库的 ODBC 驱动程序(SQL Server 一般自带好)。
>>>>
2、Navicat Premium
NavicatPremium是四个应用工具中设计最不人性化的一个:从上图怎么也想像不到要点按那个小按钮来添加一个新的连接,并且这个连接设置不会保存,每次导入时都必须重新设置。NavicatPremium使用的是比 ODBC 稍先进的 ADO 设置方式(199X年代的产物),但使用上依然是针对老一代的程序员。
>>>>
3、Mss2sql
Mss2sql 是最容易在百度上搜索出来的工具,原因之一是它出现的时间较早。
Mss2sql由于是很有针对性的从 SQLServer 迁移到 MySQL,因为界面使用了操作向导设计,使用非常容易。同时在设置的过程中,有非常多的选项进行细节调整,可以感觉到软件经过了相当长一段时间的使用渐渐完善出来的。
>>>>
4、DB2DB
DB2DB 由于是由国人开发,因此无论是界面还是提示信息,都是全程汉字。另外,由于 DB2DB 在功能上很有针对性,因为界面设计一目了然和易使用。和 mss2sql 一样, DB2DB 提供了非常多的选项供用户进行选择和设置。
三、处理速度和内存占用评测
在本评测前,本人的一位资深同事曾经从网上下载了某款迁移软件,把一个大约2500万记录数的数据表转送到阿里云 MySQL,结果经过了三天三夜(好在其中两天是星期六和星期日两个休息日)都未能迁移过来。因此这一次需要对这四个工具的处理速度作一个详细的测试。
考虑到从 SQL Server 迁移到 MySQL 会出现两种不同的场景:
从 SQL Server 迁移到本地 MySQL 进行代码测试和修改;
从 SQL Server 迁移到云端 MySQL 数据库正式上线使用;
以下为测试过程中的截图:
>>>>
1、SQLyog
>>>>
2、Navicat Premium
注意:我们在测试 Navicat Premium 迁移到 MySQL 时发现,对于 SQL Server 的 Money 类型支持不好(不排除还有其它的数据类型支持不好)。Money 类型字段默认的小数位长度为 255,使得无法创建数据表导致整个测试无法成功,需要我们逐张表进行表结构修改才能完成测试过程。
Navicat Premium 的处理速度属于中等,不算快也不算慢,但 CPU 占用还有内存占用都处于高位水平。不过以现在的电脑硬件水平来说,还是可以接受。但 CPU 占用率太高,将使得数据在导入的过程中,服务器不能用于其它用途。
>>>>
3、Mss2sql
Mss2sql 并没有提供计时器,因此我们使用人工计时的方法,整个过程处理完毕大于是 726 秒。Mss2sql 的 CPU 占用率相对其它工具来说较高,但仍属于可以接受的范围之内。
>>>>
4、DB2DB
DB2DB 同样迁移 300万数据时,仅仅使用了 2 分 44 秒,这个速度相当惊人。不过最后的结果出现一个 BUG,就是提示了转换成功,但后面的进度条却没有走完(在后面的数据完整性评测中,我们验证了数据其实是已经全部处理完毕了)。
1、开始菜单--->程序,打开SQLServerManagementStudio。
2、连接服务器后,找到我们需要迁移的数据,右键点击属性。
3、在数据库属性里面,点击文件,可查看数据库文件和数据库日志文件的存放路径。
4、确定没有任何其它用户连接到此数据库后,点击该数据库-->任务-->分离。
5、我们可以看到分离以后,刚刚那个数据库,已经不在此列表。
6、进入刚刚我们第3步属性里面看到的数据库文件路径如下图把我们的ZNLCRMmdf数据库文件和ZNLCRM_LogLdf数据库日志文件拷贝到另外一台服务器。
7、在另外台服务器上打开SQL数据库与第1步一样点击数据库--->附加。
8、在附加数据库里面,点击添加。
9、找到刚刚拷贝过来的ZNLCRMmdf文件选中该文件,依次点击确定。
10、然后我们就可以看到,一个完整的数据库就直接被迁移过来。
迁移MySQL数据库通常只需要几个简单的步骤,但是由于您要转移的数据量可能比较庞大,因此一般耗时也会比较长。
下面的步骤将指导您如何从旧的服务器上导出MySQL数据库,对它进行安全加固;然后将其复制并导入到新的服务器上,以保证数据的完整。
将MySQL数据库导出至转储文件(dump file)
Oracle提供了一个名为mysqldump的工具,允许您轻松地将数据库结构和其数据导出到一个SQL的转储文件。您可以使用如下的命令:
1mysqldump -u root -p --opt [database name] > [database name]sql
不过,请注意如下几点:
我们可以使用--single-transaction的标志,以避免数据库在导出数据的过程中被锁死。这样能够在将数据导出到转储文件的同时,您仍可继续在旧的数据库上更新数据。不过请注意,那些在导出进程已经开始之后被更新的数据,是不会被导入转储文件之中的。
在运行该命令之前,请务必将[database name]替换成您的实际数据库名称。
请输入您自己的用户名和相对应的密码,并确保该用户具有备份数据库所需的权限。
安全加固备份文件
在大多数情况下,数据是一家企业的最重要的资产。因此,我们不希望数据库的各种备份被暴露在不受保护的服务器上,因为这样有可能会造成错误地泄露,甚至会出现被黑客窃取等更为糟糕的状况。
因此,通常您可以尝试的做法是:压缩、加密文件,然后删除原文件。在Linux操作系统上,请使用以下的命令对已压缩文件进行加密:
1zip --encrypt dumpzip dbsql
在压缩开始之前,系统将提示您输入密码。
传输备份文件
至此,我们已经获得了一个加密的转储文件。下面让我们通过网络使用SCP命令,将其传输到新的服务器上:
1scp /path/to/source-file user@host:/path/to/destination-folder/
将MySQL转储导入新服务器
通过上面一步,我们已将备份文件传到了新的服务器上,下面让我们来进行解密和提取:
1unzip -P your-password dumpzip
为了存储空间和安全方面的原因,一旦文件导入成功,请记得删除其对应的转储文件。
您可以使用以下的命令来导入文件:
1mysql -u root -p newdatabase < /path/to/newdatabasesql
在新服务器上验证导入的数据
现在我们在新服务器上已经导入了数据库,那么我们就需要一种方法来验证数据的真实存在,并确保没有任何遗漏。
我建议您同时在旧的和新的数据库上运行如下查询,并将获得的结果进行对比。
该查询会在所有的表里计算行数,以显示出新、旧数据库中的数据量。
1SELECT
2TABLE_NAME,
3TABLE_ROWS
4FROM
`
5information_schema``tables`
6WHERE
`
7table_schema` = 'YOUR_DB_NAME';
此外,我建议您检查各个表中数字列的MIN和MAX记录,以确保数据本身是有效的,而不仅仅是看数据的总量(虽然这是查询所唯一能够读出的值)。另一种可供测试的选择是将数据库从新的服务器导出为SQL转储文件,并将其与旧服务器的SQL转储文件做比较。
此外,在应用程序被迁移之前,我建议您先将一个应用程序的实例重定向到新的数据库上,以确认一切运行正常。
另一种导出和导入的选项
我们之所以把该选项放在最后,是因为我们的确不建议您去使用它。
该方法实现起来非常的容易,因为它仅使用一个命令,便能一次性将转储文件导出、传输、并将其数据导入到新的数据库之中。
而它的不足之处在于,一旦其网络链接断掉,您就需要重新启动它了。
因此,我们认为它并不值得被推荐,尤其是在大型数据库中,可能会非常不适用。
当然,如果您非要尝试一下的话,可以使用如下的命令:
1mysqldump -u root -pPassword --all-databases | ssh user@new_hosthostcom 'cat - | mysql -u root -pPassword'
重要提示
请确保在新旧两处,安装有相同官方发行版本的MySQL服务器。否则,你需要按照MySQL网站上的升级说明来进行统一(请参见(https://devmysqlcom/doc/refman/57/en/upgradinghtml)。
请确保您在旧的服务器上拥有足够的空间来保存转储文件和压缩文件(应该有db_size×2的空间)。
请确保您在新的服务器上拥有足够的空间来保存加密的和解密的转储文件、并能导入数据库(应该有db_size×3的空间)。
如果您曾经考虑过只是将datadir从一个数据库转移到另一个的话,我建议您最好不要这样做。否则,您会搞乱数据库的内部结构,而且会给将来可能的问题埋下隐患。
在新的服务器配置中,请不要忘了配置诸如innodb_log_file_size这样的重要标志。因为如果忘记了根据新服务器的规格而更新配置的话,很可能会导致严重的性能问题。
在许多情况下,一般升级到新的数据库服务器的初衷是为了提高查询性能。而如果此类升级没有达到预期的改善,那么您就应该考虑去优化SQL查询,而不仅仅是升级硬件那么简单了
服务器转移有两个含义:
物理服务器从物理地址,比如A机房搬到B机房
需要和原有机房确认无纠纷无遗留问题,然后和新机房办理入驻手续。
最终通过物流或汽车运输把服务器转移到新机房。
网站服务器的虚拟搬迁,就是转移服务商,从原来的服务商处转移到其他服务商接受服务。操作流程:
1原网站程序数据,打包备份,源文件压缩最好。
2所有资料转移到新网站服务器。
3新服务器安装程序,设置数据库,重新运营。
如果您基于更高的性能、更灵活的扩展或供应商替换要求,您可能需要迁移现有的在线项目。因此,您需要解决的因素包括现有的数据、结构、配置等。借助必要的技术、适当的规划和特定软件,您只需将所需的数据传送到新服务器。数据迁移过程的复杂性与项目的复杂性和规模密切相关。作为一个值得信赖的香港服务器租用托管服务提供商,基于Web的互联迷你系列将为您简要介绍在服务器数据迁移期间要注意的事项。
将数据迁移到新的服务器之前 - 合理规划
选择正确的目标服务器是第一步。例如,如果计划更改网站/应用程序,则需要执行其他任务,以便在重新定位期间不必处理这些任务。无论是将数据从一个服务器(例如香港服务器)迁移到另一个服务器,还是新的服务器结构是基于集群的或涉及多个不同的系统,它也是不同的。
更改服务器体系结构时,必须更改配置,不管是不同的操作系统、不同的软件版本还是不同的控制面板。即使只是切换到功能更强大的同类型服务器,仍然需要相应地配置应用程序和服务,以便能够利用额外内存、改进的cpu性能或增加内存容量。
请注意,无论是选择简单的性能升级还是完全更改服务器体系结构,都应提前为移动设备创建最佳条件。这些因素包括足够的存储空间和计算能力、30%到40%的缓冲区或详细的扩展计划以及快速的网络连接。
当数据迁移到另一台服务器?
如果您租用服务器资源,您可能没有充分考虑托管服务的成本。供应商提供的各种软件包在内容提供方面有所不同,即可用性、数据安全性和支持。因此,有必要在选择之前比较不同的软件包。迁移数据的另一个原因可能是您希望减轻it部门的压力。在这种情况下,it托管服务解决方案将是一个不错的选择。它不仅承载服务器,还由提供者维护和更新。例如,使用稳定的网络互连香港服务器租赁服务,您可以选择不同级别的技术服务包来简化您的IT管理工作。
为即将进行的迁移组织当前服务器
为了使新服务器的配置和引入尽可能简单,有必要整理当前使用的服务器。因此,数据迁移是删除任何冗余或过期页面、备份、电子邮件和用户帐户的最佳时间。这意味着您可以最小化传输的数据量,另一方面,您可以从目标系统上所需的资源中获得更多的价值。
此外,还应该制定关闭活动服务器进程随后因数据损失而不会出现并发症,精确的计划。指定时间应停止对文件,脚本和配置做任何改动,并尽可能暂时阻止对数据库的访问。您也可以稍后更新数据库。在大多数情况下,数据传输通过一个完整的服务器备份进行。
服务器的数据迁移是如何工作的?
迁移数据最简单的方法是使用实际状态的一对一备份副本。在进行必要的配置和调整之前,将其转移到新的服务器硬件,然后可以测试其是否有效。最后,您可以调整dns或ip设置,这将允许您在新系统上实时启动Web项目。虽然这种方法通常需要系统管理员的支持,但是很容易计划和执行。但是,这意味着当前服务器将完全暂停,在数据迁移期间,您将无法访问或使用您的网站。
如果提供需要连续数据库访问的服务,则需要一个混合迁移解决方案来保持当前服务器处于活动状态。在这种情况下,应将服务器上的当前数据库声明为“master”,然后在配置完成后将新数据库从属为“slave”。这使得两个应用程序能够实时同步。如果两个数据库处于相同状态,请反转角色,以便新数据库成为主数据库。这意味着您的项目可以在数据迁移期间继续可用。
什么样的资源可以用来将数据迁移到新的服务器?
有几种工具和服务可以简化服务器迁移。例如,如果只想移动数据而不调整操作系统或其他软件,则不应放弃控制面板。这些服务器管理器可以帮助您创建数据备份,然后将它们迁移到新服务器。所需的配置工作负载是最小的。像wordpress这样的内容管理系统也可以使用简单的ftp和备份应用程序进行传输,并且通常提供自己的插件来迁移链接的数据库。这些过程大多是自动化的。
对于更复杂的项目,root权限总是会带来好处:使用ssh,您可以通过相应的命令行将完整的数据库(包括所有权限和用户数据)转移到新服务器。例如,可以使用mysql转储向目标系统发送mysql数据库的副本。作为微软的sql服务器用户,您甚至可以使用内置功能来实现这一点。
但是,您也可以外包服务器数据的迁移:许多托管服务提供商不仅为客户提供用于手动服务器数据传输的特定软件,而且还为数据迁移提供了积极的支持。此外,还有一些服务专门用于Web项目的迁移和全天候服务的可用性-无论是从一个共享服务器转移到另一个共享服务器,还是要替换提供者,还是计划切换到服务器集群。
服务器迁移期间可能会出现什么问题?
需要连续稳定的网络连接才能根据需要传输服务器数据。因此,在服务器迁移期间,连接问题是最常见的错误源。如果连接断开,它可以完全终止传输,这意味着它从一开始就重新启动。然而,短期连接问题通常不会被注意到,也不会导致进程终止。但是,在某些情况下,并非所有数据都可以到达目标服务器,这反过来会影响迁移应用程序的功能。
但是,如果有些文件不能成功地转移到新服务器上,可能有几个原因。尤其是在改变操作系统而不再支持某些文件格式、编程语言等时,会出现兼容性问题。此外,在源计算机和目标计算机上不同的访问权限或密码保护会导致并发症。此外,如果目标系统没有所需的磁盘空间或dns条目没有正确更改,数据迁移可能导致错误。
需要检查服务器数据迁移。
移动到新的服务器的项目可能是一个复杂和繁琐的过程,这取决于项目规模和新目标的体系结构。这就是为什么它应该精心策划和执行良好。下表总结了有关服务器迁移的最重要的问题。
0条评论