MIGRATION FROM MASTER TO REPLICA WITH FLOATING IP
Παρακατω δουλευουμε αποκλειστικα στο REPLICA
1. Βρισκουμε το API token με τον παρακατω οδηγο
https://docs.hetzner.com/cloud/api/getting-started/generating-api-token/
2. hcloud context create eskap
Θα ζητηθει το api token για να χρησιμοποιησουμε αυτο το context
3 .hcloud context use eskap
Αυτο θα πρεπει να μπει στο script που φτιαξαμε για να χρησιμοποιησει το eskap context
4. Ευρεση FLOATING_IP_ID και NEW_SERVER_ID
SERVER ID: Hetzner Cloud: Go to the Hetzner Cloud Console, select your project, click on your server, and look at the Details tab or the URL in your browser, which ends in the numeric server ID.
FLOATING IP ID:
In the Hetzner Cloud Console
Go to Hetzner Cloud Console
Select your project.
Navigate to Networking → Floating IPs.
Click on the Floating IP.
The URL will contain the ID, for example
5. Δημιουργια script
#!/bin/bash
set -e
MASTER_HOST="10.1.0.2"
MASTER_USER="root"
DB_PASS="!1Tx.Khaa!"
FLOATING_IP_ID=123456
NEW_SERVER_ID=987654
echo "Checking if master server is reachable..."
if ssh -o ConnectTimeout=5 ${MASTER_USER}@${MASTER_HOST} "echo ok" >/dev/null 2>&1; then
echo "Master is operational. Stopping services on master..."
ssh ${MASTER_USER}@${MASTER_HOST} << EOF
sudo systemctl stop apache2
sudo systemctl stop mysql
EOF
else
echo "Master unreachable. Skipping master shutdown."
fi
echo "Stopping slave replication..."
mysql -u root -p$DB_PASS -e "STOP SLAVE;"
echo "Disabling read-only mode..."
mysql -u root -p$DB_PASS -e "SET GLOBAL read_only = OFF;"
mysql -u root -p$DB_PASS -e "SET GLOBAL super_read_only = OFF;"
echo "Failover completed successfully."
echo "Starting floating IP change."
hcloud context use eskap
echo "Moving floating IP..."
hcloud floating-ip assign $FLOATING_IP_ID $NEW_SERVER_ID
echo "Failover completed successfully."
```