<div id="docs-body">
 <div class="section">
  <div class="titlepage">
   <div>
    <div>
     <h2 class="title">
      <a name="faqs-replication">
      </a>
      A.14 MySQL 8.4 FAQ: Replication
     </h2>
    </div>
   </div>
  </div>
  <a class="indexterm" name="idm46045055045008">
  </a>
  <p>
   In the following section, we provide answers to questions that are
      most frequently asked about MySQL Replication.
  </p>
  <div class="qandaset">
   <a name="idm46045055043024">
   </a>
   <dl>
    <dt>
     A.14.1.
     <a href="faqs-replication.html#faq-replication-have-connected-replica">
      Must the replica be connected to the source all the time?
     </a>
    </dt>
    <dt>
     A.14.2.
     <a href="faqs-replication.html#faq-replication-have-enable-networking">
      Must I enable networking on my source and replica to enable
        replication?
     </a>
    </dt>
    <dt>
     A.14.3.
     <a href="faqs-replication.html#faq-replication-how-compare-replica-date">
      How do I know how late a replica is compared to the source? In
        other words, how do I know the date of the last statement
        replicated by the replica?
     </a>
    </dt>
    <dt>
     A.14.4.
     <a href="faqs-replication.html#faq-replication-how-block-updates">
      How do I force the source to block updates until the replica
        catches up?
     </a>
    </dt>
    <dt>
     A.14.5.
     <a href="faqs-replication.html#faq-replication-how-two-way-problems">
      What issues should I be aware of when setting up two-way
        replication?
     </a>
    </dt>
    <dt>
     A.14.6.
     <a href="faqs-replication.html#faq-replication-how-improves-performance">
      How can I use replication to improve performance of my system?
     </a>
    </dt>
    <dt>
     A.14.7.
     <a href="faqs-replication.html#faq-replication-how-prepare-for-replication">
      What should I do to prepare client code in my own applications
        to use performance-enhancing replication?
     </a>
    </dt>
    <dt>
     A.14.8.
     <a href="faqs-replication.html#faq-replication-how-benefits-me">
      When and how much can MySQL replication improve the performance
        of my system?
     </a>
    </dt>
    <dt>
     A.14.9.
     <a href="faqs-replication.html#faq-replication-how-high-availability">
      How can I use replication to provide redundancy or high
        availability?
     </a>
    </dt>
    <dt>
     A.14.10.
     <a href="faqs-replication.html#faq-replication-how-know-log-format">
      How do I tell whether a replication source server is using
        statement-based or row-based binary logging format?
     </a>
    </dt>
    <dt>
     A.14.11.
     <a href="faqs-replication.html#faq-replication-how-use-row-based">
      How do I tell a replica to use row-based replication?
     </a>
    </dt>
    <dt>
     A.14.12.
     <a href="faqs-replication.html#faq-replication-how-prevent-grant-revoke">
      How do I prevent GRANT and
        REVOKE statements from
        replicating to replica machines?
     </a>
    </dt>
    <dt>
     A.14.13.
     <a href="faqs-replication.html#faq-replication-can-mix-os">
      Does replication work on mixed operating systems (for example,
        the source runs on Linux while replicas run on macOS and
        Windows)?
     </a>
    </dt>
    <dt>
     A.14.14.
     <a href="faqs-replication.html#faq-replication-can-mix-arch">
      Does replication work on mixed hardware architectures (for
        example, the source runs on a 64-bit machine while replicas run
        on 32-bit machines)?
     </a>
    </dt>
   </dl>
   <table border="0" style="width: 100%;">
    <colgroup>
     <col align="left" width="1%"/>
     <col/>
    </colgroup>
    <tbody>
     <tr class="question">
      <td align="left" valign="top">
       <a name="faq-replication-have-connected-replica">
       </a>
       <a name="idm46045055042208">
       </a>
       <p>
        <b>
         A.14.1.
        </b>
       </p>
      </td>
      <td align="left" valign="top">
       <p>
        Must the replica be connected to the source all the time?
       </p>
      </td>
     </tr>
     <tr class="answer">
      <td align="left" valign="top">
      </td>
      <td align="left" valign="top">
       <p>
        No, it does not. The replica can go down or stay disconnected
        for hours or even days, and then reconnect and catch up on
        updates. For example, you can set up a source/replica
        relationship over a dial-up link where the link is up only
        sporadically and for short periods of time. The implication of
        this is that, at any given time, the replica is not guaranteed
        to be in synchrony with the source unless you take some special
        measures.
       </p>
       <p>
        To ensure that catchup can occur for a replica that has been
        disconnected, you must not remove binary log files from the
        source that contain information that has not yet been replicated
        to the replicas. Asynchronous replication can work only if the
        replica is able to continue reading the binary log from the
        point where it last read events.
       </p>
      </td>
     </tr>
     <tr class="question">
      <td align="left" valign="top">
       <a name="faq-replication-have-enable-networking">
       </a>
       <a name="idm46045055038928">
       </a>
       <p>
        <b>
         A.14.2.
        </b>
       </p>
      </td>
      <td align="left" valign="top">
       <p>
        Must I enable networking on my source and replica to enable
        replication?
       </p>
      </td>
     </tr>
     <tr class="answer">
      <td align="left" valign="top">
      </td>
      <td align="left" valign="top">
       <p>
        Yes, networking must be enabled on the source and replica. If
        networking is not enabled, the replica cannot connect to the
        source and transfer the binary log. Verify that the
        <a class="link" href="server-system-variables.html#sysvar_skip_networking">
         <code class="literal">
          skip_networking
         </code>
        </a>
        system variable
        has not been enabled in the configuration file for either
        server.
       </p>
      </td>
     </tr>
     <tr class="question">
      <td align="left" valign="top">
       <a name="faq-replication-how-compare-replica-date">
       </a>
       <a name="idm46045055035360">
       </a>
       <p>
        <b>
         A.14.3.
        </b>
       </p>
      </td>
      <td align="left" valign="top">
       <p>
        How do I know how late a replica is compared to the source? In
        other words, how do I know the date of the last statement
        replicated by the replica?
       </p>
      </td>
     </tr>
     <tr class="answer">
      <td align="left" valign="top">
      </td>
      <td align="left" valign="top">
       <p>
        Check the
        <code class="literal">
         Seconds_Behind_Master
        </code>
        column in the
        output from
        <a class="link" href="show-replica-status.html" title="15.7.7.35 SHOW REPLICA STATUS Statement">
         <code class="literal">
          SHOW
        REPLICA | SLAVE STATUS
         </code>
        </a>
        . See
        <a class="xref" href="replication-administration-status.html" title="19.1.7.1 Checking Replication Status">
         Section 19.1.7.1, “Checking Replication Status”
        </a>
        .
       </p>
       <p>
        When the replication SQL thread executes an event read from the
        source, it modifies its own time to the event timestamp. (This
        is why
        <a class="link" href="datetime.html" title="13.2.2 The DATE, DATETIME, and TIMESTAMP Types">
         <code class="literal">
          TIMESTAMP
         </code>
        </a>
        is well
        replicated.) In the
        <code class="literal">
         Time
        </code>
        column in the output
        of
        <a class="link" href="show-processlist.html" title="15.7.7.31 SHOW PROCESSLIST Statement">
         <code class="literal">
          SHOW PROCESSLIST
         </code>
        </a>
        , the number
        of seconds displayed for the replication SQL thread is the
        number of seconds between the timestamp of the last replicated
        event and the real time of the replica machine. You can use this
        to determine the date of the last replicated event. Note that if
        your replica has been disconnected from the source for one hour,
        and then reconnects, you may immediately see large
        <code class="literal">
         Time
        </code>
        values such as 3600 for the replication
        SQL thread in
        <a class="link" href="show-processlist.html" title="15.7.7.31 SHOW PROCESSLIST Statement">
         <code class="literal">
          SHOW PROCESSLIST
         </code>
        </a>
        .
        This is because the replica is executing statements that are one
        hour old. See
        <a class="xref" href="replication-threads.html" title="19.2.3 Replication Threads">
         Section 19.2.3, “Replication Threads”
        </a>
        .
       </p>
      </td>
     </tr>
     <tr class="question">
      <td align="left" valign="top">
       <a name="faq-replication-how-block-updates">
       </a>
       <a name="idm46045055023584">
       </a>
       <p>
        <b>
         A.14.4.
        </b>
       </p>
      </td>
      <td align="left" valign="top">
       <p>
        How do I force the source to block updates until the replica
        catches up?
       </p>
      </td>
     </tr>
     <tr class="answer">
      <td align="left" valign="top">
      </td>
      <td align="left" valign="top">
       <p>
        Use the following procedure:
       </p>
       <div class="orderedlist">
        <ol class="orderedlist" type="1">
         <li class="listitem">
          <p>
           On the source, execute these statements:
          </p>
          <div class="copytoclipboard-wrapper">
           <pre class="programlisting language-sql"><div class="docs-select-all right" id="sa14692673"><div class="copy-help left">Press ⌘+C to copy</div> <div class="right"><button class="clipboard-btn" title="Copy to Clipboard"><span class="icon-clipboard"></span></button></div></div><code class="language-sql"><span class="token prompt">mysql&gt;</span> <span class="token keyword">FLUSH</span> <span class="token keyword">TABLES</span> <span class="token keyword">WITH</span> <span class="token keyword">READ</span> <span class="token keyword">LOCK</span><span class="token punctuation">;</span>
