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
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