# eskap

# MIGRATION FROM MASTER TO REPLICA WITH FLOATING IP

Παρακατω δουλευουμε αποκλειστικα στο REPLICA

1\. Βρισκουμε το API token με τον παρακατω οδηγο

[https://docs.hetzner.com/cloud/api/getting-started/generating-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" &gt;/dev/null 2&gt;&amp;1; then  
 echo "Master is operational. Stopping services on master..."

 ssh ${MASTER\_USER}@${MASTER\_HOST} &lt;&lt; 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."

```