• <td id="c1e2m"><strike id="c1e2m"></strike></td><acronym id="c1e2m"><strong id="c1e2m"></strong></acronym>

    <acronym id="c1e2m"><label id="c1e2m"></label></acronym>

    <td id="c1e2m"></td>

      <p id="c1e2m"><strong id="c1e2m"><xmp id="c1e2m"></xmp></strong></p>
        <td id="c1e2m"><ruby id="c1e2m"></ruby></td>
      1. <p id="c1e2m"></p>
        您的位置:首頁 >聚焦 >

        焦點資訊:docker高級篇第一章-docker復雜安裝說明【案例mysql有問題】

        2022-12-17 15:42:50    來源:程序員客棧

        大家好,咱們前面通過十篇的文章介紹了docker的基礎篇,從本篇開始,咱們的《docker學習系列》將要進入到高級篇階段(基礎篇大家可以查看之前發布的文章)。

        咱們先來介紹:docker復雜方式安裝軟件。通過按照mysql\redis兩個案例來講解


        【資料圖】

        Docker復雜安裝說明,兩個案例:

        1:安裝mysql主從復制

        2:安裝redis集群

        本文咱們就先來實現第一個案例:mysql主從復制

        大家好,我是凱哥Java(kaigejava),樂于分享,每日更新技術文章,歡迎大家關注“凱哥Java”,及時了解更多。讓我們一起學Java。也歡迎大家有事沒事就來和凱哥聊聊~~~

        直通車,本系列教程已發布文章,快速到達,《Docker學習系列》教程已經發布的內容如下:

        【圖文教程】Windows11下安裝Docker Desktop

        【填坑】在windows系統下安裝Docker Desktop后遷移鏡像位置

        【Docker學習系列】Docker學習1-docker安裝

        【Docker學習系列】Docker學習2-docker設置鏡像加速器

        【Docker學習系列】Docker學習3-docker的run命令干了什么?docker為什么比虛擬機快?

        【Docker學習系列】Docker學習2-常用命令之啟動命令和鏡像命令

        【Docker學習系列】Docker學習系列3:常用命令之容器命令

        【Docker學習系列】Docker學習4-常用命令之重要的容器命令

        【Docker教程系列】Docker學習5-Docker鏡像理解

        【Docker教程系列】Docker學習6-Docker鏡像commit操作案例

        【Docker學習教程系列】7-如何將本地的Docker鏡像發布到阿里云

        【Docker學習教程系列】8-如何將本地的Docker鏡像發布到私服?

        「Docker學習系列教程」9-Docker容器數據卷介紹

        「Docker學習系列教程」10-Docker容器數據卷案例

        Docker學習11-Docker常規方式安裝軟件

        【Docker學習教程系列匯總】筆記及遇到問題解決文章

        安裝mysql主從搭建步驟:

        1:新建主服務器容器實例3307

        命令

        docker run -p 3307:3306 --name mysql-master \

        -v /mydata/mysql-master/log:/var/log/mysql \

        -v /mydata/mysql-master/data:/var/lib/mysql \

        -v /mydata/mysql-master/conf:/etc/mysql \

        -e MYSQL_ROOT_PASSWORD=root \

        -d mysql:5.7

        2:進入/mydata/mysql-master/conf目錄下新建my.cnf

        修改配置:

        cd /mydata/mysql-master/conf

        vim my.cnf

        ## 輸入以下內容

        [mysqld]

        ## 設置server_id,同一局域網中需要唯一

        server_id=101

        ## 指定不需要同步的數據庫名稱

        binlog-ignore-db=mysql

        ## 開啟二進制日志功能

        log-bin=mall-mysql-bin

        ## 設置二進制日志使用內存大?。ㄊ聞眨?/p>

        binlog_cache_size=1M

        ## 設置使用的二進制日志格式(mixed,statement,row)

        binlog_format=mixed

        ## 二進制日志過期清理時間。默認值為0,表示不自動清理。

        expire_logs_days=7

        ## 跳過主從復制中遇到的所有錯誤或指定類型的錯誤,避免slave端復制中斷。

        ## 如:1062錯誤是指一些主鍵重復,1032錯誤是因為主從數據庫數據不一致

        slave_skip_errors=1062

        注意文件權限應該是644

        3:修改完配置之后重啟master實例

        修改完mysql配置后,記得重啟實例

        docker restart mysql-master

        如果重啟失敗,查看是否因為my.conf文件寫錯導致。

        或者查看錯誤日志:docker logs 容器id

        修改后,重新啟動容器。

        4:進入mysql-master容器

        進入到mysql-master。然后登錄mysql試試。

        在前臺顯示進入容器:

        docker exec -it mysql-master /bin/bash

        進入容器后,登錄mysql:

        mysql -uroot -p

        5:master容器實例內創建數據同步用戶

        mysql創建用戶及密碼命令:

        命令模板:CREATE USER "用戶名"@"可以訪問的ip" IDENTIFIED BY "密碼"

        CREATE USER "slave"@"%" IDENTIFIED BY "123456";

        賦權命令模板:GRANT REPLICATION 權限 on 訪問ip端口 TO "用戶名"@‘ip’

        GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO "slave"@"%";

        6:新建從服務器容器實例3308

        命令:

        docker run -p 3308:3306 --name mysql-slave \

        -v /mydata/mysql-slave/log:/var/log/mysql \

        -v /mydata/mysql-slave/data:/var/lib/mysql \

        -v /mydata/mysql-slave/conf:/etc/mysql \

        -e MYSQL_ROOT_PASSWORD=root \

        -d mysql:5.7

        區別:

        1:修改了宿主機的端口映射

        2:修改了容器名稱

        3:修改了數據卷掛載的目錄

        7:進入/mydata/mysql-slave/conf目錄下新建my.cnf

        修改配置:

        cd /mydata/mysql-slave/conf

        vim my.cnf

        ## 輸入以下內容

        [mysqld]

        ## 設置server_id,同一局域網中需要唯一

        server_id=102

        ## 指定不需要同步的數據庫名稱

        binlog-ignore-db=mysql

        ## 開啟二進制日志功能,以備Slave作為其它數據庫實例的Master時使用

        log-bin=mall-mysql-slave1-bin

        ## 設置二進制日志使用內存大?。ㄊ聞眨?/p>

        binlog_cache_size=1M

        ## 設置使用的二進制日志格式(mixed,statement,row)

        binlog_format=mixed

        ## 二進制日志過期清理時間。默認值為0,表示不自動清理。

        expire_logs_days=7

        ## 跳過主從復制中遇到的所有錯誤或指定類型的錯誤,避免slave端復制中斷。

        ## 如:1062錯誤是指一些主鍵重復,1032錯誤是因為主從數據庫數據不一致

        slave_skip_errors=1062

        ## relay_log配置中繼日志

        relay_log=mall-mysql-relay-bin

        ## log_slave_updates表示slave將復制事件寫進自己的二進制日志

        log_slave_updates=1

        ## slave設置為只讀(具有super權限的用戶除外)

        read_only=1

        重新賦權

        8:修改完配置后重啟slave實例

        修改完mysql配置后,記得重啟實例

        docker restart mysql-slave

        9:在主數據庫這查看主從同步狀態

        在mysql主庫的鏡像中,進入主mysql,然后執行命令:

        show master status;

        10:進入mysql-slave容器

        進入到mysql-master。然后登錄mysql試試。

        在前臺顯示進入容器:

        docker exec -it mysql-slave /bin/bash

        進入容器后,登錄mysql:

        mysql -uroot -p

        11:在從數據庫中配置主從復制

        在mysql從庫的鏡像中,進入從mysql,然后執行命令公式:

        change master to master_host="宿主機ip", master_user="在主庫上創建用于主從同步的用戶賬號", master_password="在主數據庫創建的用于同步數據的用戶密碼", master_port=master庫的端口, master_log_file="masterlog文件名稱", master_log_pos=當前開始點, master_connect_retry=重試;

        公式說明:見注釋

        master_host:主數據庫的ip地址

        master_port:主數據庫的端口

        master_user:在主數據庫創建的用于同步數據的用戶賬號

        master_password:在主數據庫創建的用于同步數據的用戶的密碼

        master_log_file:指定從數據庫要復制數據的日志文件。通過查看主數據庫的狀態,獲取File參數;

        master_log_pos:指定從數據庫從哪個位置開始復制數據,通過查看主數據的狀態,獲取Position參數

        master_connect_retry:連接失敗充值的時間間隔,單位:秒

        12:在從數據庫中查看主從同步狀態

        查看主從同步第二中方法:

        show slave status \G;

        13:在從數據庫中開啟主從同步

        進入從數據庫的mysql后,開啟主從同步:

        start slave;

        14:查看從數據庫狀態發現已經同步

        15:主從復制測試

        關鍵詞: 主從復制 以下內容 數據庫名稱

        相關閱讀

        欧美视频线路在线_欧美中文字幕在线中出观看_中年美女露比自慰交配a一级片免费播放_九九精品国中文字幕在线视频

      2. <td id="c1e2m"><strike id="c1e2m"></strike></td><acronym id="c1e2m"><strong id="c1e2m"></strong></acronym>

        <acronym id="c1e2m"><label id="c1e2m"></label></acronym>

        <td id="c1e2m"></td>

          <p id="c1e2m"><strong id="c1e2m"><xmp id="c1e2m"></xmp></strong></p>
            <td id="c1e2m"><ruby id="c1e2m"></ruby></td>
          1. <p id="c1e2m"></p>