设为首页 收藏本站
查看: 1127|回复: 0

[经验分享] 将SQL server迁移到Windows Azure上的SQL database

[复制链接]

尚未签到

发表于 2016-11-4 05:52:16 | 显示全部楼层 |阅读模式
  Windows Azure把SQL作为服务提供给了用户,这项服务名为SQL database。尽管SQL database的后台也是SQL server,但是它与SQL server还是有很多的不同,具体体现在:

  • 不需要安装:通过Azure的管理门户,一个按钮就可以创建一个数据库,花费时间不超过10秒钟
  • 不需要配置:SQL database对用户隐藏了配置细节,用户看不到数据库文件和日志的存储位置,也看不到后台操作系统和文件系统,管理员需要做的,除了备份基本上啥事也没有了。而传统的硬件调优,完全不需要做了。用户只需要进行SQL优化
  • 不需要HA:传统配置HA的方式是配置双机进行主备切换。在SQL database上,Azure后台已经自动为每个数据库配置了1主两备,任何一份数据都会同步写到3个不同的物理服务器上,确保了高可用。另外,当一台服务器宕机时,Azure会自动创建另一个备份节点,保证永远都有3份拷贝运行
  • 价格经济:传统数据库采用CPU数进行授权。SQL database采用容量计费,而且是实际存储容量。比如用户申请了150G的数据库,但是只存了1G的内容,那么只会收1G的费用。1GB存一个月的大概费用是10美元,10GB大概50美元,100GB 175美元。可见容量越大,单价越低
  • 管理方便:SQL database提供了一个基于浏览器的管理工具,这个工具上可以进行数据库建表、查询、SQL执行统计等常用的功能。管理员执行一些简单的任务时,不再需要安装客户端管理软件,比如management studio,或者visual studio
  下面是SQL database的架构图. 可见,SQL database后台是一个庞大的SQL server集群,每个用户见到的SQL database实例,是一个逻辑的概念,对应于SQL server集群上的一组实例。前端的负载均衡器根据策略将用户请求分发到3个实例的主实例上。而用户看到的SQL Server,也是一个逻辑的概念,对应一组逻辑资源。在SQL database上,一个SQL Server可以支持150个实例,同一个SQL server使用相同的访问控制策略,提供同一个管理门户入口。另外,多个用户是共享物理资源和SQLserver的
DSC0000.jpg
  当然,SQL database也有一些局限:

  • 最大只能150GB。再大的话要进行数据库分片(federation),将一个数据库显式分解为多个数据库,或者租VM装数据库
  • 不支持Windows认证,必须用SQL认证
  • 不支持传统的备份、恢复,提供了新的备份方式
  • 不支持Analysis Services, Replication, and Service Broker
  • 不支持Resource Governor, file group references, and some physical server DDL statements
  • 不支持SQL Server 2008过期的数据类型,也就说,向前兼容到SQL Server 2008
  • 所有的表必须有聚类索引(clustered index)
  可见,一般的SQL应用,使用SQL database显然是最方便、最经济的。对于新应用来说,直接在Azure上建立新的数据库,并用visual studio、sql server management studio或者Web界面创建表就可以很快完成数据库的部署。但对于已有应用的迁移来说,如何进行迁移呢?
  
  实际上,迁移的方法有很多种:
DSC0001.png
  上面列出了7种方法,其中,方法1-4都是通过SQL server management studio完成的。这些方法执行效率较低,但过程很简单,适合于数据库规模较小的时候。而5和6采用BCP进行批处理,效率较高,适合于数据量较大的情况。其中方法6采用图形化界面,使用更方便。方法7可以实现本地数据库和远程数据库的连续同步,适合于多个数据库同时运行的情况,或者是需要数据库停机不停机的情况
  
采用SQL server management studio进行同步
  具体步骤如下:
  在sql server management studio中,右键要迁移的数据库,在task选项中可以看到很多项
DSC0002.png
  其中,generate script会导出SQL,对应第4种方法。Deploy database to SQL azure对应第2种方法,export data-tier application 对应第1种方法,export data对应第3种方法。在很多情况下,方法1、2、3在导出或者导入的过程中发生错误的概率较大,导致迁移无法顺利进行,这主要是因为SQL database的某些限制,如用户、数据类型、索引等。因此,推荐用第4种方法进行迁移。这种方法直接使用SQL,即使有问题也可以及时编辑SQL进行调整。
  
