<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      MySQL 主從配置

      MySQL 主從配置

      為什么要做主從復制

      1. 在業務復雜的系統中,有這么一個情景,有一句sql語句需要鎖表,導致暫時不能使用讀的服務,那么就很影響運行中的業務。使用主從復制,讓主庫負責寫,從庫負責讀,這樣,即使主庫出現了鎖表的情景,通過讀從庫也可以保證業務的正常運作

      2. 做數據的熱備

      3. 架構的擴展,業務量越來越大,I/o訪問頻率過高,單機無法滿足,此時做多庫的存儲,降低磁盤I/O訪問的頻率,提高單個機器的I/O性能

      mysql主從復制的原理是什么?

      1. binlog:binlog log ,主庫中保存所有更新事件日志的二進制文件

      2. 主從復制的基礎是主庫記錄數據庫的所有變更記錄到binlog,binlog是數據庫服務器啟動的那一刻起,保存所有修改數據庫結構或內容的一個文件

      3. mysql 主從復制是一個異步的復制過程,主庫發送更新事件到從庫,從庫讀取更新記錄,并執行更新記錄,使得從庫的內容與主庫保存一致

      4. 在主庫里,只要有更新事件出現,就會被依次的寫入到binlog里面,之后推到從庫中作為從庫進行復制的數據源

      binlog輸出線程

      1. 每當有從庫連接到主庫的時候。主庫都會創建一個線程然后發送binlog內容到從庫,對于每一個即將發送給從庫的sql事件,binlog輸出線程會將其鎖住,一旦該事件被線程讀取完之后。該鎖會被釋放,即使在該事件完全發送到從庫的時候,該鎖也會被釋放

      2. 在從庫里,當復制開始的時候,從庫就會創建兩個線程進行處理


      從庫I/O線程

      1. 當START SLAVE 語句在從庫開始執行之后,從庫創建一個I/O線程,該線程連接到主庫并請求主庫發送;binlog里面的更新記錄到從庫上。從庫I/O線程讀取主庫的binlog輸出線程發送的更新并拷貝這些更新到本地文件,其中包括relay log 文件

      從庫的SQL線程

      1. 從庫創建一個SQL線程,這個線程讀取從庫I/O線程寫到relay log 的更新事件并執行,可以知道,對于每一個主從復制的連接,都有三個線程。擁有多個從庫的主庫為每一個連接到主庫的從庫創建一個binlog輸出線程,每一個從庫都有他自己的I/O線程和SQL線程

      2. 從庫通過創建兩個獨立的線程,使得在進行復制時,從庫的讀和寫進行了分離,因此,即使負責執行的線程運行較慢,負責讀取更新語句的線程并不會因此變得緩慢,比如說,如果從庫有一段時間沒運行了,當他在啟動的時候,盡管他的SQL線程執行比較緩慢。它的I/O線程可以快速的從主庫讀取所有的binlog內容,這樣一來,即使從庫在SQL線程執行完所有讀取到的語句前停止運行了,I/O線程也至少完全讀取了所有的內容,并將安全的備份在從主庫本地的relay log 隨時準備在從庫下一次啟動的時候執行語句


      整個主從復制的流程可以通過以下圖示理解:

       

       

       

      1. 主庫db的更新事件(update,insert,delete)被寫道bilog

      2. 從庫發起連接,連接到主庫

      3. 此時主庫創建一個binlog dump thread 把binlog的內容發送到從庫

      4. 從庫啟動之后,創建一個I/O線程,讀取主庫傳過來的binlog內容并寫入到relay log

      5. 還會創建一個SQL線程,從relay log 里面讀取內容,從 Rxec_Master_Log_Pos位置開始執行讀取到的更新事件,將更新內容寫入到slave的db

      注:上面的解釋是解釋每一步做了什么,整個mysql主從復制是異步的,不是按照上面的步驟執行的

       

      Django 主從設置

      配置Django實現數據庫讀寫分離

      1. django 在進行數據庫操作的時候,讀取數據與寫數據(增、刪、改)可以分別從不同的數據庫進行操作


      在配置文件中增加slave數據庫的配置

       

       

      創建數據庫操作的路由分發類
      1. 在syl/utils中創建db_router.py

       

       

      配置讀寫分離路由
      1. 在配置文件中增加

          DATABASE_ROUTERS=["meiduo_mall.utils.db_router.MasterSlaveDBRouter"]

       

       

       

      MySQL - 基于Docker 的主從復制

      搭建環境

      ubuntu 18.04 64位

       

      MySQL 5.7.31

       

      Docker 版本如下圖

       

       

       

      主從同步盡量保證多臺MySQL的版本相同或相近

      1. 拉取mysql 鏡像

        1.   docker pull mysql:5.7.31

          2. 基于下載的鏡像啟動兩個容器,默認啟動的用戶名是 root

            啟動第一個
              docker run -p 3307:3306 --name mastermysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.31

            啟動第二個,兩個mysql的端口不要一樣
              docker run -p 3308:3306 --name secondmysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.31

        配置主動

        1. 配置主庫

          1. 進入第一個mysql容器

          2. docker exec -it mastermysql /bin/bash

            # 進入容器后安裝vim編輯器,這是為了修改配置文件安裝編輯器

            apt-get update
            apt-get install vim

            # 連接mysql數據庫, 并輸入密碼
            mysql -u root -h localhost -p

            # 創建一個叫backup的用戶,并且不顯示來源地址
            CREATE USER 'backup'@'%' IDENTIFIED BY '123456';

            # 授權找個用戶具有復制同步權限
            GRANT REPLICATION SLAVE ON *.* TO 'backup'@'%';

            # 刷新權限,一定要刷新權限
            flush privileges;

            # 執行如下語句驗證是否授權成功,如果沒問題得到下圖所示
            show grants for 'backup'@'%';

            2. 修改第一個mysql容器的配置文件

                

                切換到配置文件目錄
                  cd /etc/mysql/mysql.conf.d/

                修改并編輯mysql.cnf
                  vim mysql.cnf

                修改或添加如下,并保存
                  [mysqld]
                  log-bin=mysql-bin #開啟二進制日志
                  server-id=1 #設置server-id,不要和slave重復

                記得重啟容器
                  docker restart mastermysql

        1. 配從容器

        1.   進入從容器并修改配置文件

        2. docker exec -it secondmysql /bin/bash

          進入容器后安裝vim編輯器,這是為了修改配置文件安裝編輯器
          apt-get update
          apt-get install vim

          切換到配置文件目錄
          cd /etc/mysql/mysql.conf.d/

          修改并編輯mysql.cnf
          vim mysql.cnf

          修改或添加如下,并保存
          [mysqld]
          server-id=2 #設置server-id,必須唯一,不能和其他重復

          修改完成以后記得重啟我們的容器
          docker restart secondmysq

        2. 設置同步主并啟動同步線程

            設置如何同步主
              mysql> CHANGE MASTER TO 
              -> MASTER_HOST='192.168.106.131', 
              -> MASTER_USER='backup', 
              -> MASTER_PASSWORD='123456',
              -> MASTER_PORT=3307;
            啟動同步線程
              mysql>start slave;

        3. 查看同步狀態

              mysql> show slave status\G;

            下圖 slave_IO_Running 和 Slave_SQL_Running 都為YES說明配置成功

            Slave_IO_State: 可以作為參考說明

       

       

       

       

       

       

      posted @ 2020-09-20 15:52  宋小凱  閱讀(361)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 五月丁香综合缴情六月小说| 一区二区三区激情都市| 熟女人妻视频| 嫩草成人AV影院在线观看 | 日本一区二区三区黄色网| 人妻中文字幕不卡精品| 蜜桃视频一区二区三区四| 欧美巨大极度另类| 亚洲国产成人资源在线| 一区二区三区放荡人妻| 国产永久免费高清在线| 国内免费视频成人精品| 国产精品黑色丝袜在线观看 | 国产一区二区三区我不卡| 欧美一区内射最近更新| 在线看国产精品自拍内射| 国产成人精彩在线视频| 女人与牲口性恔配视频免费| 国内自产少妇自拍区免费| 狼人大伊人久久一区二区| 亚洲最大福利视频网| 午夜福利看片在线观看| 国产亚洲精品第一综合麻豆| 国产精品高清视亚洲中文| 亚洲自拍偷拍中文字幕色| 亚洲欧洲日产国码久在线| 亚洲人成网站在线观看播放不卡| 综合久久av一区二区三区| 99精品久久毛片a片| 91精品人妻中文字幕色| 日韩人妻无码一区二区三区99 | 亚洲欧美一区二区三区图片| 国产成人综合色就色综合| 91麻豆精品国产91久| 国产精品女人毛片在线看| 激情的视频一区二区三区| 亚洲国产天堂久久综合网| 久久99热只有频精品8| 国产精品成人国产乱| 日本夜爽爽一区二区三区| 四虎成人在线观看免费|