本站已运行

攻城狮论坛

作者: iLync
查看: 843|回复: 1

主题标签Tag

more +今日重磅推荐Recommend No.1

所有IT类厂商认证考试题库下载所有IT类厂商认证考试题库下载

more +随机图赏Gallery

【新盟教育】2023最新华为HCIA全套视频合集【网工基础全覆盖】---国sir公开课合集【新盟教育】2023最新华为HCIA全套视频合集【网工基础全覆盖】---国sir公开课合集
【新盟教育】网工小白必看的!2023最新版华为认证HCIA Datacom零基础全套实战课【新盟教育】网工小白必看的!2023最新版华为认证HCIA Datacom零基础全套实战课
原创_超融合自动化运维工具cvTools原创_超融合自动化运维工具cvTools
重量级~~30多套JAVA就业班全套 视频教程(请尽快下载,链接失效后不补)重量级~~30多套JAVA就业班全套 视频教程(请尽快下载,链接失效后不补)
链接已失效【超过几百G】EVE 国内和国外镜像 全有了 百度群分享链接已失效【超过几百G】EVE 国内和国外镜像 全有了 百度群分享
某linux大佬,积累多年的电子书(约300本)某linux大佬,积累多年的电子书(约300本)
乾颐堂现任明教教主Python完整版乾颐堂现任明教教主Python完整版
乾颐堂 教主技术进化论 2018-2019年 最新31-50期合集视频(各种最新技术杂谈视频)乾颐堂 教主技术进化论 2018-2019年 最新31-50期合集视频(各种最新技术杂谈视频)
Python学习视频 0起点视频 入门到项目实战篇 Python3.5.2视频教程 共847集 能学102天Python学习视频 0起点视频 入门到项目实战篇 Python3.5.2视频教程 共847集 能学102天
约21套Python视频合集 核心基础视频教程(共310G,已压缩)约21套Python视频合集 核心基础视频教程(共310G,已压缩)
最新20180811录制 IT爱好者-清风羽毛 - 网络安全IPSec VPN实验指南视频教程最新20180811录制 IT爱好者-清风羽毛 - 网络安全IPSec VPN实验指南视频教程
最新20180807录制EVE开机自启动虚拟路由器并桥接物理网卡充当思科路由器最新20180807录制EVE开机自启动虚拟路由器并桥接物理网卡充当思科路由器

[科技类新闻] 谨以此文 记录一次悲催的SharePoint 迁移

[复制链接]
iLync [Lv5 不断成长] 发表于 2016-7-29 09:55:36 | 显示全部楼层 |阅读模式
查看: 843|回复: 1
开通VIP 免金币+免回帖+批量下载+无广告
谨以此文 记录一次悲催的SharePoint 迁移

$ H4 J! n0 }1 x1 i
最近遇上一个SP迁移 ,经过简单的交谈发现迁移工作并不是特别复杂,两个网站集,有几个自定义的解决方案当前版本是 SharePoint 2013 不带SP1 打算迁移到SharePoint 2013当我听到这个想法的时候颇为震惊,为毛会有如此需求 如果是因为要换机器也没有必要做迁移,我们可以向场中添加新的服务器, 然后删除废弃的服务器 并且断开场连接。
# Z# E" p9 a1 z* k% R' j
带着如此疑问我看了下原始环境,不看不知道一看吓一跳当前只有一个服务器,该服务器即承担SQL,SharePoint 前端,以及SharePoint 应用程序 典型的All in One (经检查该场非独立安装)而且该场与WF 2013绑定,Office Web App 绑定 ,万幸的是 没有做其他BI 组建的关联,仅有的几个解决方案都有原始Wsp 文件。
% G. d3 _' B, E  A2 A8 z
关于服务应用程序

# v" @4 J3 @( w1 R( @' u
BI 方面没有使用,可以考虑放弃迁移
3 r2 v4 T# n3 F3 ^
搜索已经使用 存在索引分区 必须要迁移 迁移前仔细看好 拓扑以及索引分区 而且该搜索拓扑全部组件均在一台机器上

