How to start a replication in MYSQL
1. Βackup βάσης με master data για να μπορούμε να κάνουμε
mysqldump -u root -p emplemdb --single-transaction --master-data=2 --routines --events --triggers > emplemdb.sql
Το --master-data=2 περιέχει δεδομένα για το σημείο απο το οποίο θα ξεκινήσει το replication να τρέχει
Το --single-transaction σε innodb tables κάνει το backup χωρίς να χρειαστεί να LOCK τα table
ΠΡΟΣΟΧΗ: ΝΑ ΓΙΝΕΤΑΙ ΕΛΕΓΧΟΣ ΟΤΙ ΥΠΑΡΧΕΙ ΧΩΡΟΣ ΣΤΟ ΣΕΡΒΕΡ ΠΡΙΝ ΓΙΝΕΙ ΤΟ BACKUP. ΑΝ ΕΧΕΙΣ 0% ΧΩΡΟ ΕΧΕΙΣ ΠΡΟΒΛΗΜΑ
2. Δημιουργία replication user στη master db
CREATE USER 'repl'@'%' IDENTIFIED BY 'StrongPassword';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
3. Move the database you backed up from one server to another
ΠΡΟΣΟΧΗ: ΝΑ ΓΙΝΕΤΑΙ ΕΛΕΓΧΟΣ ΟΤΙ ΥΠΑΡΧΕΙ ΧΩΡΟΣ ΣΤΟ ΣΕΡΒΕΡ ΠΡΙΝ ΓΙΝΕΙ Η ΜΕΤΑΦΟΡΑ. ΑΝ ΕΧΕΙΣ 0% ΧΩΡΟ ΕΧΕΙΣ ΠΡΟΒΛΗΜΑ
scp dump.sql replica:/
Επίσης υπάρχει περίπτωση τα bin logs να πιάσουμε πολύ χώρο. Για διαγραφή των bin logs μπορεί να χρησιμοποιηθεί το
PURGE BINARY LOGS BEFORE NOW();
4. Point replica to master
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='PRIMARY_IP',
SOURCE_USER='repl',
SOURCE_PASSWORD='StrongPassword',
SOURCE_LOG_FILE='mysql-bin.000012',
SOURCE_LOG_POS=45678;
Το SOURCE_LOG_FILE και το SOURCE_LOG_POS το βρίσκεις στο κάνωντας head -n 50 στο backup αρχειο που έχουμε πάρει.