自学内容网 自学内容网

数据库参数备份

MySQL

#!/bin/bash
# 获取当前日期和时间的时间戳
TIMESTAMP=$(date +"%Y%m%d-%H%M%S")

# 0、创建目录
mkdir /tmp/parameter_$TIMESTAMP/

# 1、获取所有命名空间
echo "1、获取所有命名空间"
NAMESPACES=$(kubectl get ns | grep qfusion- | grep -v qfusion-cloudshell | awk '{print $1}')
CONTAINER=mysql

# 2、遍历所有命名空间,获取MySQL实例的参数
echo "2、遍历所有命名空间,获取MySQL实例的参数"
for NAMESPACE in $NAMESPACES; do
  echo "Processing namespace: $NAMESPACE"
  # 在每个命名空间中查找名称以 'mysql-' 开头的 Pod
  for pod in $(kubectl get pods -n "$NAMESPACE" -o=jsonpath='{.items[*].metadata.name}' | grep '^mysql-'); do
    echo "Processing pod: $pod in namespace: $NAMESPACE"
    # 执行 mysql 命令并将输出保存到带有时间戳的文件
    kubectl exec -it "$pod" -n "$NAMESPACE" -c "$CONTAINER" -- bash -c 'mysql -uroot -p${MYSQL_ROOT_PASSWORD} -e "show variables \G;"' > "/tmp/parameter_$TIMESTAMP/${pod}_${TIMESTAMP}.csv" 2>/dev/null
  done
done

# 3、查看是否打印成功
echo "3、查看是否打印成功"
echo ""
ls -l /tmp/parameter_$TIMESTAMP/
head -n 2 /tmp/parameter_$TIMESTAMP/*.csv

在这里插入图片描述

MongoDB

#!/bin/bash
# 获取当前日期和时间的时间戳
TIMESTAMP=$(date +"%Y%m%d-%H%M%S")


# 0、创建带有时间戳的目录
mkdir /tmp/parameter_$TIMESTAMP/

# 1、获取所有命名空间
echo "1、获取所有命名空间"
#NAMESPACES=$(kubectl get ns -o=jsonpath='{.items[*].metadata.name}')
NAMESPACES=$(kubectl get ns | grep qfusion- | grep -v qfusion-cloudshell | awk '{print $1}')
CONTAINER=mongod

# 2、遍历所有命名空间,获取MongoDB实例的参数
echo "2、遍历所有命名空间,获取MongoDB实例的参数"
for NAMESPACE in $NAMESPACES; do
  echo "Processing namespace: $NAMESPACE"
  # 在每个命名空间中查找名称以 'mongo-' 开头的 Pod
  for pod in $(kubectl get pods -n "$NAMESPACE"  | grep '^mongo-' | awk '{print $1}'); do
    echo "Processing pod: $pod in namespace: $NAMESPACE"
    # 执行 mongos 命令并将输出保存到带有时间戳的文件
    # 假设每个Pod中只有一个容器,如果多个容器需要指定容器名称
    if echo "$pod" | grep -q 'mongos'; then
      kubectl exec -it "$pod" -n "$NAMESPACE" -c mongod -- bash -c 'cat /etc/mongos.conf' > "/tmp/parameter_$TIMESTAMP/${pod}.csv" 2>/dev/null
    else
      kubectl exec -it "$pod" -n "$NAMESPACE" -c mongod -- bash -c 'cat /etc/mongod.conf' >> "/tmp/parameter_$TIMESTAMP/${pod}.csv" 2>/dev/null
    fi
  done
done

# 3、查看是否打印成功
echo "3、查看是否打印成功"
echo ""
#ls -l /tmp/parameter_$TIMESTAMP/

grep max /tmp/parameter_$TIMESTAMP/*.csv

在这里插入图片描述


原文地址:https://blog.csdn.net/hezuijiudexiaobai/article/details/143742669

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!