+ F! O" Z/ K% {8 C8 m
SSS(即安全凭据存储) 没有使用,可以考虑放弃迁移
" Y+ b- i2 a" `2 ?, r$ b
UPS (用户配置文件同步) 正在使用,且同步出现问题 ,而且 我的网站宿主 与 名为SP.xxx.cn的网站集同属一个web应用程序,该内容数据库已经到达300G 以上
6 J8 I* {( ~. C" L
经沟通可以不迁移个人站点,用户配置文件均可清空 。
: n+ Y: p: I2 F3 u
关于表单,没有任何自定义的表单在场中存在 InfoPath Forms Services 也未使用
5 N+ b7 V- ^. r$ i2 p/ w9 }# _
关于web应用程序
* D( J' y( S+ ?
虽然场中存在两个web应用程序,但真正使用的仅有一个,故剩余的那个无需迁移,

8 j5 b* G6 K; P3 |
而且均未使用SLL 所以我们在迁移时候就可以无视证书的事情 否则连证书要一起迁移过去
! k9 Z$ q  x, I& P* R
据沟通结果该web应用程序早已废弃不用,但一直没删。

4 h2 f5 a: u/ h6 c" V
关于传入传出邮件

6 X% @. T/ v# J: A3 K8 C
场,web应用程序,站点均已经使用,且SMTP配置数据有记录

+ b1 Q8 X  v* J
关于Web.Config
' @) n% k8 O7 e+ n% e5 x$ c
好吧 我实在无法确切的得知到底都修改了什么,我也不打算得知 我们可以用一个文本对比工具尽可能的还原。
+ |1 r" A( x' p
我带着为什么要迁移的疑问进行沟通,沟通结果出乎意料的简单,粗暴,因为太慢了
- Z- S5 [' [. I5 U7 g3 r/ P$ o
因为UPS 同步问题。
% R7 w0 E) Z1 n4 y8 f: ?
! ~4 F  w6 q! W( K/ [

8 ]* ?' S3 }5 l+ B
So 根据如上所述 我们得出一个结论 SharePoint 本身没有进行迁移的必要 响应慢的原因应该是 SQL数据库磁盘IO 过低的原因(他们在一块机械盘上完整的这一切,包括OS,SQL Server ,SharePoint) Shit!!!(Sorry 原谅我爆粗)

3 n% W" O5 `$ n. i( W" n6 v
下面我们列举下应该都要迁移什么
/ A  _& {- M  T# {8 Y0 m7 r( e4 A
1 场要迁移 (别问我为什么要迁移场)

! ?. ]5 ]4 ~2 ?7 e+ `5 e6 Q
2 web 应用程序
8 h/ z- ^; J! N
3 服务应用程序
7 C4 E) S  X& j1 i2 ], Z6 V& a  C2 z
4 自定义解决方案
5 j7 y; X% w8 t  ?  w  H
5 WebApp 绑定 工作流绑定

, {; ]$ Q0 K7 Z3 |% z
6 Web.Config
$ D+ N* p% m! `0 F, c5 ]! R
或许我想做的事情并不符合诸位看官迁移的概念,
8 Y6 {4 ]0 s2 X% i' J# M1 F; g
为什么这么说呢 因为我在做的时候并没有创建新场,而是直接把场配置数据库迁移到另外一个独立的SQL Server 上 并且用一台全新安装的SharePoint 做一个扩展场的动作 然后顺理成章的把一个 ”迁移” 的动作变成一个移动 虽然表面看起来 这是一次迁移实际上我们仅仅使用了一个叫做 移动数据库,扩展场的做法

. w- z, m$ J: x! `% \3 Y  p
下面我们将简单的说下几个重点问题

! E5 j  y9 x; t
首先准备出一个SQL,我们简称他为SQLA 该SQL的版本不能低于原始SQL Server 的版本,且服务账户 管理账户,账户权限,身份验证与之前的一样(如果你之前的场中存在RS等集成模式请不要在该服务器安装)

+ X$ {1 y* L5 b! \6 }4 z
一个全新安装并未加入场的SharePont 服务器我们简称他为SPA,(安装账户等与之前一样)

" U! W2 }2 c4 t' I; h
2 R7 f3 C6 F# i3 I. l$ i. S6 `0 y2 L- z) q2 ?
首先 移动数据库,(由于未在原始环境截图,所以我们在实验环境重现该场景)
5 k# u6 h8 B0 W1 I; _, g
在这里也许我们会纠结下到底先移动那个数据库,但是我第一个移动的是场配置数据库