<span class="token prompt">mysql&gt;</span> <span class="token keyword">SHOW</span> <span class="token keyword">MASTER</span> <span class="token keyword">STATUS</span><span class="token punctuation">;</span></code></pre>
          </div>
          <p>
           Record the replication coordinates (the current binary log
            file name and position) from the output of the
           <a class="link" href="show.html" title="15.7.7 SHOW Statements">
            <code class="literal">
             SHOW
            </code>
           </a>
           statement.
          </p>
         </li>
         <li class="listitem">
          <p>
           On the replica, issue the following statement, where the
            arguments to the
           <a class="link" href="replication-functions-synchronization.html#function_source-pos-wait">
            <code class="literal">
             SOURCE_POS_WAIT()
            </code>
           </a>
           or
           <a class="link" href="replication-functions-synchronization.html#function_master-pos-wait">
            <code class="literal">
             MASTER_POS_WAIT()
            </code>
           </a>
           function
            are the replication coordinate values obtained in the
            previous step:
          </p>
          <div class="copytoclipboard-wrapper">
           <pre class="programlisting language-sql"><div class="docs-select-all right" id="sa40706899"><div class="copy-help left">Press ⌘+C to copy</div> <div class="right"><button class="clipboard-btn" title="Copy to Clipboard"><span class="icon-clipboard"></span></button></div></div><code class="language-sql"><span class="token prompt">mysql&gt;</span> <span class="token keyword">SELECT</span> <span class="token function">MASTER_POS_WAIT</span><span class="token punctuation">(</span><span class="token string">'<em class="replaceable">log_name</em>'</span><span class="token punctuation">,</span> <em class="replaceable">log_pos</em><span class="token punctuation">)</span><span class="token punctuation">;</span>

