最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

docker實現mysql主從復制的示例代碼

 更新時間:2021年08月31日 10:00:14   作者:呂林光  
Docker它不香嗎?即省去了安裝Mysql所需要的步驟,有多個容器之間相互資源獨立,IP互不沖突,具有一定的參考價值,感興趣的可以了解一下

一、概述

1、原理

  • master服務器將數據的改變記錄二進制binlog日志,當master上的數據發(fā)生改變時,則將其改變寫入二進制日志中;
  • slave服務器會在一定時間間隔內對master二進制日志進行探測其是否發(fā)生改變,如果發(fā)生改變,則開始一個I/OThread請求master二進制事件
  • 同時主節(jié)點為每個I/O線程啟動一個dump線程,用于向其發(fā)送二進制事件,并保存至從節(jié)點本地的中繼日志中,從節(jié)點將啟動SQL線程從中繼日志中讀取二進制日志,在本地重放,使得其數據和主節(jié)點的保持一致,最后I/OThread和SQLThread將進入睡眠狀態(tài),等待下一次被喚醒。

主從流程圖

2、實現

主庫:192.168.3.13:3310從庫:192.168.3.14:3310二、創(chuàng)建master主庫進入服務器192.168.3.13

1、安裝鏡像

docker pull mysql:8.0.26

2、新建目錄

mkdir -p /home/apps/mysql-master/{config,log,data}

3、創(chuàng)建并啟動

docker run -d --name mysql-master \
--restart=always \
--privileged=true \
-p 3310:3306 \
-v /home/apps/mysql-master/config:/etc/mysql/conf.d \
-v /home/apps/mysql-master/log:/var/log/mysql \
-v /home/apps/mysql-master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0.26

4、新增/修改master基本配置

vim /home/apps/mysql-master/config/my.cnf

添加以下內容

