Checksumming repliche mysql su ssl

Dopo ore di difficoltà a capire il modo in cui funziona il percona toolkit (2.1) pt-table-checksum, cerco di provarti.

Situazione

  • Esecuzione di replica MySQL (Master-attivo: Master: passivo)
  • L'utente slave è necessario connettersi tramite SSL
  • Il check-table di pt-table non può connettersi allo slave

Problema

  • il check-table-pt-table non funziona per me con un SSL richiesto mysql "checksum" utente

L'idea di una soluzione

  • è utilizzare il checksum pt-table sul master attivo,
  • controllando un tunnel via ssh collegato localmente MySQL-Slave,
  • con un utente "checksum" non necessario per utilizzare SSL

Le domande

  1. Il checksum pt-table (2.1) non è in grado di connettersi tramite SSL?
  2. Come configurare il checksum pt-table per connettersi (solo) a uno slave configurato internamente
  3. L'opzione DSN potrebbe essere la soluzione?
  4. Se è così: non riesco a capire come funziona. Potresti metterti in pista?
  5. Devo utilizzare una versione più vecchia o il maatkit invece? (perché posso configurare master / slave sulla row di command)
  6. Tutto: Qual è la pratica migliore per repliche di checksum su reti insicure, con checksum pt-table che non funziona su SSL?

Con speranza:)

2 Solutions collect form web for “Checksumming repliche mysql su ssl”

Non ho mai provato la replica master-master, ma ho impostato le connessioni SSL con il checksum pt-table. Speriamo che le mie note in basso possano aiutare a rispondere a alcune delle tue domande relative a SSL.

Nel mio caso, ho la replica master-slave impostata utilizzando le connessioni SSL e sto usando Percona Toolkit 2.1.2. Poiché il modo per impostarlo non era ovvio, ho pensato che le mie note potrebbero aiutare a risparmiare tempo e fatica nella tua situazione. Di seguito è riportto un esempio di come ho ottenuto le connessioni SSL che funzionano per le connessioni di checksum pt-table-su entrambi i server di database master e slave.

La chiave è quella di passare le informazioni DSN (che contengono le impostazioni SSL) allo slave passando esplicitamente il file predefinito (ad esempio, -F = / etc / my.cnf.percona) allo slave utilizzando il metodo -recursion dsn ". Da quello che ho letto sul sito web di Percona e rivedendo il codice del checksum pt-table, le informazioni DSN non vengono copiate da una connessione a quella successiva nelle versioni successive del Percona Toolkit (a partire da 2.0 credo). Quindi, è necessario impostare separatamente la connessione slave dal master.

Passare le informazioni DSN per la connessione slave utilizzando:
–recursione-metodo dsn = "D = percona, t = dsns, F = / etc / my.cnf.percona"

ipotesi:
un. L'account del database "percona" dispone dei privilegi appropriati per il checksum pt-table di Percona. Raccommand di utilizzare "REQUIRE SSL" per assicurarmi che l'account sia necessario per utilizzare le connessioni SSL.
b. Lo slave e il master sono impostati per utilizzare le connessioni SSL

Nota: Tutti i passaggi riportti di seguito vengono eseguiti sul master.

(1) Per passare le impostazioni SSL per la connessione DBI (cioè la configuration DSN), creare un file specifico my.cnf specifico per il software percona.

     /etc/my.cnf.percona
     [cliente]
     ssl = 1
     utente = percona
     password = xxxxxxxxx
     ssl-capath = / etc / mysql / ca / ​​crt

     Il file /etc/my.cnf.percona verrà utilizzato per impostare le connessioni SSL sia al master che allo slave.

     Assicurarsi di impostare le properties; e le autorizzazioni sul file in quanto contiene una password:
     root root: root /etc/my.cnf.percona (se non è già proprietario di root o di un account di sistema)
     chmod 0600 /etc/my.cnf.percona

