如何备份
# 前言
当我们使用 go-ldap-admin 全面接管了 openLDAP 之后,openLDAP 平台的数据的备份,也就从原来的备份 openLDAP 转移到了更加简单易用的备份 MySQL 数据就可以了。让我们再看一次平台设计的架构图:
只要我们把 MySQL 数据备份好了,那么就算是整个平台全部挂了,而 MySQL 数据库是异地备份着的,那么就可以很快将原来的 openLDAP 恢复回来。
本文就是针对这一问题进行讲解以及演示。
# 准备
首先我们部署好了一套 go-ldap-admin 系统,而且已经在生产使用了,此时可以看到系统中数据大概如下:
在原来默认数据的基础上,我们创建了一个 ops 的 cn,与 zhangsan 的用户。
# 思路
平时我们可以通过脚本 + 定时任务将数据库进行备份,并且异地保存。
此时一旦在运行的主机崩溃,或者其他原因,导致数据丢失或损毁而服务不可用,则可按如下思路进行恢复:
- 首先还按照原来的部署方案进行部署,只不过需要注意,禁用掉 config.yml 中的数据初始化参数。
- 然后将数据导入到 MySQL,再在平台上把分组以及用户同步到 openLDAP 即可。
# 实践
我们当前的服务目录如下:
tree -L 2
.
├── config
│ ├── config.yml
│ ├── init.ldif
│ └── my.cnf
├── data
│ ├── mysql
│ ├── openldap
│ └── phpadmin
├── docker-compose.yml
└── go_ldap_admin.sql
5 directories, 5 files
2
3
4
5
6
7
8
9
10
11
12
13
14
可以看到数据都在 data 目录,现在我们删除掉 data 目录,以模拟数据异常的故障。
此时需要注意,务必把 config.yml 中的初始化配置关闭掉:
# 是否初始化数据(没有初始数据时使用, 已发布正式版改为false)
init-data: false
2
然后启动服务。
服务启动之后,此时 go-ldap-admin 是无法登陆的,需要把 go_ldap_admin.sql 拷贝到 mysql 容器中,然后将数据恢复回去。
恢复完成之后,再重启一下服务,然后就可以登陆 web 界面了。
此时可以看到,一些非默认的数据,已经出现了上传的按钮:
这个时候需要注意,先同步分组,然后再同步用户,这两部执行完成之后,可以看到 openLDAP 中的数据又恢复了:
# 总结
所以我们以后对接平台之后,就不再需要维护 openLDAP 的数据了,平时只要注意两边的数据对齐,然后妥善把 MySQL 数据异地备份就可以了。