, y2 T& Y% L+ K- Z, I7 y# m
我们先简单的说下如何移动场配置数据库

$ e8 Y* `0 G: z. h5 U
首先在原始场中 关闭除去配置数据库之外的机器 包括App,WFE 我们要断开场与SQL的连接(该动作仅适合移动配置数据库 其他库无需此步骤)
0 }- {6 I+ O9 o: r: d& u( u, H0 u
然后在数据库服务器上执行一个叫做 分离的动作 如下图
% U5 {; K& [& e! t9 J

谨以此文 记录一次悲催的SharePoint 迁移

谨以此文 记录一次悲催的SharePoint 迁移
) r9 S5 Z! r( ^  F
也许你也已经看到 当前数据有19的连接 我们可以选择删除连接然后让他分离 ,但是我们还是稳妥点的好 ,由于一般迁移升级类的动作都不会在 工作时间进行,SO 大胆的把他们关掉把
  C& c$ i  ]/ U% W& N0 }
数据库分离后 拷贝原始MDF,LDF文件到新的SQL Server 上 即SQLA 请注意你需要有SQLA服务器的本地管理员权限 并且在SQL 拥有db_owner 固定数据库角色 权限,如果你不清楚的话 就把你的SQL 管理员账户暂时加入本地管理员组把,或者找DBA去,同时附加该数据库 。

) J2 m. Q, a0 `* Q5 P5 k
此后开启场中任意服务器,

& ?( |  ^0 i( Q, ?& a
执行如下动作 (以下动作适用于移动全部数据库 具体到特别部分我们会进行详细说明)

9 G: Z! f2 }$ p$ d# S( }" B
关闭任何已经打开的Cmd ,PowerShell 窗口,场中网站以及管理中心窗口 请务必谨记

& F1 u1 ^9 Q/ e  A0 {) f. H# h
首先停止服务器的如下几个服务

4 X9 m3 L# ~. v# V, ^6 D2 z+ D& i5 x
SPAdminV4 ,SPTimerV4  ,SPTraceV4,SPWriterV4,SPSearchHostController  ,W3svc
) D. B" l  V, a! {
然后IISreset /stop

5 z: d( G1 m& K4 e+ i. h
这样我们就停止场

4 I5 ?4 O" |( |8 f
当然对于我来说我更喜欢用命令来完成这些事情

8 _& ~$ W4 d0 v& r- Q
脚本如下 打开全新的PowerShell 窗口运行如下命令
1 C- T/ y8 f' c. ^5 w- v$ b
Get-Service SP* |Stop-Service -Force
% l. `+ @7 e( m- n1 t  j
Stop-Service W3svc
: G' n6 f" [+ U
iisreset /stop

  i; G* I9 ^! u8 m# B$ h
虽然我的脚本使用 Get-Service SP* 获取SharePoint 相关服务,但是会有误停止的服务,比如软件保护,打印服务 好吧 我承认这都不是问题。
0 f/ p6 Z+ I+ m6 [& j
(如果你迁移的是其他非配置数据库 请在停止如上服务之后对原始数据库进行分离 附加到新的SQL Server 实例 我们建议再这时候对全部的数据库做一个备份以防不测 如果出现问题 我们可以通过还原数据库的方式 继续使用源场)

7 h5 t5 X9 |1 a) Y) Z
脚本执行完成没有错误之后 管理该窗口
! \' c8 F. A7 S  K+ ?  }4 [) q
打开新的SharePoint 命令管理工具 如下图
! x( C  w8 Q# t

谨以此文 记录一次悲催的SharePoint 迁移

谨以此文 记录一次悲催的SharePoint 迁移
5 F# T) }4 M: Z4 t
好吧 我承认我一向更喜欢使用ISE,那么你可以打开ISE 运行 Add-PSSnapin * 来加载SharePoint 管理单元 当然这种做法也会加载其他的管理单元,好吧 我还得承认这都不是问题

3 P% U$ C9 N* \# Q
我们运行 Get-SPDatabase 来获取数据库 注意区分你要移动的数据库 记录下ID 如下图

# ~* Y" t/ q8 s% w

谨以此文 记录一次悲催的SharePoint 迁移

谨以此文 记录一次悲催的SharePoint 迁移

, l) @1 I: T5 i- w. l* l
9 e7 ?: e8 B( Z" K) J( J: K3 a& j6 }- [6 f* Q3 ]% n5 }2 `
由于我现在迁移的是一个叫做 配置数据库的东西 So
. W$ L" c1 ~, e7 y
我们运行下面的命令

4 M1 ~) z0 r- J2 Z
$1 = Get-SPDatabase fe15dfae-2485-47b4-a77f-c44d6426a0a2

