在这#!/usr/bin/python3
# encoding: utf-8
#filename: etcd-backups-restore-compress-defragmentation.py
#author: gaohaixiang
#writetime:202401161055
"""
脚本功能:
etcd 数据备份,使用备份数据进行数据库重构,数据压缩,碎片整理
数据压缩及碎片整理的原因:
etcd数据写入频繁,导致版本不断叠加,从而导致数据库不断变大 \
需要对其进行压缩,进行碎片整理,从而减小etcd数据库的大小
etcd默认的数据存储大小为2G,当超过这个存储大小,可能会限制数据写入 \
或者报错mcc、NOSPACE,除了进行数据压缩碎片整理外,还可以进行参数调整 \
etcd启动添加参数 --quota-backend-bytes ,将etcd存储调整到多少 \
单位为B,10737418240 为10G
etcd启动示例:
/opt/etcd/etcd --quota-backend-bytes=10737418240 --auth-token jwt --config-file=/opt/etcd/nodefile.yml
注意:
备份恢复是选择最新的一个备份进行数据恢复,不是指定固定的备份来进行操作
"""
import json
import subprocess
import datetime
import os
import stat
import getpass
# 命令执行
def run_command(command):
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
stdout, stderr = process.communicate()
return process.returncode, stdout, stderr
# 目录权限检查
def check_directory_access(directory):
if not os.path.isdir(directory):
# print(f"Directory {directory} does not exist")
# return False
# 创建目录
os.makedirs(directory)
# 更改目录的权限,使得所有用户都可以读取和写入
os.chmod(directory, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)
if not os.access(directory, os.R_OK):
#print(f"User {getpass.getuser()} does not have read access to directory {directory}")
#return False
# 更改目录的权限,使得所有用户都可以读取和写入
os.chmod(directory, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)
if not os.access(directory, os.W_OK):
#print(f"User {getpass.getuser()} does not have write access to
etcd数据备份数据恢复数据压缩碎片整理
于 2024-01-16 15:55:38 首次发布