背景:公司的cronsun把etcd数据库跑满后影响正常使用
在测试环境centos7 安装部署cronsun进行etcd、mongdb的数据恢复后模拟etcd的数据压缩清理
一、数据库安装
1、单击安装etcd
wget https://github.com/etcd-io/etcd/releases/download/v3.3.13/etcd-v3.3.13-linux-amd64.tar.gz
解压文件 tar -zxvf etcd-v3.3.13-linux-amd64.tar.gz cd etcd-v3.3.13-linux-amd64 目录下有两个可执行文件etcd 和 etcdctl cp etcd /usr/bin/ cp etcdctl /usr/bin/ 配置服务 # vim /usr/lib/systemd/system/etcd.service (添加以下内容) [Unit] Description=Etcd Server After=network.target [Service] Type=simple WorkingDirectory=/var/lib/etcd/ EnvironmentFile=-/etc/etcd/etcd.conf ExecStart=/usr/bin/etcd [Install] WantedBy=multi-user.target 创建工作文件夹 mkdir -p /var/lib/etcd mkdir -p /etc/etcd vim /etc/etcd/etcd.conf (添加以下内容) #[member] ETCD_NAME=default ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:2379" ETCD_ADVERTISE_CLIENT_URLS="http://127.0.0.1:2379"
启动服务添加开机自启
systemctl daemon-reload systemctl enable etcd.service systemctl start etcd.service
测试服务状态:
etcdctl cluster-health [root@node01 ~]# etcdctl cluster-health member 8e9e05c52164694d is healthy: got healthy result from http://127.0.0.1:2379 cluster is healthy
2、单节点安装mongdb
https://www.cnblogs.com/linu/articles/10135432.html
3、部署cronsun任务管理器
二、cronsun安装
1 下载 cronsun:https://github.com/shunfei/cronsun/releases (选择最新版本即可) https://github.com/shunfei/cronsun/releases/download/v0.3.5/cronsun-v0.3.5-linux-amd64.zip 2 解压后修改 conf 目录下的配置文件:db.json 和 etcd.json,分别修改 MongoDB 和 etcd 的实际地址。 由于是单节点安装。所以不需要进行修改 3 启动 web:./cronweb -conf conf/base.json (若要后台运行则使用 nohup) nohup /usr/local/cronsun-v0.3.5/cronweb -conf /usr/local/cronsun-v0.3.5/conf/base.json & 4 启动 node:./cronnode -conf conf/base.json (若要后台运行则使用 nohup) nohup /usr/local/cronsun-v0.3.5/cronnode -conf /usr/local/cronsun-v0.3.5/conf/base.json & 5 访问前台:http://x.x.x.x:7079/ui/ 默认用户密码: admin@admin.com / admin
三、etcd的数据备份和恢复
etcd版本采用的3.3.18,3.3版本的需要声明
备份命令为
ETCDCTL_API=3 etcdctl --endpoints $ip:$port snapshot save $BackupDir/$BackupFile
恢复需要删除/etc/etcd/目录下配置文件内定义的数据目录如下图
删除掉etcd目录后,就可通过备份生成的文件进行数据恢复
ETCDCTL_API=3 etcdctl snapshot restore $BackupFile --data-dir=/var/lib/etcd/default.etcd/
恢复后可用ETCDCTL_API=3 etcdctl endpoint status --cluster -w table或
ETCDCTL_API=3 etcdctl --endpoints=127.0.0.1:2379 --write-out=table endpoint status 查看数据量大小是否和原来一致
查看目前数据版本
rev=$(ETCDCTL_API=3 etcdctl --endpoints=127.0.0.1:2379 endpoint status --write-out="json" | egrep -o ‘"revision":[0-9]*‘ | egrep -o ‘[0-9].*‘)
压缩至当前版本
ETCDCTL_API=3 etcdctl --endpoints=127.0.0.1:2379 compact $rev
执行碎片整理回收
ETCDCTL_API=3 etcdctl --endpoints=127.0.0.1:2379 defrag
这里会遇到报错,journalctl -xe -u etcd查看日志发现是回收时间需要较长,而且伴随日志的写入增长导致。稍等一会即可
完成后
ETCDCTL_API=3 etcdctl --endpoints=127.0.0.1:2379 --write-out=table endpoint status 查etcd目前的大小确定压缩后的空间占用大小