导出建表SQL
  在高级选项里面,把script for database engine type选成SQL Azure database
DSC0003.png
  
  使用SQL语句进行迁移时,建议分为两个阶段,分别迁移schema和数据内容。在types of data to script里面,第一次选schema only. 导出后再次运行导出动作,选data only. 这样可以生成2个脚本,分别是建表和填充数据
DSC0004.png
  
  在script indexes里面选true,表示要导出index。如果本地数据库有的表没有建聚类索引,那么需要在导出的SQL里面手动添加建聚类索引的语句。或者导出完成后对于SQL database的表建立聚类索引
DSC0005.png
  另外,将Convert UDDTs to Base Types 设为true
DSC0006.png
  
新建SQL database
  导出完成后,就可以将其导入Azure上的SQL database了。首先在Azure上创建database
DSC0007.png
  在Limit database size部分需要注意,这里指定的是数据库容量的上限,如果要导入的数据库较大,则这个地方需要选的数值也要大。在Edition部分是数据库版本,Web版的容量上限是5GB,如果更大则要选Business
DSC0008.png
  输入用户密码,选择区域为东亚
DSC0009.png
  创建完成后,点击左边菜单的SQL database,在右侧找到创建的示例,然后点击进入
DSC00010.png
  在dashboard的右侧点击manage allowed IP address,设置允许访问的客户端IP
DSC00011.png
  点击add to allowed ip address,然后点击页面底部的Save
DSC00012.png
  回到上一页,查看数据库域名。
DSC00013.png
  在本地打开SQL server management studio,输入域名,用户名和密码,即可连入SQL database
DSC00014.png
  之后就可以在SQL database上执行SQL操作,将刚才导出的表和数据发布到Azure上.
  
采用SQL database migration wizard 进行同步
  该工具是一个开源工具,可以从http://sqlazuremw.codeplex.com/下载,它把数据库的内容用BCP进行批量导出,再批量导入到Azure上,导入时可以不考虑键的约束,因此效率很高。
  
  启动这个工具后,选择分析并迁移数据库。可见这个工具支持多种迁移方式。
DSC00015.png
  然后按下一步选择源数据库,之后直接按下一步即可,十分简单。可见导出命令是BCP,效率很高
DSC00016.png
  下面继续,选择目标数据库,然后执行
DSC00017.png
  不过,这个工具有个不足,就是迁移时,必须同时访问源库和目标库,而不能实现:先把源库导出文件->文件上传至Azure->文件导入目标库。如果有这样的需求,只能导出源库后,手动执行BCP了
  

  使用该工具可以自动为我们建立聚类索引。这样基本上我们不需要修改原有数据库的任何配置,就可以进行迁移了。
  
使用Visual studio连接SQL database
  SQL server management studio连接SQL database的时候,无法以图形化的方式展示表内容,也无法进行表设计,只能执行SQL。替代方法是用Visual studio的SQL工具。
  
  在Visual studio菜单的视图->SQL server 对象资源管理器
DSC00018.png
  打开后添加SQL database,填入Azure上SQL database的数据库地址,用户信息
DSC00019.png
  下面就可以打开图形化界面了
DSC00020.png
DSC00021.png
  
从SQL database迁移回SQL server
  把数据库从Azure迁移回来的过程与原过程想法,之前的7个方法只有方法2不可用。剩下的方法里面,如果数据量较大,仍推荐方法5和6. 数据量小时,可用1和4。 其中使用1的原因是:SQL database的备份方式就是data tier application(备份到Blob里),且SQL server management studio 2012已经支持直接从Azure Storage导入数据库。
  
  首先在Azure门户上export数据库为dacpac文件,存储在blob里
DSC00022.png
  然后在客户端进行导入
DSC00023.png
  
DSC00024.png
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-295360-1-1.html 上篇帖子: SQL Server限制部分客户端IP访问的方法 下篇帖子: tomcat的sql server数据源的配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表