MYSQL增加從函式庫的方法是什麼

PHPz
發布: 2023-05-27 17:43:25
轉載
1766 人瀏覽過

    一、MySQL主從複製

    #常見的主從架構:

    • 一主一從:一個Master,一個Slave

    • 一主多從:一個Master,多個Slave

    具體,參考下圖:

    MYSQL增加從函式庫的方法是什麼

    MYSQL增加從函式庫的方法是什麼

    實作細節

    MySQL 在主從同步時,其底層實作細節又是什麼?為此後分析主從延遲原因以及最佳化方案,做好理論準備。

    MYSQL增加從函式庫的方法是什麼

    總結來說,MySQL 的主從複製:非同步單一執行緒。

    • Master上1 個IO執行緒,負責傳送 binary logbinlog

    • #bin #)Slave上2 個執行緒:

      IO 執行緒
      • 執行SQL的執行緒
      • ,其中:

      • IO執行緒

        :將取得的日誌訊息,追加到relay log上;

      • ##執行SQL的執行緒
      :偵測到relay log中內容有更新,則在Slave上執行sql;

    特別說明:MySQL 5.6.3 開始支持「多執行緒主從複製」,一個資料庫#一個執行緒多個資料庫

    多個線程

    完整的Master & Slave 之間主從複製過程:MYSQL增加從函式庫的方法是什麼

    二、增加一個slave

    需求:目前我的master上有一個資料庫ucenter,需要增加一台slave(目前有一台slave)

      分析:
    • 我這裡有一個前一天的4:00的資料庫備份。

    • 有一個已存在的ucenter的slave

    #重點是尋找binlog的時間點

    操作:

    1、在slave機器上配置slave信息,修改mysql.cfg配置並重啟slave資料庫

    在[mysqld]中新增

    replicate-do-db = ucenter     #同步的数据库名字
    slave-skip-errors=all         #同步是忽略错误
    server-id       = 1112        #和master与其他slave保持不通
    登入後複製

    2、尋找資料庫前一天的備份,將其copy到新增的slave機器上,並導引庫

    [root@ucenter_slave /data]# mysql ucenter < ucenter_20171102.sql[root@ucenter_slave /data]# du -sh ucenter_20171102.sql 24G    ucenter_20171102.sql
    登入後複製

    3、定位binlog時間戳記(重點)

    在master上查找binlog

    [root@Ucenter /data/mysqldata]# ll -t *bin*
    -rw-rw---- 1 mysql mysql   30709744 Nov  2 21:32 mysql-bin.000268
    -rw-rw---- 1 mysql mysql        171 Nov  2 19:41 mysql-bin.index
    -rw-rw---- 1 mysql mysql 1021101094 Nov  2 19:41 mysql-bin.000267
    -rw-rw---- 1 mysql mysql 1073742415 Oct 30 06:07 mysql-bin.000266
    -rw-rw---- 1 mysql mysql 1073742062 Oct 26 12:03 mysql-bin.000265
    -rw-rw---- 1 mysql mysql 1073742636 Oct 22 19:21 mysql-bin.000264
    -rw-rw---- 1 mysql mysql 1073741961 Oct 18 22:49 mysql-bin.000263
    -rw-rw---- 1 mysql mysql 1073742141 Oct 15 12:47 mysql-bin.000262
    -rw-rw---- 1 mysql mysql 1073742284 Oct 11 10:18 mysql-bin.000261
    -rw-rw---- 1 mysql mysql 1073742184 Oct  7 09:49 mysql-bin.000260
    登入後複製

    我的備份時間是2號4點開始,所以應該在mysql-bin.000267裡找2編號4點前的pos,開始定位

    [root@Ucenter /data/mysqldata]# /usr/local/mysql/bin/mysqlbinlog mysql-bin.000267 |grep &#39;3:59:&#39; |grep -v &#39;13:59:&#39;
    #171102 3:59:58 server id 21323 end_log_pos 824385760 Query thread_id=3023086382 exec_time=0 error_code=0
    #171102 3:59:58 server id 21323 end_log_pos 824386335 Query    thread_id=3023086386    exec_time=0    error_code=0
    #171102 3:59:58 server id 21323 end_log_pos 824386363 Intvar
    #171102 3:59:58 server id 21323 end_log_pos 824386698 Query    thread_id=3023086386    exec_time=0    error_code=0
    #171102 3:59:58 server id 21323 end_log_pos 824387706 Query    thread_id=3023086388    exec_time=0    error_code=0
    #171102 3:59:58 server id 21323 end_log_pos 824387734 Intvar
    #171102 3:59:58 server id 21323 end_log_pos 824388209 Query    thread_id=3023086388    exec_time=0    error_code=0
    #171102 3:59:58 server id 21323 end_log_pos 824388534 Query    thread_id=3023086398    exec_time=0    error_code=0
    登入後複製
    所以定位到最後 end_log_pos 824388534

    4、在另一台slave上查看master.info

    [root@LeduPass02/data/mysqldata]# cat master.info 
    15
    mysql-bin.000268
    11367810
    192.168.100.70
    omsync
    om@123
    3306
    60
    0
    
    0
    0
    登入後複製

    5、在slave 配置slave,進行同步

    在Slave上配置相關設置,以便告訴Slave如何去連接Master,這包括主機地址,登陸憑證等等

    [root@ucenter_slave /data]# mysql
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 6
    Server version: 5.1.51-Community-Server-log Source
    
    Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
    This software comes with ABSOLUTELY NO WARRANTY. This is free software,
    and you are welcome to modify and redistribute it under the GPL v2 license
    
    Type &#39;help;&#39; or &#39;\h&#39; for help. Type &#39;\c&#39; to clear the current input statement.
    
    mysql (none)>change master to master_host=&#39;192.168.100.70&#39;,master_port=3306,master_user=&#39;omsync&#39;,master_password=&#39;om@123&#39;,master_log_file=&#39;mysql-bin.000267&#39;,master_log_pos=824388534;
    登入後複製

    開啟slave

    mysql (none)>start slave;
    登入後複製

    檢視slave狀態:MYSQL增加從函式庫的方法是什麼

    #########

    以上是MYSQL增加從函式庫的方法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    相關標籤:
    來源:yisu.com
    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板