乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Docker Mysql數(shù)據(jù)庫主從同步配置詳細(xì)

       測(cè)試開發(fā)技術(shù) 2022-06-18 發(fā)布于廣東

      一. 說之前

      前兩天 MTSC 2018 在北京國際會(huì)議中心圓滿召開,并取得非常好的反響,雖然臨時(shí)有事,沒去成,但還是非常贊許為此會(huì)議付出的朋友和小伙伴們~

      二.  背景

      最近在公司做內(nèi)部平臺(tái)架構(gòu)上的調(diào)整,期間順便弄了一下數(shù)據(jù)庫的高可用的方案,一來記錄一下,二來近一年公眾號(hào)上的文章貢獻(xiàn)太少了,爭(zhēng)取補(bǔ)上來~

      三. 今天分享啥

      沒錯(cuò),正如標(biāo)題上寫的,今天會(huì)先給大家講一下,如何《基于docker+mysql實(shí)現(xiàn)主從同步配置方法》 ,當(dāng)然docker只是輔助,重點(diǎn)是Mysql如何實(shí)現(xiàn)高可用的方法。

      注:有的測(cè)試小伙伴會(huì)說,這個(gè)不是開發(fā)或者是架構(gòu)師的事嗎,測(cè)試要關(guān)注這個(gè)干嘛?現(xiàn)在互聯(lián)網(wǎng)正式在線上運(yùn)營的產(chǎn)品我相信都是高可用架構(gòu)的,掌握產(chǎn)品架構(gòu)的實(shí)現(xiàn),幫助測(cè)試更好的掌握先機(jī),再說,讓你們多學(xué)點(diǎn)知識(shí),總不見得是壞事吧?

      四. 具體操作

      4.1 先建立數(shù)據(jù)存放目錄(~/test/mysql_test/)

      --mysql
         --master
            --data  
            --conf
               --my.cnf     
         --slave
            --data  
            --conf
               --my.cnf

      4.2 準(zhǔn)備好 Mysql Master(主庫)和Mysql Slave(從庫)的my.cnf文件

      Master my.cnf 配置文件:

      [mysqld]
      server_id = 1
      
      log-bin= mysql-bin
      read-only=0
      
      replicate-ignore-db=mysql
      replicate-ignore-db=sys
      replicate-ignore-db=information_schema
      replicate-ignore-db=performance_schema
      
      !includedir /etc/mysql/conf.d/
      !includedir /etc/mysql/mysql.conf.d/

      Slave my.cnf 配置文件:

      [mysqld]
      server_id = 2
      
      log-bin= mysql-bin
      read-only=1
      
      replicate-ignore-db=mysql
      replicate-ignore-db=sys
      replicate-ignore-db=information_schema
      replicate-ignore-db=performance_schema
      
      !includedir /etc/mysql/conf.d/
      !includedir /etc/mysql/mysql.conf.d/

      注:在本文中,由上述my.cnf配置文件可得知,主從同步針對(duì)的數(shù)據(jù)庫(除了mysql,sys,information_schema,performance_schema這些以外)的其它所有數(shù)據(jù)庫都會(huì)進(jìn)行同步(含數(shù)據(jù)庫、表、數(shù)據(jù)等)

      小結(jié):

      • 由上述master my.cnf和slave my.cnf配置文件中可知,兩者的區(qū)別主要在于server_id和read-only值不同

      • server_id標(biāo)識(shí)服務(wù)實(shí)例,master和slave值需要保證唯一

      • read-only中值為0表示支持可讀寫、1的話表明僅支持可讀

      4.3 創(chuàng)建master主容器

      docker run --name mastermysql -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -v ~/test/mysql_test/master/data:/var/lib/mysql -v ~/test/mysql_test/master/conf/my.cnf:/etc/mysql/my.cnf mysql:5.7

      4.4 創(chuàng)建slave從容器

      docker run --name slavemysql -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=root -v ~/test/mysql_test/slave/data:/var/lib/mysql -v ~/test/mysql_test/slave/conf/my.cnf:/etc/mysql/my.cnf mysql:5.7

      4.5  master容器設(shè)置

      //進(jìn)入master容器
      
      docker exec -it mastermysql bash
      
      
      //啟動(dòng)mysql命令,剛在創(chuàng)建窗口時(shí)我們把密碼設(shè)置為:root
      
      mysql -u root -p
      
      
      //創(chuàng)建一個(gè)用戶來同步數(shù)據(jù),每個(gè)slave使用標(biāo)準(zhǔn)的MySQL用戶名和密碼連接master。進(jìn)行復(fù)制操作的用戶會(huì)授予REPLICATION SLAVE 權(quán)限。
      
      CREATE USER 'slave'@ '%' IDENTIFIED BY '123456';  (其實(shí)可省略)
      GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by '123456';
      
      //這里表示創(chuàng)建一個(gè)slaver同步賬號(hào)slave,允許訪問的IP地址為%,%表示通配符
      
      
      //查看狀態(tài),記住File、Position的值,在Slave中將用到
      show master status/G;

      4.6 slave容器設(shè)置

      //進(jìn)入slaver容器
      docker exec -it slavemysql bash
      
      //啟動(dòng)mysql命令,剛在創(chuàng)建窗口時(shí)我們把密碼設(shè)置為:root
      mysql -u root -p
      
      //設(shè)置主庫鏈接
      change master to master_host='172.17.0.2',master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3306;
      
      //啟動(dòng)從庫同步
      start slave;
      
      //查看狀態(tài)
      show slave status\G;

      如果 show slave status\G命令結(jié)果中出現(xiàn): Slave_IO_Running: Yes Slave_SQL_Running: Yes 以上兩項(xiàng)都為Yes,那說明沒問題了。

      五、注意事宜

      5.1 首先在主從沒有生效的時(shí)候,要保持兩臺(tái)服務(wù)器數(shù)據(jù)庫、表相同,數(shù)據(jù)相同

      那如何實(shí)現(xiàn)主從庫在開始之間的同步呢,別怕,繼續(xù)看?

      master容器上執(zhí)行:

      mysqldump -uroot -p --all-databases >/root/all_database.sql

      將all_database.sql拷貝到從庫中來,在slave從庫容器上執(zhí)行:

      mysql -uroot -p <all_database.sql

      如此兩步驟,主庫和從庫數(shù)據(jù)會(huì)追加相平,保持同步!

      再此過程中,若主庫存在業(yè)務(wù),在同步的時(shí)候要先鎖表,讓其不要有修改!

      #如需要,可以master容器中,執(zhí)行以下命令鎖定數(shù)據(jù)庫以防止寫入數(shù)據(jù)。mysql>FLUSH TABLES WITH READ LOCK;

      等待主從數(shù)據(jù)追平,主從同步后在打開鎖!

      #解鎖數(shù)據(jù)表。
      
      mysql>UNLOCK TABLES;

      主從數(shù)據(jù)追平后,定位好從庫到主庫日志的文件名字,和相應(yīng)的位置

      master主庫運(yùn)行:

      mysql> show master status\G;

      看到且記住相應(yīng)文件名字和位置,下面會(huì)用到哦!

      slave從庫運(yùn)行:

      #設(shè)置主庫鏈接
      change master to master_host='172.17.0.9',master_user='slave',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=2037,master_port=3306;
      
      #執(zhí)行從庫同步
      start slave;
      
      #查看從庫同步狀態(tài)
      show slave status\G;

      在結(jié)果中看到:

               Slave_IO_Running: Yes
      
              Slave_SQL_Running: Yes

      即可成功同步!

      六、主從同步驗(yàn)證

      6.1 如當(dāng)前數(shù)據(jù)庫情況如下:

      6.2、在master主庫容器中,創(chuàng)建數(shù)據(jù)庫master_demo,并在此庫下創(chuàng)建表userinfo,并插入一條記錄

      create database master_demo;
      use master_demo;
      create table userinfo(username varchar(50),age int);
      insert into userinfo values('Tom',18);

      6.3、此時(shí),進(jìn)入從庫容器中,查看:

      確實(shí)已經(jīng)將在master主庫新建的數(shù)據(jù)庫和表記錄都同步過來了。

      既然是主從同步,那反過來驗(yàn)證一下,在從庫下插入記錄后,會(huì)不會(huì)同步到主庫中來呢?

      在從庫上操作插入記錄:

      insert into userinfo values('slave',20);

      查看:

      切到master主庫中,查看:

      發(fā)現(xiàn)在master主庫中,還是只有一條記錄,說明與預(yù)期設(shè)想的一樣,在從庫中插入記錄,是不會(huì)同步到master主庫中來的

      再來一波,在主庫master上,插入新記錄:

      insert into userinfo values('master',25);

      在從庫中,查看

      發(fā)現(xiàn)在master主庫中新加入的master記錄,在從庫中同步過來了。

      到此,基于docker mysql數(shù)據(jù)庫的主從同步配置,驗(yàn)證到此結(jié)束,命令、配圖給的如此詳細(xì),還不來點(diǎn)個(gè)贊~

      七. 未完待續(xù)

      接下來,還會(huì)給大家介紹的有

      • 《Docker Mysql數(shù)據(jù)庫實(shí)現(xiàn)雙主同步配置詳細(xì)》

      • 《Docker Mongo數(shù)據(jù)庫實(shí)現(xiàn)主從同步配置詳細(xì)》

      • 《Docker Mongo數(shù)據(jù)庫實(shí)現(xiàn)主主同步配置詳細(xì)》

      • 《Docker +Nginx+Keepalived實(shí)現(xiàn)架構(gòu)高可用》

        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多