<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 數據庫主從同步配置 > 備注: 1、經測試,不同版本的數據也可以執行主從同步(筆者主數據庫:5.6;從數據庫:8.0) 2、主數據庫需要開啟外網訪問權限 3、主從服務器的配置文件中的:server-id 一定不能相同 ## 1、master主服務器的配置 ### 1.1、配置文件數據庫my.cnf的修改 ~~~ [root@localhost mysql]# vim /etc/my.cnf #在[mysqld]中添加: server-id=1 log_bin=master-bin log_bin_index=master-bin.index binlog_do_db=test #備注: #server-id 服務器唯一標識。 #log_bin 啟動MySQL二進制日志,即數據同步語句,從數據庫會一條一條的執行這些語句。 #binlog_do_db 指定記錄二進制日志的數據庫,即需要復制的數據庫名,如果復制多個數據庫,重復設置這個選項即可。 #binlog_ignore_db 指定不記錄二進制日志的數據庫,即不需要復制的數據庫名,如果有多個數據庫,重復設置這個選項即可。 #其中需要注意的是,binlog_do_db和binlog_ignore_db為互斥選項,一般只需要一個即可。 ~~~ ### 1.2、給主數據庫增加復制的權限 ##### 如果權限里有 REPLICATION,無需理會,直接跳過此步即可。 首先登陸數據庫(超級管理權限) ~~~ mysql -uroot -p; #輸入密碼并進入數據庫 ~~~ 查詢復制用戶的權限(repl為數據庫用戶名): ~~~ mysql> show grants for 'repl'@'%'; +----------------------------------------------+ | Grants for repl@% | +----------------------------------------------+ | GRANT USAGE SLAVE ON *.* TO 'repl'@'%' | +----------------------------------------------+ ~~~ 明顯權限不對,修改權限如下: ~~~ mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' identified by '自己用戶的密碼'; mysql> show grants for 'repl'@'%'; +----------------------------------------------+ | Grants for repl@% | +----------------------------------------------+ | GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' | +----------------------------------------------+ ~~~ 當權限顯示為**REPLICATION**是方才正確。 ### 1.3、最后重啟主mysql后 再次超管權限進入mysql,并執行代碼,查詢數據庫狀態: ~~~ mysql> show master status +------------------+----------+----------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+----------------+------------------+-------------------+ | mysql-bin.000007 | 328 | test_amind | | | +------------------+----------+----------------+------------------+-------------------+ 1 row in set (0.01 sec) ~~~ 上面代碼中: 上圖顯示的File 對應的 **mysql-bin.000007** 跟Position對應的 **328** 就是從服務器需要用到的, ## 2、slave從服務器的配置 ### 2.1、配置文件my.cnf的修改 ~~~ [root@localhost mysql]# vim /etc/my.cnf #在[mysqld]中添加: server-id=2 relay-log=slave-relay-bin relay-log-index=slave-relay-bin.index #replicate-do-db=test #需要同步的表 replicate-wild-do-table = table.cmf_user replicate-wild-do-table = table.cmf_admin #備注: #server-id 服務器唯一標識,如果有多個從服務器,每個服務器的server-id不能重復,跟IP一樣是唯一標識,如果你沒設置server-id或者設置為0,則從服務器不會連接到主服務器。 #relay-log 啟動MySQL二進制日志,可以用來做數據備份和崩潰恢復,或主服務器掛掉了,將此從服務器作為其他從服務器的主服務器。 #replicate-do-db 指定同步的數據庫,如果復制多個數據庫,重復設置這個選項即可。若在master端不指定binlog-do-db,則在slave端可用replication-do-db來過濾。 #replicate-ignore-db 不需要同步的數據庫,如果有多個數據庫,重復設置這個選項即可。 #其中需要注意的是,replicate-do-db和replicate-ignore-db為互斥選項,一般只需要一個即可。 ~~~ ### 2.2、重啟mysql服務 ~~~ [root@localhost mysql]# service mysql restart Shutting down MySQL.... SUCCESS! Starting MySQL. SUCCESS! ~~~ ### 2.3、連接master主服務器(數據庫root超管權限) ~~~ #進入mysql數據庫 [root@localhost mysql]# mysql -uroot -p Enter password: #連接master主服務器 mysql> change master to master_host='192.168.17.130',master_port=3306,master_user='masterbackup',master_password='123456',master_log_file='master-bin.000001',master_log_pos=154; #備注: #master_host對應主服務器的IP地址。 #master_port對應主服務器的端口。 #master_log_file對應show master status顯示的File列:mysql-bin.000007。 #master_log_pos對應show master status顯示的Position列:328。 ~~~ ### 2.4啟動slave數據同步 ~~~ #啟動slave數據同步 mysql> start slave; #停止slave數據同步(若有需要) mysql> stop slave; ~~~ ### 2.5 查看slave信息 ~~~ mysql> show slave status\G; ~~~ ![](https://img2018.cnblogs.com/common/1212417/201911/1212417-20191127192317762-233252557.png) Slave_IO_Running和Slave_SQL_Running都為yes,則表示同步成功。 ## 3、 解決錯誤 若在主從同步的過程中,出現其中一條語句同步失敗報錯了,則后面的語句也肯定不能同步成功了。例如,主庫有一條數據,而從庫并沒有這一條數據,然而,在主庫執行了刪除這一條數據的操作,那么從庫沒有這么一條數據就肯定刪除不了,從而報錯了。在此時的從數據庫的數據同步就失敗了,因此后面的同步語句就無法繼續執行。 這里提供的解決方法有兩種: (1)在從數據庫中,使用SET全局sql_slave_skip_counter來跳過事件,跳過這一個錯誤,然后執行從下一個事件組開始。 ~~~ #在從數據庫上操作 mysql > stop slave; mysql > set global sql_slave_skip_counter=1; mysql > start slave; ~~~ (2)在從數據庫中,重新連上主數據庫。這種操作會直接跳過中間的那些同步語句,可能會導致一些數據未同步過去的問題,但這種操作也是最后的絕招。最好就是令從數據庫與主數據庫的數據結構和數據都一致了之后,再來恢復主從同步的操作。 ~~~ #在從數據庫上操作 mysql > stop slave; mysql> change master to master_host='192.168.17.130',master_port=3306,master_user='masterbackup',master_password='123456',master_log_file='master-bin.000001',master_log_pos=2050; mysql > start slave; #備注 #master_log_file和master_log_pos可能會不同,需要在主數據庫中show master status來查看 ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看