Come faccio correttamente un'istantanea di un volume EBS con un'istanza RabbitMQ in esecuzione?

StackOverflow https://stackoverflow.com/questions/1391034

  •  21-09-2019
  •  | 
  •  

Domanda

Sto usando RabbitMQ su un'istanza EC2 e ho le tabelle mnesia su un volume EBS, così quando ho SnapShot e provo a lanciare un'altra istanza con gli stessi dati, sembra che la tabella è in uso da un altro RabbitMQ esempio.

è l'unico modo per aggirare il problema di chiudere RabbitMQ verso il basso per il colore / snapshot e quindi avviare il backup una volta fatto?

C'è un modo per ripulire i file in modo che non appaiono bloccati o sbloccati sono la forza?

Non è un problema comune sarò affrontando, proprio curioso di sapere se c'è una soluzione migliore.

Per chiarire, l'errore che vedo è:. timeout_waiting_for_tables

È stato utile?

Soluzione

Per prima cosa il filesystem di essere interessato. Non sono sicuro se si sta utilizzando LVM, ext3, XFS o cosa, ma se siete su LVM, si potrebbe desiderare di checkout la pagina man dmsetup ; specificamente dmsetup suspend / resume

Vi ritroverete con qualcosa di simile:

dmsetup suspend <dev> 
ec2-create-snapshot <vol> 
dmsetup resume <dev> 

Una volta che hai il filesystem sync'ing / sospensione, c'è RabbitMQ di cui preoccuparsi. RabbitMQ sviluppatore Matthias Radestock afferma in una thread di posta elettronica :

  
    

Ma per i messaggi persistenti Io non sono così sicuro. Come è il     rabbit_persister.LOG gestito? Posso solo fare una copia di backup     ogni volta, o posso solo prendere uno dei rabbit_persister.LOG.previous?

  
     

Mi piacerebbe il backup entrambi i file. Dovrebbe essere   possibile ripristinare la   rabbit_persister.LOG da un backup   anche quando che il backup è stata presa in   al centro di un accodamento - non ho   testato che però. Il registro .previous   è necessario nel caso backup prende   posto mentre il registro viene rotolato.

     
    

Dove dovrei cercare di scoprire come spesso è rotolato?

  
     

La logica per decidere quando a rotolare   il registro è piuttosto complessa.

     
    

Posso innescare un rotolo manuale?

  
     

rabbit__persister: force_snapshot () in   il guscio Erlang fa il trucco.

Checkout forza-snapshot di destinazione nel RabbitMQ Makefile .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top