<span class="token operator">Or</span> <span class="token keyword">from</span> MySQL <span class="token number">8.0</span><span class="token punctuation">.</span><span class="token number">26</span>:
<span class="token prompt">mysql&gt;</span> <span class="token keyword">SELECT</span> SOURCE_POS_WAIT<span class="token punctuation">(</span><span class="token string">'<em class="replaceable">log_name</em>'</span><span class="token punctuation">,</span> <em class="replaceable">log_pos</em><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre>
          </div>
          <p>
           The
           <a class="link" href="select.html" title="15.2.13 SELECT Statement">
            <code class="literal">
             SELECT
            </code>
           </a>
           statement blocks
            until the replica reaches the specified log file and
            position. At that point, the replica is in synchrony with
            the source and the statement returns.
          </p>
         </li>
         <li class="listitem">
          <p>
           On the source, issue the following statement to enable the
            source to begin processing updates again:
          </p>
          <div class="copytoclipboard-wrapper">
           <pre class="programlisting one-line language-sql"><div class="docs-select-all right" id="sa79255468"><div class="copy-help left">Press ⌘+C to copy</div> <div class="right"><button class="clipboard-btn" title="Copy to Clipboard"><span class="icon-clipboard"></span></button></div></div><code class="language-sql"><span class="token prompt">mysql&gt;</span> <span class="token keyword">UNLOCK</span> <span class="token keyword">TABLES</span><span class="token punctuation">;</span></code></pre>
          </div>
         </li>
        </ol>
       </div>
      </td>
     </tr>
     <tr class="question">
      <td align="left" valign="top">
       <a name="faq-replication-how-two-way-problems">
       </a>
       <a name="idm46045055003552">
       </a>
       <p>
        <b>
         A.14.5.
        </b>
       </p>
      </td>
      <td align="left" valign="top">
       <p>
        What issues should I be aware of when setting up two-way
        replication?
       </p>
      </td>
     </tr>
     <tr class="answer">
      <td align="left" valign="top">
      </td>
      <td align="left" valign="top">
       <p>
        MySQL replication currently does not support any locking
        protocol between source and replica to guarantee the atomicity
        of a distributed (cross-server) update. In other words, it is
        possible for client A to make an update to co-source 1, and in
        the meantime, before it propagates to co-source 2, client B
        could make an update to co-source 2 that makes the update of
        client A work differently than it did on co-source 1. Thus, when
        the update of client A makes it to co-source 2, it produces
        tables that are different from what you have on co-source 1,
        even after all the updates from co-source 2 have also
        propagated. This means that you should not chain two servers
        together in a two-way replication relationship unless you are
        sure that your updates can safely happen in any order, or unless
        you take care of mis-ordered updates somehow in the client code.
       </p>
       <p>
        You should also realize that two-way replication actually does
        not improve performance very much (if at all) as far as updates
        are concerned. Each server must do the same number of updates,
        just as you would have a single server do. The only difference
        is that there is a little less lock contention because the
        updates originating on another server are serialized in one
        replication thread. Even this benefit might be offset by network
        delays.
       </p>
      </td>
     </tr>
     <tr class="question">
      <td align="left" valign="top">
       <a name="faq-replication-how-improves-performance">
       </a>
       <a name="idm46045054999040">
       </a>
       <p>
        <b>
         A.14.6.
        </b>
       </p>
      </td>
      <td align="left" valign="top">
       <p>
        How can I use replication to improve performance of my system?
       </p>
      </td>
     </tr>
     <tr class="answer">
      <td align="left" valign="top">
      </td>
      <td align="left" valign="top">
       <p>
        Set up one server as the source and direct all writes to it.
        Then configure as many replicas as you have the budget and
        rackspace for, and distribute the reads among the source and the
        replicas. You can also start the replicas with the
        <a class="ulink" href="/doc/refman/8.0/en/innodb-parameters.html#option_mysqld_innodb" target="_top">
         <code class="option">
          --skip-innodb
         </code>
        </a>
        option, enable the
        <a class="link" href="server-system-variables.html#sysvar_low_priority_updates">
         <code class="literal">
          low_priority_updates
         </code>
        </a>
        system
        variable, and set the
        <a class="link" href="server-system-variables.html#sysvar_delay_key_write">
         <code class="literal">
          delay_key_write
         </code>
        </a>
        system variable
        to
        <code class="literal">
         ALL
        </code>
        to get speed improvements on the
        replica end. In this case, the replica uses nontransactional
        <code class="literal">
         MyISAM
        </code>
        tables instead of
        <code class="literal">
         InnoDB
        </code>
        tables to get more speed by
        eliminating transactional overhead.
       </p>
      </td>
     </tr>
     <tr class="question">
      <td align="left" valign="top">
       <a name="faq-replication-how-prepare-for-replication">
       </a>
       <a name="idm46045054990928">
       </a>
       <p>
        <b>
         A.14.7.
        </b>
       </p>
      </td>
      <td align="left" valign="top">
       <p>
        What should I do to prepare client code in my own applications
        to use performance-enhancing replication?
       </p>
      </td>
     </tr>
     <tr class="answer">
      <td align="left" valign="top">
      </td>
      <td align="left" valign="top">
       <p>
        See the guide to using replication as a scale-out solution,
        <a class="xref" href="replication-solutions-scaleout.html" title="19.4.5 Using Replication for Scale-Out">
         Section 19.4.5, “Using Replication for Scale-Out”
        </a>
        .
       </p>
      </td>
     </tr>
     <tr class="question">
      <td align="left" valign="top">
       <a name="faq-replication-how-benefits-me">
       </a>
       <a name="idm46045054988080">
       </a>
       <p>
        <b>
         A.14.8.
        </b>
       </p>
      </td>
      <td align="left" valign="top">
       <p>
        When and how much can MySQL replication improve the performance
        of my system?
       </p>
      </td>
     </tr>
     <tr class="answer">
      <td align="left" valign="top">
      </td>
      <td align="left" valign="top">
       <p>
        MySQL replication is most beneficial for a system that processes
        frequent reads and infrequent writes. In theory, by using a
        single-source/multiple-replica setup, you can scale the system
        by adding more replicas until you either run out of network
        bandwidth, or your update load grows to the point that the
        source cannot handle it.
       </p>
       <p>
        To determine how many replicas you can use before the added
        benefits begin to level out, and how much you can improve
        performance of your site, you must know your query patterns, and
        determine empirically by benchmarking the relationship between
        the throughput for reads and writes on a typical source and a
        typical replica. The example here shows a rather simplified
        calculation of what you can get with replication for a
        hypothetical system. Let
        <code class="literal">
         reads
        </code>
        and
        <code class="literal">
         writes
        </code>
        denote the number of reads and writes
        per second, respectively.
       </p>
       <p>
        Let's say that system load consists of 10% writes and 90% reads,
        and we have determined by benchmarking that
        <code class="literal">
         reads
        </code>
        is 1200 - 2 *
        <code class="literal">
         writes
        </code>
        . In other words, the system can do
        1,200 reads per second with no writes, the average write is
        twice as slow as the average read, and the relationship is
        linear. Suppose that the source and each replica have the same
        capacity, and that we have one source and
        <em class="replaceable">
         <code>
          N
         </code>
        </em>
        replicas. Then we have for each
        server (source or replica):
       </p>
       <p>
        <code class="literal">
         reads
        </code>
        = 1200 - 2 *
        <code class="literal">
         writes
        </code>
       </p>
       <p>
        <code class="literal">
         reads
        </code>
        = 9 *
        <code class="literal">
         writes
        </code>
        /
        (
        <em class="replaceable">
         <code>
          N
         </code>
        </em>
        + 1) (reads are split, but writes
        replicated to all replicas)
       </p>
       <p>
        9 *
        <code class="literal">
         writes
        </code>
        / (
        <em class="replaceable">
         <code>
          N
         </code>
        </em>
        +
        1) + 2 *
        <code class="literal">
         writes
        </code>
        = 1200
       </p>
       <p>
        <code class="literal">
         writes
        </code>
        = 1200 / (2 +
        9/(
        <em class="replaceable">
         <code>
          N
         </code>
        </em>
        + 1))
       </p>
       <p>
        The last equation indicates the maximum number of writes for
        <em class="replaceable">
         <code>
          N
         </code>
        </em>
        replicas, given a maximum possible
        read rate of 1,200 per second and a ratio of nine reads per
        write.
       </p>
       <p>
        This analysis yields the following conclusions:
       </p>
       <div class="itemizedlist">
        <ul class="itemizedlist" style="list-style-type: disc; ">
         <li class="listitem">
          <p>
           If
           <em class="replaceable">
            <code>
             N
            </code>
           </em>
           = 0 (which means we have no
            replication), our system can handle about 1200/11 = 109
            writes per second.
          </p>
         </li>
         <li class="listitem">
          <p>
           If
           <em class="replaceable">
            <code>
             N
            </code>
           </em>
           = 1, we get up to 184 writes
            per second.
          </p>
         </li>
         <li class="listitem">
          <p>
           If
           <em class="replaceable">
            <code>
             N
            </code>
           </em>
           = 8, we get up to 400 writes
            per second.
          </p>
         </li>
         <li class="listitem">
          <p>
           If
           <em class="replaceable">
            <code>
             N
            </code>
           </em>
           = 17, we get up to 480
            writes per second.
          </p>
         </li>
         <li class="listitem">
          <p>
           Eventually, as
           <em class="replaceable">
            <code>
             N
            </code>
           </em>
           approaches
            infinity (and our budget negative infinity), we can get very
            close to 600 writes per second, increasing system throughput
            about 5.5 times. However, with only eight servers, we
            increase it nearly four times.
          </p>
         </li>
        </ul>
       </div>
       <p>
        These computations assume infinite network bandwidth and neglect
        several other factors that could be significant on your system.
        In many cases, you may not be able to perform a computation
        similar to the one just shown that accurately predicts what
        happens on your system if you add
        <em class="replaceable">
         <code>
          N
         </code>
        </em>
        replicas. However, answering the following questions should help
        you decide whether and by how much replication may improve the
        performance of your system:
       </p>
       <div class="itemizedlist">
        <ul class="itemizedlist" style="list-style-type: disc; ">
         <li class="listitem">
          <p>
           What is the read/write ratio on your system?
          </p>
         </li>
         <li class="listitem">
          <p>
           How much more write load can one server handle if you reduce
            the reads?
          </p>
         </li>
         <li class="listitem">
          <p>
           For how many replicas do you have bandwidth available on
            your network?
          </p>
         </li>
        </ul>
       </div>
      </td>
     </tr>
     <tr class="question">
      <td align="left" valign="top">
       <a name="faq-replication-how-high-availability">
       </a>
       <a name="idm46045054959776">
       </a>
       <p>
        <b>
         A.14.9.
        </b>
       </p>
      </td>
      <td align="left" valign="top">
       <p>
        How can I use replication to provide redundancy or high
        availability?
       </p>
      </td>
     </tr>
     <tr class="answer">
      <td align="left" valign="top">
      </td>
      <td align="left" valign="top">
       <p>
        How you implement redundancy is entirely dependent on your
        application and circumstances. High-availability solutions (with
        automatic failover) require active monitoring and either custom
        scripts or third party tools to provide the failover support
        from the original MySQL server to the replica.
       </p>
       <p>
        To handle the process manually, you should be able to switch
        from a failed source to a pre-configured replica by altering
        your application to talk to the new server or by adjusting the
        DNS for the MySQL server from the failed server to the new
        server.
       </p>
       <p>
        For more information and some example solutions, see
        <a class="xref" href="replication-solutions-switch.html" title="19.4.8 Switching Sources During Failover">
         Section 19.4.8, “Switching Sources During Failover”
        </a>
        .
       </p>
      </td>
     </tr>
     <tr class="question">
      <td align="left" valign="top">
       <a name="faq-replication-how-know-log-format">
       </a>
       <a name="idm46045054955520">
       </a>
       <p>
        <b>
         A.14.10.
        </b>
       </p>
      </td>
      <td align="left" valign="top">
       <p>
        How do I tell whether a replication source server is using
        statement-based or row-based binary logging format?
       </p>
      </td>
     </tr>
     <tr class="answer">
      <td align="left" valign="top">
      </td>
      <td align="left" valign="top">
       <p>
        Check the value of the
        <a class="link" href="replication-options-binary-log.html#sysvar_binlog_format">
         <code class="literal">
          binlog_format
         </code>
        </a>
        system variable:
       </p>
       <div class="copytoclipboard-wrapper">
        <pre class="programlisting one-line language-sql"><div class="docs-select-all right" id="sa66007210"><div class="copy-help left">Press ⌘+C to copy</div> <div class="right"><button class="clipboard-btn" title="Copy to Clipboard"><span class="icon-clipboard"></span></button></div></div><code class="language-sql"><span class="token prompt">mysql&gt;</span> <span class="token keyword">SHOW</span> <span class="token keyword">VARIABLES</span> <span class="token operator">LIKE</span> <span class="token string">'binlog_format'</span><span class="token punctuation">;</span></code></pre>
       </div>
       <p>
        The value shown is always one of
        <code class="literal">
         STATEMENT
        </code>
        ,
        <code class="literal">
         ROW
        </code>
        , or
        <code class="literal">
         MIXED
        </code>
        . For
        <code class="literal">
         MIXED
        </code>
        mode, statement-based logging is used
        by default but replication switches automatically to row-based
        logging under certain conditions, such as unsafe statements. For
        information about when this may occur, see
        <a class="xref" href="binary-log-mixed.html" title="7.4.4.3 Mixed Binary Logging Format">
         Section 7.4.4.3, “Mixed Binary Logging Format”
        </a>
        .
       </p>
      </td>
     </tr>
     <tr class="question">
      <td align="left" valign="top">
       <a name="faq-replication-how-use-row-based">
       </a>
       <a name="idm46045054946384">
       </a>
       <p>
        <b>
         A.14.11.
        </b>
       </p>
      </td>
      <td align="left" valign="top">
       <p>
        How do I tell a replica to use row-based replication?
       </p>
      </td>
     </tr>
     <tr class="answer">
      <td align="left" valign="top">
      </td>
      <td align="left" valign="top">
       <p>
        Replicas automatically know which format to use.
       </p>
      </td>
     </tr>
     <tr class="question">
      <td align="left" valign="top">
       <a name="faq-replication-how-prevent-grant-revoke">
       </a>
       <a name="idm46045054944256">
       </a>
       <p>
        <b>
         A.14.12.
        </b>
       </p>
      </td>
      <td align="left" valign="top">
       <p>
        How do I prevent
        <a class="link" href="grant.html" title="15.7.1.6 GRANT Statement">
         <code class="literal">
          GRANT
         </code>
        </a>
        and
        <a class="link" href="revoke.html" title="15.7.1.8 REVOKE Statement">
         <code class="literal">
          REVOKE
         </code>
        </a>
        statements from
        replicating to replica machines?
       </p>
      </td>
     </tr>
     <tr class="answer">
      <td align="left" valign="top">
      </td>
      <td align="left" valign="top">
       <p>
        Start the server with the
        <a class="link" href="replication-options-replica.html#option_mysqld_replicate-wild-ignore-table">
         <code class="option">
          --replicate-wild-ignore-table=mysql.%
         </code>
        </a>
        option to ignore replication for tables in the
        <code class="literal">
         mysql
        </code>
        database.
       </p>
      </td>
     </tr>
     <tr class="question">
      <td align="left" valign="top">
       <a name="faq-replication-can-mix-os">
       </a>
       <a name="idm46045054937984">
       </a>
       <p>
        <b>
         A.14.13.
        </b>
       </p>
      </td>
      <td align="left" valign="top">
       <p>
        Does replication work on mixed operating systems (for example,
        the source runs on Linux while replicas run on macOS and
        Windows)?
       </p>
      </td>
     </tr>
     <tr class="answer">
      <td align="left" valign="top">
      </td>
      <td align="left" valign="top">
       <p>
        Yes.
       </p>
      </td>
     </tr>
     <tr class="question">
      <td align="left" valign="top">
       <a name="faq-replication-can-mix-arch">
       </a>
       <a name="idm46045054935856">
       </a>
       <p>
        <b>
         A.14.14.
        </b>
       </p>
      </td>
      <td align="left" valign="top">
       <p>
        Does replication work on mixed hardware architectures (for
        example, the source runs on a 64-bit machine while replicas run
        on 32-bit machines)?
       </p>
      </td>
     </tr>
     <tr class="answer">
      <td align="left" valign="top">
      </td>
      <td align="left" valign="top">
       <p>
        Yes.
       </p>
      </td>
     </tr>
    </tbody>
   </table>
  </div>
 </div>
 <br/>
</div>
