我正在尝试将samba域控制器(版本3.6,passdb backend = tdbsam)迁移到具有CTDB的新集群环境(相同的samba版本)。 我有一个功能性ceph存储和根据文档配置的ctdbd。
但是,所有可用的指南都适用于全新安装,我无法将当前数据迁移到CTDB中。
简单地将tdb数据库恢复到CTDB中不起作用,它以以下错误结束:
2015/05/25 22:25:04.849302 [5636]:无效的数据库转储版本。 文件是版本7308332182664266836,但预期版本是1
使用ltdbtool转换tdb数据库也不会带来任何乐趣。
如何将tdb samba数据库导入ctdb? 谢谢, 马可
答案 0 :(得分:1)
首先要说几句警告:用CTDB集群域控制器并不常见。 Clustering / CTDB是为文件服务器制作的,文件服务器通常是域中的成员服务器。域控制器的主要目的是为客户端提供登录服务,并且通常使用不同的复制服务(例如,将数据库存储在ldap而不是TDB中)。集群域控制器可能会有问题,因为整个集群需要将自身始终作为单个服务器呈现给客户端。这可能会导致nmbd / NetBIOS名称解析出现问题。此外,一个问题是您需要在群集中确保在具有相同用户ID的所有ctdb群集节点上创建所有用户帐户。
通常,最佳做法是尽可能将文件服务器角色与域控制器角色分开。还要记住,从Samba 4.0开始,现在有一个Active Directory域控制器的功能,它在协议级别附带了用户数据库的多主复制。
所有这一切,重要的是你无法自由替换samba和ctdb版本。 Samba 3.6应该与ctdb 2.5一起使用,但是需要针对要使用的ctdb版本重新编译Samba。即如果Samba是针对旧版本的CTDB(如1.0.114.X)编译的,那么这个二进制包将无法与CTDB 2.5一起使用。
如果您有一组samba和ctdb软件包,那么将先前安装迁移到此新安装的过程取决于先前的安装是否也是CTDB集群。如果是这样,你可以做
ctdb getdbmap
在旧安装上运行
ctdb backupdb
标记为PERSISTENT的所有数据库。在新安装中,您使用
ctdb restoredb
恢复所有这些数据库。
如果以前的安装是非群集Samba,那么您使用ltdbtool的提示是正确的。你必须
从旧安装中复制重要数据库,至少:
secrets.tdb passdb.tdb winbindd_idmap.tdb group_mapping.tdb account_policy.tdb share_info.tdb
使用ltdbtool
/var/lib/ctdb/persistent/
,后缀为.0
的文件名,例如`/var/lib/ctdb/persistent/secrets.tdb.0' 之后,这些数据库应该在集群上同步。