[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
 
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

三、創(chuàng)建Slave實例

進入服務器192.168.3.14

1、同上面操作一樣

# 創(chuàng)建目錄
mkdir -p /home/apps/mysql-slave-01/{config,log,data}

# 啟動容器
docker run -d --name mysql-slave-01 \
--restart=always \
--privileged=true \
-p 3310:3306 \
-v /home/apps/mysql-slave-01/config:/etc/mysql/conf.d \
-v /home/apps/mysql-slave-01/log:/var/log/mysql \
-v /home/apps/mysql-slave-01/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0.26


# 修改Slave基本配置
vim /home/apps/mysql-slave-01/config/my.cnf

# 添加以下內容
[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
 
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

四、主從配置

1、添加master配置

vim /home/apps/mysql-master/config/my.cnf
server_id=1

# 開啟二進制日志
log-bin=mysql-bin
read-only=0

# 需要同步的數據庫
binlog-do-db=rapid-cloud
binlog-do-db=rapid-cloud-test

# 需要忽略的數據庫
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema

2、重啟容器

docker restart mysql-master

3、添加Slave配置

vim /home/apps/mysql-slave-01/config/my.cnf

server_id=2
log-bin=mysql-bin
read-only=1
binlog-do-db=rapid-cloud
binlog-do-db=rapid-cloud-test

replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema

4、重啟容器

docker restart mysql-slave-01

5、master添加帳號,用來同步的用戶

# 進入容器
docker exec -it mysql-master /bin/bash

# 進入主庫mysql數據庫
mysql -u root -p

# 授權root可以遠程訪問( 主從無關,為了方便我們遠程連接mysql)

# 授權遠程
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

# 刷新
flush privileges;


# 創(chuàng)建backup用戶

# 應先創(chuàng)建新用戶
create user 'backup'@'%' identified by '123456';

# 執(zhí)行授權
grant all privileges on *.* to 'backup'@'%';

# 刷新
flush privileges;

# 授權遠程
ALTER USER 'backup'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

# 刷新
flush privileges;

# 查看主庫狀態(tài)
show master status;

6、在從庫里設置主庫連接

# 進入容器
docker exec -it mysql-slave-01 /bin/bash

# 進入主庫mysql數據庫
mysql -u root -p

change master to master_host='192.168.3.13',master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3310;

7、啟動從庫同步

先將主庫的數據復制一份到從庫,包含表結構及數據

將主庫binlog清除一下,這樣它的位置就從0開始了

purge master logs to'mysql-bin.000001';

開啟同步

# 開始同步
start slave;

# 停止同步
# stop slave;

# 查看同步狀態(tài)
show slave status\G;

8、錯誤排查

如果無法實現主從同步,可以通過以下排查

總結:

主從數據庫在自己配置文件中聲明需要同步哪個數據庫,忽略哪個數據庫等信息。并且server-id不能一樣主庫授權某個賬號密碼來同步自己的數據從庫使用這個賬號密碼連接主庫來同步數據

五、參考

https://www.cnblogs.com/heian99/p/12104189.html

https://blog.csdn.net/lilygg/article/details/98187015

binlog清除:https://www.cnblogs.com/kiko2014551511/p/11532426.html

到此這篇關于docker實現mysql主從復制的示例代碼的文章就介紹到這了,更多相關docker mysql主從復制內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 淺談Docker consul的容器服務更新與發(fā)現

    淺談Docker consul的容器服務更新與發(fā)現

    本文主要介紹了淺談Docker consul的容器服務更新與發(fā)現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • 基于Docker實現MySQL主從復制的詳細教程

    基于Docker實現MySQL主從復制的詳細教程

    這篇博客整理了如何在Docker環(huán)境下配置MySQL主從復制,通過創(chuàng)建和命名兩個MySQL容器,設置獨立IP,并詳細說明了在宿主機上持久化數據、開啟root遠程訪問及添加復制用戶的過程,需要的朋友可以參考下
    2024-10-10
  • docker容器內服務隨容器自動啟動的幾種方案

    docker容器內服務隨容器自動啟動的幾種方案

    Docker是一種輕量級的容器化平臺,可以幫助開發(fā)者快速部署、運行和管理應用程序,這篇文章主要給大家介紹了關于docker容器內服務隨容器自動啟動的幾種方案,需要的朋友可以參考下
    2024-07-07
  • 10分鐘學會docker

    10分鐘學會docker

    Docker 是一個開源的應用容器引擎,基于 Go 語言 并遵從Apache2.0協(xié)議開源。Docker 可以讓開發(fā)者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發(fā)布到任何流行的 Linux 機器上,也可以實現虛擬化。
    2017-06-06
  • Docker如何查看鏡像里的文件

    Docker如何查看鏡像里的文件

    文章介紹了如何在開發(fā)過程中檢查Docker鏡像中的文件是否符合預期,步驟包括下載鏡像、創(chuàng)建并運行臨時容器查看內容,以及停止和刪除臨時容器
    2024-11-11
  • Docker中部署Redis集群與部署微服務項目的詳細過程

    Docker中部署Redis集群與部署微服務項目的詳細過程

    這篇文章主要介紹了Docker中部署Redis集群與部署微服務項目,主要包括使用docker部署的好處以及Docker與Kubernetes對比分析,需要的朋友可以參考下
    2022-06-06
  • 一步步詳解如何在Ubuntu?18.04上安裝Docker

    一步步詳解如何在Ubuntu?18.04上安裝Docker

    Docker是基于Go語言實現的云開源項目,下面這篇文章主要給大家介紹了關于如何在Ubuntu?18.04上安裝Docker的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • skywalking在docker中應用方式

    skywalking在docker中應用方式

    這篇文章主要介紹了skywalking在docker中應用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Docke中安裝redis的方法

    Docke中安裝redis的方法

    這篇文章主要介紹了Docke中安裝redis的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • 詳解docker?API管理接口增加CA安全認證

    詳解docker?API管理接口增加CA安全認證

    這篇文章主要介紹了docker?API管理接口增加CA安全認證,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06

最新評論

栖霞市| 江孜县| 溆浦县| 洞头县| 城步| 平和县| 阿图什市| 鹤庆县| 克东县| 固镇县| 西丰县| 东明县| 弋阳县| 双流县| 西华县| 温泉县| 昌都县| 临夏市| 岳池县| 嫩江县| 合山市| 顺义区| 南城县| 木兰县| 新沂市| 法库县| 潮安县| 成安县| 美姑县| 林芝县| 山西省| 永定县| 封开县| 米易县| 五华县| 正蓝旗| 正蓝旗| 石阡县| 格尔木市| 通城县| 南皮县|