Detail Matter, 虽然简单,但却重要!
议题: 如何备份配置文件
- 在配置中心盛行的情况下,配置每次修改,都会有历史记录(比如etcd/consul等等)。这种系统维护起来当然是非常轻便了。 
- 大量的系统采用本地的配置文件。如何最记录每次的变更呢? - 最简单有效的方式,就是文件名绝对路径+日期,备份到特定的磁盘。 - 可以参照: 备份命令脚本,Pros: 逻辑绝对的简单清晰,Cons:服务器放上这个脚本,洁癖症有点难受。 
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 
 | mybackup() {
 src_file=${1?"What files to backup"}
 
 
 if [ -n "$BAK_ROOT_DIR" ]; then
 bak_root_dir="$BAK_ROOT_DIR"
 else
 bak_root_dir="/data/backup"
 fi
 
 parent_dir=$(dirname "$src_file")
 short_fname=$(basename "$src_file")
 date="$(date +'%Y%m%d.%H%M%S')"
 bak_dir="${bak_root_dir}$parent_dir"
 if [ -f "$src_file" ]; then
 mkdir -p "$bak_dir"
 echo "cp $src_file ${bak_dir}/${short_fname}-${date}"
 cp "$src_file" "${bak_dir}/${short_fname}-${date}"
 elif [ -d "$src_file" ]; then
 mkdir -p "$bak_dir-${short_fname}-${date}"
 echo "cp -r $src_file $bak_dir-${short_fname}-${date}"
 cp -r "$src_file" "$bak_dir-${short_fname}-${date}"
 else
 echo "Error: $src_file doesn't exist"
 exit 1
 fi
 }
 
 | 
更特殊的场景
Q:n台nginx,作为负载节点,使用相同的配置文件。如何做到有效的更改,且保证完全的一致呢?
A: 杜绝手工修改产生差异行等情况。通过ansible playbook,统一修改。或修改一处,推送到所有节点,再reload nginx。
Q: 配置文件之备份
A: 首先先思考,这个问题是不是驳论🤔。针对存在文件上的配置文件,如果生产服务器,本来存储都是高可用,那么剩下的最大的风险就是人为失误。于是基于墨菲定律,磁盘定时快照是必不可少的咯。
2021年1月17日 上午10:26:14 补充,在分布式以及容器化的各种场景下,配置文件的维护,更多应该统一从运维平台进行,统一的修改。毕竟运维,不就是可控以及管理嘛。