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.

  • Consentire a qualsiasi ip di connettersi a Amazon Web Services RDS utilizzando MySQL
  • Valore massimo di max_connections in micro istanza AWS RDS
  • Le tabelle di InnoDB sono bloccate durante mysqldump quando sono state mescolate con MyISAM?
  • Accesso al server MySQL tramite VirtualBox
  • Alternativa Open Source ai servizi di replica di file Microsoft
  • MySQL where è il path my.cnf?
  • 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.