$ A8 m1 q% [7 Z' V& g' U
我们将该数据库对象放入一个变量
# E6 \4 ]4 m8 F9 ^+ ?1 k
$1.ChangeDatabaseInstance("win206.ilync.cn")

8 l3 Y1 j( Q+ U0 J
调用该对象的ChangeDatabaseInstance 方法来修改 其新的数据库服务器为SQLA 请注意建议写FQDN
$ `, |, Z" H1 c9 I9 r. h$ b
如果使用SQL 镜像

5 [' @' F) o) l7 B
还需要调用Failoverserviceinstance 来填充镜像连接名称
0 Y1 n# ^# y" K" l6 U' Y6 z! v
官方文档请参考

, m; t  x4 [* D2 k7 R
http://technet.microsoft.com/zh-cn/library/cc512725(v=office.15).aspx
' G1 A6 R4 N( g4 M) `+ i# p
然后在没有红色错误的情况下运行
' Y3 h" I& @  u4 L# ]0 ?/ v
$1.Update()
% i- l/ p$ ?) _! U: F8 P
调用该对象的Update() 方法以使修改生效

; q8 @5 i; x7 l5 t
如果在ChangeDatabaseInstance 时候 提示你更新冲突 没关系 关掉窗口 重新运行

7 G2 g( j  A) A  t- \9 H
此后

+ @( [& @! x/ }$ M( J% h0 l' h( M$ J
将刚才停止的服务启动 并且执行IISreset

0 a; t" B' {" R; t2 I
到此 迁移配置数据库完成(至此 迁移非配置数据库也到此完成)

0 |+ a4 ^+ {! R. \/ z! ?6 j
然后我们以此把全部数据库附加到SQLA 将全部数据库迁移到SQLA上

2 @9 f1 O% D. x  y
由于 此时我们移动了配置数据库 原始服务器将无法访问管理中心

; t0 A+ t6 y2 W* O- ^. C$ v
这就是为什么我们要准备一个新的SharePoint 服务器并不将其加入场的原因
6 I2 Z$ M3 k* a% d# P& P
我们使用SPA 加入场 请注意 加入的场为配置数据库所在的SQLA 服务器 (这个动作相当于我们复制了一个场)

4 `( P, t& J- ~8 ~, v
然后完成任何加入场动作 ,记得将该计算机作为管理中心宿主 加入完毕之后 将原始的网站访问IP 或者解析修改为新的服务器 即SPA然后 用你能想到的一切办法在SPA 上还原任何Web.Config更改。

- q& V- U* i5 W& T3 ]% w
同时在在我们复制出来的场中删除之前场中的全部服务器,同时在SPA上启动一切你需要的服务

8 ]4 F& y4 q2 V) y: t# R
至此 我们完成了场的迁移 到此步骤 我们的解决方案以及WebApp绑定都无需重新配置

; N2 C( [! b% C
或许你可以开始测试下一些站点的访问是否成功 但是不要有其他动作
/ P( D5 i$ b$ e+ u

  q$ z. w+ _+ B. r; l( h, E$ W1 z9 {6 z  P! ]
下面我们来看看Web应用程序的事情

  U" _$ S+ X8 R3 s6 ?) c
事实上 经过我们上面的动作根本无需再过多的关心Web应用程序 因为一切都在 就好比科幻片一样 我们的思维仍在只不过换了个躯壳,但是我们的身体可能不太适应思维(各种科幻大片都是一样的道理)所以我们下面将开始让身体适应思维,我们要做如下的这些动作
6 p) b& h/ S" f2 x' @
可能我记录的并不完整,也许你的环境中有更多需要进行修改的 总之尽可能的仔细些

9 J5 N) o- |) A: F* |
将场电子邮件地址进行修改该 在IIS上重新绑定SSL 证书,如果需要的话你还需要重新在SPA 上修改注册表以关闭IIS LoopBackCheck,还原之前任何依赖的DLL 等等一切你自定义的修改。

* g% a7 S7 ?" L8 D  G* g
还原应用程序池的任何修改 回收配置 进程数,内存等请尤其注意承担我的网站宿主的Web应用 的应用程序池千万要检查 加载用户配置文件 属性为True

5 ]+ x5 K8 {! b% f
关于服务应用程序
) P3 h1 Z# o9 n; m- q1 }
大部分的服务应用程序你无需担心 你只需要在新的服务器上启动相应的服务即可

; C: y0 m* @( e4 o1 S
这里我们重点说几个需要关照的家伙

3 f5 V7 Z, D0 T% k
User Profile Service Application

8 k. y, z6 |* Q: R( N: H6 U
把UPS 说成微软最坑爹的服务我相信不算过分 MSDN,TechNet 上到处充斥长时间正在启动,无法启动,等等

. m" J4 t* O: S  G/ u
这里有几个小窍门

1 在首次启动以及停止后在启动  User Profile Synchronization Service 这个服务时候

首先将该服务对应的服务实例托管账户加到本地管理员组 (在该服务启动后可将该用户从本地管理员组删除 服务器重新启动不影响)

2 对该账户在本地策略中授予如下权限

  作为服务登录,允许本地登录,以操作系统方式执行 然后你可以选择重启SPTimerV4 服务但是我更建议 重新启动要承担同步实例的服务器

3 检查服务应用程序的相关属性
- F( b4 {3 N. V4 F. H: e: l5 T
使用 Get-SPUserProfileServiceApplication 命令获取场中的 User Profile Service Application

(该命令非官方 由本人自定义开发目前尚不具备发布条件,部分已经拿到测试版本的同学感谢你们的测试反馈)

然后检查属性

NetBIOSDomainNamesEnabled 该属性在特定条件下需要修改下面列出该属性对应的条件

False 该应用程序使用的数据库实例为FQDN 非NetBios 名称 (这也是为什么我希望大家写FQDN的原因避免不必要的麻烦)

True 该应用程序使用的数据库实例为NetBios 名称

如果你当前属性不满足以上需求 请做相应修改 然后调用Update()方法更新修改

4 在活动目录中委派该用户 复制目录更改,复制目录所有更改项

此后启动该服务 稍等片刻应该可以启动 如果还不能启动

请分别调用以下方法
6 l6 ^' R8 X  X8 T; P2 \
ResetSynchronizationDatabase()   

ResetSynchronizationMachine()     

; Y; P, l5 _7 b( K
分别重置同步数据库以及同步实例 然后重新启动相应同步实例

希望这几个窍门能够帮到你。
) `( v1 r! i3 P6 K6 O/ f0 r  Q4 s
---本文档由联科教育 http://www.iLync.cn 田梦博原创提供,电话:021-62215752---

0 {2 g' f7 Y$ `8 w
CCNA考试 官方正规报名 仅需1500元
回复 论坛版权

使用道具 举报

Rockyw [Lv10 举世无双] 发表于 2016-7-30 11:49:12 | 显示全部楼层
感谢楼主分享!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|无图浏览|手机版|网站地图|攻城狮论坛

GMT+8, 2026-7-25 06:57 , Processed in 0.119699 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.

Designed by ARTERY.cn