Added TrueCharts db tools
Copied from here:
https://truecharts.org/manual/SCALE/guides/sql-export/
Link to source of page:
https://github.com/truecharts/website/blame/main/docs/manual/SCALE/guides/sql-export.md#L13
Permalink in space/time:
30484d04f7/docs/manual/SCALE/guides/sql-export.md (L13)
This commit is contained in:
parent
9860c9a2d6
commit
121ac483ca
|
@ -0,0 +1,37 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# create backup folder
|
||||||
|
folder="./dumps/"
|
||||||
|
mkdir -p "$folder"
|
||||||
|
|
||||||
|
# get namespaces with postgres database pod
|
||||||
|
namespaces=$(k3s kubectl get pods -A | grep postgres | awk '{print $1}')
|
||||||
|
|
||||||
|
for ns in $namespaces; do
|
||||||
|
# extract application name
|
||||||
|
app=$(echo "$ns" | sed 's/^ix-//')
|
||||||
|
|
||||||
|
echo "Creating database backup for $app."
|
||||||
|
|
||||||
|
file="$app.sql"
|
||||||
|
|
||||||
|
# Scale down deployment to avoid inconsistencies in DB
|
||||||
|
k3s kubectl scale deploy "$app" -n "$ns" --replicas=0
|
||||||
|
while true; do k3s kubectl get pods -n "$ns" | grep -i -q terminating || break; done;
|
||||||
|
|
||||||
|
k3s kubectl exec -n "$ns" -c "$app"-postgresql "$app"-postgresql-0 -- bash -c 'PGPASSWORD=$POSTGRES_PASSWORD pg_dump -Fc -U $POSTGRES_USER -d $POSTGRES_DB -f /tmp/'$file
|
||||||
|
k3s kubectl cp -n "$ns" -c "$app"-postgresql "$app-postgresql-0:tmp/$file" $folder$file
|
||||||
|
|
||||||
|
# Scale deployment back up
|
||||||
|
k3s kubectl scale deploy "$app" -n "$ns" --replicas=1
|
||||||
|
|
||||||
|
if [ ! -f "$folder$file" ]; then
|
||||||
|
>&2 echo "$folder$file does not exist."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "File $file created."
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# get namespaces
|
||||||
|
namespaces=$(k3s kubectl get secrets -A | grep -E "dbcreds|cnpg-main-urls" | awk '{print $1, $2}')
|
||||||
|
|
||||||
|
# iterate over namespaces
|
||||||
|
( printf "Application | Username | Password | Address | Port\n"
|
||||||
|
echo "$namespaces" | while read ns secret; do
|
||||||
|
# extract application name
|
||||||
|
app_name=$(echo "$ns" | sed 's/^ix-//')
|
||||||
|
if [ "$secret" = "dbcreds" ]; then
|
||||||
|
creds=$(k3s kubectl get secret/$secret --namespace "$ns" -o jsonpath='{.data.url}' | base64 -d)
|
||||||
|
else
|
||||||
|
creds=$(k3s kubectl get secret/$secret --namespace "$ns" -o jsonpath='{.data.std}' | base64 -d)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# get username, password, addresspart, and port
|
||||||
|
username=$(echo "$creds" | awk -F '//' '{print $2}' | awk -F ':' '{print $1}')
|
||||||
|
password=$(echo "$creds" | awk -F ':' '{print $3}' | awk -F '@' '{print $1}')
|
||||||
|
addresspart=$(echo "$creds" | awk -F '@' '{print $2}' | awk -F ':' '{print $1}')
|
||||||
|
port=$(echo "$creds" | awk -F ':' '{print $4}' | awk -F '/' '{print $1}')
|
||||||
|
|
||||||
|
# construct full address
|
||||||
|
full_address="${addresspart}.${ns}.svc.cluster.local"
|
||||||
|
|
||||||
|
# print results with aligned columns
|
||||||
|
printf "%s | %s | %s | %s | %s\n" "$app_name" "$username" "$password" "$full_address" "$port"
|
||||||
|
done ) | column -t -s "|"
|
Loading…
Reference in New Issue