亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

docker實現(xiàn)mysql主從復(fù)制的示例代碼

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

一、概述

1、原理

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

主從流程圖

2、實現(xiàn)

主庫:192.168.3.13:3310從庫:192.168.3.14:3310二、創(chuàng)建master主庫進(jìn)入服務(wù)器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

添加以下內(nèi)容

[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實例

進(jìn)入服務(wù)器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

# 添加以下內(nèi)容
[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

# 開啟二進(jìn)制日志
log-bin=mysql-bin
read-only=0

# 需要同步的數(shù)據(jù)庫
binlog-do-db=rapid-cloud
binlog-do-db=rapid-cloud-test

# 需要忽略的數(shù)據(jù)庫
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添加帳號,用來同步的用戶

# 進(jìn)入容器
docker exec -it mysql-master /bin/bash

# 進(jìn)入主庫mysql數(shù)據(jù)庫
mysql -u root -p

# 授權(quán)root可以遠(yuǎn)程訪問( 主從無關(guān),為了方便我們遠(yuǎn)程連接mysql)

# 授權(quán)遠(yuǎn)程
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

# 刷新
flush privileges;


# 創(chuàng)建backup用戶

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

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

# 刷新
flush privileges;

# 授權(quán)遠(yuǎn)程
ALTER USER 'backup'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

# 刷新
flush privileges;

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

6、在從庫里設(shè)置主庫連接

# 進(jìn)入容器
docker exec -it mysql-slave-01 /bin/bash

# 進(jìn)入主庫mysql數(shù)據(jù)庫
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、啟動從庫同步

先將主庫的數(shù)據(jù)復(fù)制一份到從庫,包含表結(jié)構(gòu)及數(shù)據(jù)

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

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

開啟同步

# 開始同步
start slave;

# 停止同步
# stop slave;

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

8、錯誤排查

如果無法實現(xiàn)主從同步,可以通過以下排查

總結(jié):

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

五、參考

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

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

相關(guān)文章

  • 使用Docker Swarm搭建分布式爬蟲集群的方法示例

    使用Docker Swarm搭建分布式爬蟲集群的方法示例

    這篇文章主要介紹了使用Docker Swarm搭建分布式爬蟲集群的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • dockerfile部署前端vue打包的ist文件實戰(zhàn)

    dockerfile部署前端vue打包的ist文件實戰(zhàn)

    這篇文章主要為大家介紹了dockerfile部署前端vue打包的ist文件實戰(zhàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Docker Portainer 可視化面板的使用

    Docker Portainer 可視化面板的使用

    本文主要介紹了Docker Portainer 可視化面板的使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Docker安裝ElasticSearch和Kibana的問題及處理方法

    Docker安裝ElasticSearch和Kibana的問題及處理方法

    這篇文章主要介紹了Docker安裝ElasticSearch和Kibana的問題及遇到問題解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • docker利用selenium+testng實現(xiàn)web自動化的方法

    docker利用selenium+testng實現(xiàn)web自動化的方法

    這篇文章主要給大家介紹了關(guān)于docker利用selenium+testng實現(xiàn)web自動化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2018-10-10
  • 詳解Docker創(chuàng)建Mysql容器并通過命令行連接到容器

    詳解Docker創(chuàng)建Mysql容器并通過命令行連接到容器

    本篇文章主要介紹了Docker創(chuàng)建Mysql容器并通過命令行連接到容器,具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01
  • idea連接docker實現(xiàn)一鍵部署的方法

    idea連接docker實現(xiàn)一鍵部署的方法

    這篇文章主要介紹了idea連接docker實現(xiàn)一鍵部署的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • docker啟動elasticsearch時內(nèi)存不足問題及解決方法

    docker啟動elasticsearch時內(nèi)存不足問題及解決方法

    這篇文章主要介紹了docker啟動elasticsearch時內(nèi)存不足問題,本文給大家分享安裝過程及解決方法,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Docker刪除已存在的鏡像的實現(xiàn)

    Docker刪除已存在的鏡像的實現(xiàn)

    本文主要介紹了Docker刪除已存在的鏡像的實現(xiàn),刪除已存在的 Docker 鏡像,可以使用 docker rmi 命令,下面就來詳細(xì)的介紹一下使用步驟,感興趣的可以了解一下
    2023-08-08
  • docker環(huán)境搭建JMeter+Grafana+influxdb可視化性能監(jiān)控平臺的教程

    docker環(huán)境搭建JMeter+Grafana+influxdb可視化性能監(jiān)控平臺的教程

    這篇文章主要介紹了docker下搭建JMeter+Grafana+influxdb可視化性能監(jiān)控平臺,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07

最新評論