(2) Testare le impostazioni /etc/my.cnf.percona

  
     # mysql --defaults-file = / etc / my.cnf.percona --host slave.dominio mysql> \ s -------------- mysql Ver 14.14 Distrib 5.5.23, per Linux (x86_64) usando il readline 5.1 ID del collegamento: 162 Database attuale: Utente corrente: percona@master.domain.com SSL: La cifra in uso è DHE-RSA-AES256-SHA Pager di corrente: stdout Usando outfile: '' Using delimiter: ;  Versione del server: 5.5.23-log Versione del protocollo MySQL Community Server (GPL): 10 Connessione: slave.domain.com tramite TCP / IP Server characterset: latin1 Caratteri di caratteri: Latin1 Caratteri client: utf8 Caratteri connetti: utf8 Porta TCP: 3306 Uptime: 2 giorni 2 ore 8 min 7 sec # mysql --defaults-file = / etc / my.cnf.percona --host master.domain.com mysql> \ s ------------ - mysql Ver 14.14 Distrib 5.5.23, per Linux (x86_64) using readline 5.1 ID connessione: 581433 Database attuale: Utente corrente: percona@master.domain.com SSL: la cifra in uso è DHE-RSA-AES256-SHA : stdout Utilizzo di outfile: '' Utilizzando delimitatore:;  Versione del server: 5.5.23-log Versione del protocollo MySQL Community Server (GPL): 10 Connessione: master.domain.com tramite TCP / IP Server characterset: latin1 Caratteri di caratteri: Latin1 Caratteri client: utf8 Caratteri connetti: utf8 Porta TCP: 3306 Uptime: 9 giorni 3 ore 5 min 49 sec 

(3) Impostare la tabella DSN nel database percona sul master


     Sul maestro:
     Crea il database percona (se non esiste già):

     mysql> crea database percona;

     Se il database percona esiste già e si desidera ridisegnare tutto da zero, distriggersre le tabelle checksums & dsns se esistono già:

     mysql> drop tavolo percona.checksums;  - fai questo solo se sei sicuro di voler iniziare e ripetere tutto 
mysql> drop tavolo percona.dsns; - ok per abbandonare questo problema, la ricreiamo nel prossimo passo
Creare la tabella dsns nel database percona:
mysql> uso percona; mysql> CREATE TABLE `dsns` ( -> `id` int (11) NOT NULL AUTO_INCREMENT, -> `parent_id` int (11) DEFAULT NULL, -> `dsn` varchar (255) NON NULL, -> KEY PRIMARIA (`id`) ->); Inserire le informazioni dello slave nella tabella: mysql> inserire nei valori dsn (dsn) ("h = slave.domain.com");

(4) Eseguire il checksum pt-table e passare esplicitamente il file predefinito (-F = / etc / my.cnf.percona) allo slave utilizzando l'impostazione "–recursion-method dsn"


     / usr / bin / pt-table-checksum -F /etc/my.cnf.percona h = master.domain.com --recursion-method dsn = "D = percona, t = dsns, F = / etc / my. cnf.percona"

     utilizza il collegamento master "-F /etc/my.cnf.percona h = master.domain.com"
     slave connection utilizza '--recursion-method dsn = "D = percona, t = dsns, F = / etc / my.cnf.percona" "

Questo dovrebbe creare la tabella dei checksum nel database percona e collegarsi allo slave (e master) utilizzando le connessioni SSL.

Non ho mai usato il toolkit per il percona, ma mi sembra così

(2) pt-table-checksum non è progettato per "connettersi" a uno slave; è progettato per eseguire direttamente su una macchina e generare checksum su quella stessa macchina (e facoltativamente connettersi alla macchina master).

(6) Per i file in generale, la best practice per le repliche di checksum su reti non sicure è: tunnel rsync over ssh. a b c d e (Con "rsync" qui, intendo il protocollo rsync, usato internamente da molte utilità – l'utilità rsync, duplicità, rsyncrypto, rdiff-backup, dirvish, ecc.). Occasionalmente uso rsync --dryrun che fa solo il checksum per dirmi se il backup / slave è identico al master. Ma più spesso ho eseguito rsync senza l'opzione –rrrun. Senza questa opzione, se vengono rilevate eventuali differenze, rsync passa automaticamente per aggiornare il backup / lo slave.

Purtroppo, con database con elevata attività di scrittura, l'image del database sul disco (che è tutto ciò che rsync può vedere) è spesso in uno stato incoerente. Per consentire a rsync di produrre un utile backup / replica, abbiamo generalmente bisogno di abbassare brevemente il software del database su entrambe le estremità del collegamento per get il stream di tutti i dati in RAM su disco, eseguire l'aggiornamento rsync e riavviare il database Software. Di solito è molto veloce, perché di solito la grande maggioranza dei dati è invariata e rsync trasferisce solo alcune parti dei dati che sono stati effettivamente cambiati.

(Per quanto posso dirlo, l'unico vantaggio di utilità di database come "pt-table-sync" su rsync è che quelle utility di database apparentemente in qualche modo fanno la sincronizzazione in uno stato coerente senza spegnere mai il software di database ).

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.