Quale formato binlog da utilizzare per MySQL Replication?

Sta per iniziare a utilizzare la replica di MySQL e mi chiedo quale tipo di formato binlog è il migliore da usare? C'è row, dichiarazione e misto.

Io sto per usare 5.1.49.

  • Molti processi NULL in MySQL
  • Come posso ripristinare una singola colonna di una singola tabella MySQL?
  • Redirect output di mysqldump a scp
  • Imansible avviare / interrompere il servizio mysql
  • Problemi di connessione di MySQLWorkbench
  • MySQL ha perso l'errore di connessione su mysqldump
  • La row sta vincendo al momento ma mi chiedo perché dovrei usare misti invece di row.

    Grazie molto,

    Delenda

    One Solution collect form web for “Quale formato binlog da utilizzare per MySQL Replication?”

    La replica basata su dichiarazioni è la più veloce e più compatta, ma in alcune circostanze può produrre risultati diversi (non deterministici) sugli schiavi che sul master, con conseguente incoerenza. Un esempio potrebbe essere:

    UPDATE mytable SET a = a + 1 LIMIT 1; 

    Non c'è modo di garantire che la row verrà aggiornata in quanto non vi è alcun ordine di ordinazione su di esso e l'ordine sul disco non è prevedibile o coerente.

    La replica basata su row evita questo problema replicando i dati modificati piuttosto che le query, ma mentre un'istruzione come:

     UPDATE mytable SET a = a + 1; 

    richiede la replica di pochi byte per la replica basata su istruzioni, indipendentemente da quante righe interessa: se aggiorna 1 milione di righe, la replica a row replica tutti i 1 milione di righe, che saranno molto più lenti e creano registri binari molto più grandi.

    La modalità mista cambia tra i due, utilizzando ciò che è più efficiente o sicuro (ad esempio, i semplici inserimenti sono probabilmente meglio eseguiti da una replica basata su row – usando le istruzioni possono essere più lenti). L'opportunità per i problemi è quella di riconoscere quali dichiarazioni non sono deterministiche, che è un problema non banale.

    In sintesi:

    • Row-based: sempre sicuro, probabilmente molto lento e inefficiente nel tempo e nello spazio
    • Dichiarazione: non sempre sicura, ma può essere molto più veloce
    • Mixed-mode: il migliore dei due mondi in teoria, ma potrebbe forse sbagliare, con conseguente prestazione lenta o dati sbagliati a seconda di quale modo si sbagli!

    Documenti ufficiali sono qui .

    Questa è anche una vecchia domanda: dovresti utilizzare MySQL 5.5 per tutte le nuove build ora. Preferisco le costruzioni di Percona.

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