日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

目錄
  • 一 主從復制概念
  • 二 主從復制的優勢
  • 三 Docker容器實現Mysql主從復制
    • 3.1 創建主服務器容器
    • 3.2 新建主配置文件 my.cnf
    • 3.3 重啟master容器實例
    • 3.4 進入mysql-master容器
    • 3.5 在主服務器中創建用戶并授權
    • 3.6 創建從服務器容器
    • 3.7 新建主配置文件 my.cnf
    • 3.8 重啟slave容器實例
    • 3.9 在主數據庫中查看主從同步狀態
    • 3.10 進入mysql-slave容器
    • 3.11 在從數據庫中配置主從復制
    • 3.12 在從數據庫中查看主從同步狀態
    • 3.13 在從數據庫中開啟主從同步
    • 3.14 查看從數據庫狀態是否同步
    • 3.15 主從復制測試
  • 總結

    一 主從復制概念

    在數據庫中主從復制“表示有一個主數據庫,多個從數據庫,即,主數據庫對外提供讀寫功能,從數據庫對外提供讀的功能。
    Mysql默認采用異步復制方式,這樣從節點不用一直訪問主服務器來更新自己的數據,數據的更新可以實時在遠端進行。

    二 主從復制的優勢

    • 高可用,可用于故障切換,如果主庫掛了,則可以切到從庫
    • 讀寫分離,減少主庫壓力,從而提高性能,主庫負責寫,從庫負責讀
    • 可備份數據,避免影響業務

    三 Docker容器實現Mysql主從復制

    下面開始進入實戰環節,一步步的教大家如何搭建主從數據庫,小伙伴趕快練習一下吧。

    3.1 創建主服務器容器

    主服務器端口號為3307

    docker run -p 3307:3306 --name mysql-master \
    -v /Users/zengzhaoxia/mydata/mysql-master/log:/var/log/mysql \
    -v /Users/zengzhaoxia/mydata/mysql-master/data:/var/lib/mysql \
    -v /Users/zengzhaoxia/mydata/mysql-master/conf:/etc/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -d mysql:5.7
    

    一文教會你在Docker容器中實現Mysql主從復制

    創建完成之后,別忘記再 docker ps一下,確保是否創建成功

    補充:如果MYSQL_ROOT_PASSWORD的密碼設置為root,當登錄數據庫時可能會報和權限相關的錯誤,所以,不妨將密碼改為數字試試,比如123456。

    3.2 新建主配置文件 my.cnf

    進入/mydata/mysql-master/conf目錄下新建my.cnf,my.cnf 內容如下:

    [mysqld]
    ## 設置server_id,同一局域網中需要唯一
    server_id=101
    ##指定不需要同步的數據庫名稱
    binlog-ignore-db=mysql
    ##開啟二進制日志功能
    log-bin=mall-mysql-bin
    ## 設置二進制日志使用內存大小(事務)
    binlog_cache_size=1M
    ## 設置使用的二進制日志格式(mixed,statement,row)
    binlog_format=mixed
    ## 二進制日志過期清理時間,默認值為0,表示不自動清理
    expire_logs_days=7
    ## 跳過主從復制中遇到的所有錯誤或指定類型的錯誤,避免slave端復制中斷。
    ## 如:1062 錯誤是指一些主鍵重復,1032錯誤是因為主從數據庫數據不一致
    slave_skip_errors=1062
    

    切記切記,此處一定是 [mysqld],不要寫成了[mysql]。

    3.3 重啟master容器實例

    因為第二步修改了配置文件,所以需要重啟docker容器

    docker restart mysql-master
    docker ps
    

    3.4 進入mysql-master容器

    進入mysql-master容器,并登錄數據庫,可以看到當前有哪些默認的數據庫。

    docker exec -it mysql-master /bin/bash
    mysql -uroot -p
    show databases;
    

    3.5 在主服務器中創建用戶并授權

    ##1. 建立用戶
    mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
    ##2. 授權
    mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';
    

    一文教會你在Docker容器中實現Mysql主從復制

    3.6 創建從服務器容器

    從服務器容器的端口號為:3308

    docker run -p 3308:3306 --name mysql-slave \
    -v /Users/zengzhaoxia/mydata/mysql-slave/log:/var/log/mysql \
    -v /Users/zengzhaoxia/mydata/mysql-slave/data:/var/lib/mysql \
    -v /Users/zengzhaoxia/mydata/mysql-slave/conf:/etc/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -d mysql:5.7
    

    創建完成之后,別忘記再 docker ps一下,確保是否創建成功

    3.7 新建主配置文件 my.cnf

    進入/mydata/mysql-slave/conf目錄下新建my.cnf,my.cnf內容如下:

    [mysqld]
    ## 設置server_id,同一局域網中需要唯一
    server_id=102
    ##指定不需要同步的數據庫名稱
    binlog-ignore-db=mysql
    ##開啟二進制日志功能,以備slave作為其他數據庫實例的master時使用
    log-bin=mall-slave1-bin
    ## 設置二進制日志使用內存大小(事務)
    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
    

    3.8 重啟slave容器實例

    因為修改了配置,所以需要重啟 slave 實例

    docker restart mysql-slave
    docker ps
    

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

    在主服務器中輸入如下命令:

    mysql> show master status;

    一文教會你在Docker容器中實現Mysql主從復制

    3.10 進入mysql-slave容器

    docker exec -it mysql-slave /bin/bash
    

    3.11 在從數據庫中配置主從復制

    change master to master_host='100.100.32.185',master_user='slave',master_password='123456',master_port=3307,master_log_file='mall-mysql-bin.000002',master_log_pos=617,master_connect_retry=30;
    

    一文教會你在Docker容器中實現Mysql主從復制

    其中,

    字段 含義
    master_host 主數據庫的IP地址
    master_port 主數據庫的運行端口
    master_user 在主數據庫創建的用于同步數據的用戶賬號
    master_password 在主數據庫創建的用于同步數據的用戶密碼
    master_log_file 指定從數據庫要復制數據的日志文件,通過查看主數據的狀態,獲取file參數
    master_log_pos 指定從數據庫從哪個位置開始復制數據,通過查看主數據的狀態,獲取Position參數
    master_connect_retry 連接失敗重試的時間間隔,單位為秒

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

    mysql> show slave status \G;
    ## 加入 \G表示 豎排以鍵值對的形式顯示,主要觀察Slave_IO_Running和Slave_SQL_Running
    

    一文教會你在Docker容器中實現Mysql主從復制

    3.13 在從數據庫中開啟主從同步

    在從數據庫中操作,表示從數據庫同意接收數據

    start slave;

    一文教會你在Docker容器中實現Mysql主從復制

    3.14 查看從數據庫狀態是否同步

    show slave status \G;

    一文教會你在Docker容器中實現Mysql主從復制

    3.15 主從復制測試

    驗證主要分為兩步,第一步在主數據庫中創建數據,第二步在從數據庫中查看數據。

    1. 在主數據庫中新建數據庫db01,并在db01中新建表t1,并插入數據
    create database db01;
    use db01;
    create table t1(id int,name varchar(20));
    insert into t1 values(1,'zeng');
    
    2. 在從數據庫中查詢
    show databases;//會看到db01數據庫
    use db01;
    select * from t1;
    

    總結

    分享到:
    標簽:一文 主從 你在 容器 教會
    用戶無頭像

    網友整理

    注冊時間:

    網站:5 個   小程序:0 個  文章:12 篇

    • 51998

      網站

    • 12

      小程序

    • 1030137

      文章

    • 747

      會員

    趕快注冊賬號,推廣您的網站吧!
    最新入駐小程序

    數獨大挑戰2018-06-03

    數獨一種數學游戲,玩家需要根據9

    答題星2018-06-03

    您可以通過答題星輕松地創建試卷

    全階人生考試2018-06-03

    各種考試題,題庫,初中,高中,大學四六

    運動步數有氧達人2018-06-03

    記錄運動步數,積累氧氣值。還可偷

    每日養生app2018-06-03

    每日養生,天天健康

    體育訓練成績評定2018-06-03

    通用課目體育訓練成績評定