Replicare RDS-MySQL su un host non amazon?


16

Ho un database MySQL (5.1) abbastanza grande in esecuzione su Amazon come istanza RDS. Sto lavorando per migrarlo da Amazon. Per farlo senza problemi, vorrei configurare il nuovo hardware come replica di sola lettura dell'istanza RDS.

So che RDS supporta la replica all'interno di RDS. C'è un modo per configurarlo per replicarsi su un host che non è in RDS?


Tutti i tuoi dati sono InnoDB ???
RolandoMySQLDBA il

Diciamo "sì, è tutto in innodb" - abbastanza vicino al vero per questo forum. ;)
Leopd

Risposte:




3

Se hai il seguente scenario

  • tutti i tuoi dati sono innodb
  • la registrazione binaria è abilitata su RDS

potresti creare un utente in RDS come questo

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'leopd'@'%' IDENTIFIED BY 'repl_password'; 

Se Amazon non consente '%' per il nome host, sarà necessario un indirizzo IP pubblico specifico

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'leopd'@'xxx.xx.xx.xxx';

Quindi, mysqldump i dati da RDS come un'unica transazione

mysqldump -u... -p... --single-transaction --master-data=1 --all-databases --routines --triggers > /root/MySQLData.sql

Esegui il comando CHANGE MASTER TO utilizzando leopd@'xxx.xx.xx.xxxx 'come utente (xxx.xx.xx.xxxx è l'indirizzo IP di RDS)

CHANGE MASTER TO
master_host = 'xxx.xx.xx.xxxx',
master_port = 3306,
master_user = 'leopd',
master_passwowrd = 'repl_pass'
master_log_file='slsnbj',
master_log_pos=1;

Carica i dati in un nuovo server. Non preoccuparti di master_log_file = 'slsnbj' e master_log_pos = 1. La riga 22 del dump avrà il file di registro e la posizione corretti.

Esegui START SLAVE; sul nuovo server

Dovrebbe iniziare a funzionare. Potrebbe essere necessario preoccuparsi delle considerazioni sul firewall.

Provaci !!!

AGGIORNAMENTO 2012-03-23 ​​17:11 EDT

Ti resta solo una possibilità. Vedi se riesci a impostare l'ultimo privilegio con questo:

UPDATE mysql.user SET Repl_slave_priv = 'Y' WHERE user='root' AND host='%';
FLUSH PRIVILEGES;

Forse questo è bloccato per gli utenti che hanno% nella colonna host di mysql.user.

Potrebbe essere necessario creare un altro utente con un IP pubblico difficile, come ho suggerito in precedenza

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'leopd'@'xxx.xx.xx.xxx';

È possibile che anche gli slave di replica in RDS debbano essere RDS.


Quando si GRANT REPLICATION SLAVEERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)
accede

Per favore, corri SHOW GRANTS. Hai tutti i privilegi su . ?
RolandoMySQLDBA

Questo viene eseguito come utente root RDS, che ha tutti i privilegi che sono possibili: GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD <snip> WITH GRANT OPTION. Sembra che Amazon non lo permetta.
Leopd

Aggiornata la mia risposta in base al tuo ultimo commento ...
RolandoMySQLDBA il

1
@Radek il poster originale (OP) ha risposto il 23 marzo: dba.stackexchange.com/a/15492/877
RolandoMySQLDBA
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.