Add specialized fix scripts for macmini7 deployment and database issues
This commit is contained in:
parent
c691086fe1
commit
3aacfa8283
|
@ -0,0 +1,76 @@
|
|||
#!/bin/bash
|
||||
# Script to fix database issues for Woodpecker
|
||||
|
||||
echo "===== CHECKING DATABASE SERVICE ====="
|
||||
docker service ls | grep woodpecker_db || {
|
||||
echo "ERROR: woodpecker_db service not found"
|
||||
echo "Please deploy the stack first"
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo "===== DATABASE SERVICE DETAILS ====="
|
||||
docker service ps woodpecker_db --no-trunc
|
||||
|
||||
echo "===== DATABASE LOGS ====="
|
||||
docker service logs --tail 30 woodpecker_db
|
||||
|
||||
echo "===== CHECKING DATABASE DIRECTORY ON MACMINI1 ====="
|
||||
echo "Note: This requires SSH access to macmini1 or shared storage"
|
||||
ls -la /mnt/data/nixc.us/woodpecker/production/db || {
|
||||
echo "WARNING: Could not access database directory locally"
|
||||
echo "Attempting to check via SSH..."
|
||||
ssh macmini1 "ls -la /mnt/data/nixc.us/woodpecker/production/db" || {
|
||||
echo "ERROR: Could not check database directory on macmini1 via SSH"
|
||||
}
|
||||
}
|
||||
|
||||
echo "===== FIXING DATABASE PERMISSIONS ====="
|
||||
echo "Setting permissions on database directory..."
|
||||
chmod -R 777 /mnt/data/nixc.us/woodpecker/production/db || {
|
||||
echo "WARNING: Could not set permissions locally"
|
||||
echo "Attempting to set permissions via SSH..."
|
||||
ssh macmini1 "chmod -R 777 /mnt/data/nixc.us/woodpecker/production/db" || {
|
||||
echo "ERROR: Could not set permissions on macmini1 via SSH"
|
||||
}
|
||||
}
|
||||
|
||||
echo "===== CHECKING FOR CORRUPTED DATABASE FILES ====="
|
||||
echo "Looking for InnoDB files that might be causing issues..."
|
||||
find /mnt/data/nixc.us/woodpecker/production/db -name "ib_logfile*" || {
|
||||
echo "No InnoDB log files found locally"
|
||||
echo "Attempting to check via SSH..."
|
||||
ssh macmini1 "find /mnt/data/nixc.us/woodpecker/production/db -name \"ib_logfile*\"" || {
|
||||
echo "ERROR: Could not check for InnoDB files on macmini1 via SSH"
|
||||
}
|
||||
}
|
||||
|
||||
echo "===== REMOVING CORRUPTED DATABASE FILES (IF ANY) ====="
|
||||
echo "This will only remove InnoDB log files that might be causing corruption"
|
||||
echo "Your actual database data will not be affected"
|
||||
echo "Removing InnoDB log files..."
|
||||
rm -f /mnt/data/nixc.us/woodpecker/production/db/ib_logfile* || {
|
||||
echo "WARNING: Could not remove files locally"
|
||||
echo "Attempting to remove via SSH..."
|
||||
ssh macmini1 "rm -f /mnt/data/nixc.us/woodpecker/production/db/ib_logfile*" || {
|
||||
echo "ERROR: Could not remove files on macmini1 via SSH"
|
||||
}
|
||||
}
|
||||
|
||||
echo "===== RESTARTING DATABASE SERVICE ====="
|
||||
docker service update --force woodpecker_db
|
||||
|
||||
echo "===== WAITING FOR DATABASE TO RESTART ====="
|
||||
echo "Waiting 30 seconds for database to restart..."
|
||||
sleep 30
|
||||
|
||||
echo "===== CHECKING DATABASE STATUS ====="
|
||||
docker service ps woodpecker_db --no-trunc
|
||||
|
||||
echo "===== CHECKING DATABASE LOGS AFTER RESTART ====="
|
||||
docker service logs --tail 20 woodpecker_db
|
||||
|
||||
echo "===== DONE ====="
|
||||
echo "If the database is still not running, you may need to try the following:"
|
||||
echo "1. Remove all files from /mnt/data/nixc.us/woodpecker/production/db"
|
||||
echo "2. Redeploy the stack"
|
||||
echo "This will reset your database, but will fix persistent corruption issues."
|
|
@ -0,0 +1,81 @@
|
|||
#!/bin/bash
|
||||
# Script to fix Woodpecker deployment from macmini7
|
||||
|
||||
echo "===== VERIFYING WE'RE ON MACMINI7 ====="
|
||||
HOSTNAME=$(hostname)
|
||||
if [[ "$HOSTNAME" != *"macmini7"* ]]; then
|
||||
echo "ERROR: This script should be run on macmini7, current host is $HOSTNAME"
|
||||
echo "Please run this script on macmini7"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "===== CHECKING SWARM ACCESS FROM MACMINI7 ====="
|
||||
docker node ls || {
|
||||
echo "ERROR: Cannot access Docker swarm from macmini7"
|
||||
echo "Make sure macmini7 is a swarm manager"
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo "===== CHECKING IF MACMINI1 IS IN SWARM ====="
|
||||
docker node ls | grep macmini1 || {
|
||||
echo "WARNING: macmini1 node not found in swarm!"
|
||||
echo "The stack.yml has constraints requiring macmini1"
|
||||
}
|
||||
|
||||
echo "===== REMOVING ANY EXISTING WOODPECKER STACK ====="
|
||||
docker stack rm woodpecker
|
||||
echo "Waiting for stack removal..."
|
||||
sleep 20
|
||||
|
||||
echo "===== CHECKING FOR ORPHANED SERVICES ====="
|
||||
docker service ls | grep woodpecker && echo "WARNING: Woodpecker services still exist after stack removal!"
|
||||
|
||||
echo "===== ENSURING DIRECTORIES EXIST ON MACMINI1 ====="
|
||||
echo "Note: This requires SSH access to macmini1 or shared storage"
|
||||
echo "Creating directories for Woodpecker..."
|
||||
mkdir -p /mnt/data/nixc.us/woodpecker/production/db /mnt/data/nixc.us/woodpecker/production/data || {
|
||||
echo "WARNING: Could not create directories locally"
|
||||
echo "Attempting to create directories via SSH..."
|
||||
ssh macmini1 "mkdir -p /mnt/data/nixc.us/woodpecker/production/db /mnt/data/nixc.us/woodpecker/production/data" || {
|
||||
echo "ERROR: Could not create directories on macmini1 via SSH"
|
||||
echo "You may need to manually create these directories on macmini1"
|
||||
}
|
||||
}
|
||||
|
||||
echo "===== ENSURING NETWORKS EXIST ====="
|
||||
docker network create --driver=overlay --attachable traefik || echo "traefik network already exists"
|
||||
|
||||
echo "===== DEPLOYING WOODPECKER STACK FROM MACMINI7 ====="
|
||||
cd /mnt/tank/persist/nixc.us/woodpecker/production
|
||||
echo "Current directory: $(pwd)"
|
||||
ls -la stack.yml || {
|
||||
echo "ERROR: stack.yml not found in $(pwd)"
|
||||
echo "Please make sure the stack.yml file exists in this directory"
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo "Deploying from stack.yml..."
|
||||
docker stack deploy -c stack.yml woodpecker
|
||||
|
||||
echo "===== WAITING FOR SERVICES TO START ====="
|
||||
echo "Waiting 30 seconds for services to start..."
|
||||
sleep 30
|
||||
|
||||
echo "===== SERVICE STATUS ====="
|
||||
docker service ls | grep woodpecker
|
||||
|
||||
echo "===== CHECKING SERVICE PLACEMENT ====="
|
||||
for service in $(docker service ls --format "{{.Name}}" | grep woodpecker); do
|
||||
echo "Checking placement for $service..."
|
||||
docker service ps $service --no-trunc --format "{{.Node}} {{.CurrentState}}"
|
||||
done
|
||||
|
||||
echo "===== CHECKING LOGS ====="
|
||||
echo "Database logs:"
|
||||
docker service logs --tail 20 woodpecker_db || echo "Could not get database logs"
|
||||
|
||||
echo "Server logs:"
|
||||
docker service logs --tail 20 woodpecker_server || echo "Could not get server logs"
|
||||
|
||||
echo "===== DONE ====="
|
||||
echo "If services are not running, check the logs above for errors."
|
Loading…
Reference in New Issue