mirror of
https://github.com/ditkrg/db-backup-s3.git
synced 2026-01-22 22:06:45 +00:00
- Updated README.md to reflect new script paths for MSSQL tests. - Added new test scripts for Kubernetes and Docker Compose environments, including setup for MinIO. - Introduced k8s-statefulset-test.yaml for deploying MSSQL with a backup sidecar. - Created setup-minio-k8s.sh for automated MinIO deployment in Kubernetes. - Enhanced test-mssql-k8s-with-minio.sh to streamline the testing process with MinIO. - Added comprehensive test-mssql-k8s.sh for validating MSSQL backup and restore operations. - Included test-mssql.sh for Docker Compose testing of MSSQL backup functionality. Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
89 lines
2.7 KiB
Bash
Executable File
89 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e # Exit on error (but we'll handle specific commands)
|
|
|
|
echo "🚀 Starting test of MSSQL backup functionality..."
|
|
|
|
echo "🧹 Cleaning up any existing containers..."
|
|
docker compose down -v 2>/dev/null || true
|
|
|
|
echo "📦 Starting MinIO and MSSQL..."
|
|
docker compose up -d minio mssql
|
|
|
|
echo "⏳ Waiting for MinIO to be ready..."
|
|
for i in {1..10}; do
|
|
if docker exec db-backup-s3-minio-1 mc alias set local http://localhost:9000 miniouser minioroot &>/dev/null; then
|
|
echo "✅ MinIO is ready!"
|
|
break
|
|
fi
|
|
echo -n "."
|
|
sleep 1
|
|
done
|
|
echo ""
|
|
|
|
echo "📦 Creating backups bucket..."
|
|
docker exec db-backup-s3-minio-1 mc mb local/backups --ignore-existing || true
|
|
|
|
echo "⏳ Waiting for MSSQL to be ready (this takes about 30 seconds)..."
|
|
for i in {1..30}; do
|
|
if docker exec db-backup-s3-mssql-1 /opt/mssql-tools18/bin/sqlcmd \
|
|
-S localhost -U sa -P 'YourStrong@Passw0rd' -C \
|
|
-Q "SELECT 1" &>/dev/null; then
|
|
echo "✅ MSSQL is ready!"
|
|
break
|
|
fi
|
|
echo -n "."
|
|
sleep 1
|
|
done
|
|
echo ""
|
|
|
|
echo "🗄️ Creating test database..."
|
|
docker exec db-backup-s3-mssql-1 /opt/mssql-tools18/bin/sqlcmd \
|
|
-S localhost -U sa -P 'YourStrong@Passw0rd' -C \
|
|
-Q "CREATE DATABASE TestDB;"
|
|
|
|
echo "📝 Creating test table and inserting data..."
|
|
docker exec db-backup-s3-mssql-1 /opt/mssql-tools18/bin/sqlcmd \
|
|
-S localhost -U sa -P 'YourStrong@Passw0rd' -C -d TestDB \
|
|
-Q "CREATE TABLE Users (id INT, name VARCHAR(50)); INSERT INTO Users VALUES (1, 'John'), (2, 'Jane');"
|
|
|
|
echo "📊 Current data:"
|
|
docker exec db-backup-s3-mssql-1 /opt/mssql-tools18/bin/sqlcmd \
|
|
-S localhost -U sa -P 'YourStrong@Passw0rd' -C -d TestDB \
|
|
-Q "SELECT * FROM Users;"
|
|
|
|
echo ""
|
|
echo "💾 Running backup..."
|
|
docker compose run --rm backup-mssql sh backup.sh
|
|
|
|
echo ""
|
|
echo "📋 Checking MinIO for backup..."
|
|
echo "Backups in bucket:"
|
|
docker exec db-backup-s3-minio-1 mc ls local/backups/mssql-backups/
|
|
|
|
echo ""
|
|
echo "🔨 Modifying database (deleting John)..."
|
|
docker exec db-backup-s3-mssql-1 /opt/mssql-tools18/bin/sqlcmd \
|
|
-S localhost -U sa -P 'YourStrong@Passw0rd' -C -d TestDB \
|
|
-Q "DELETE FROM Users WHERE id = 1;"
|
|
|
|
echo "📊 Current data after modification (should only show Jane):"
|
|
docker exec db-backup-s3-mssql-1 /opt/mssql-tools18/bin/sqlcmd \
|
|
-S localhost -U sa -P 'YourStrong@Passw0rd' -C -d TestDB \
|
|
-Q "SELECT * FROM Users;"
|
|
|
|
echo ""
|
|
echo "♻️ Restoring from backup..."
|
|
docker compose run --rm backup-mssql sh restore.sh
|
|
|
|
echo ""
|
|
echo "📊 Data after restore (should show both John and Jane):"
|
|
docker exec db-backup-s3-mssql-1 /opt/mssql-tools18/bin/sqlcmd \
|
|
-S localhost -U sa -P 'YourStrong@Passw0rd' -C -d TestDB \
|
|
-Q "SELECT * FROM Users;"
|
|
|
|
echo ""
|
|
echo "✨ Test complete! Cleaning up..."
|
|
# docker compose down -v
|
|
|
|
echo "🎉 All done!"
|