Skip to main content

MIGRATION FROM MASTER TO REPLICA WITH FLOATING IP

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

```