" />

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

Docker搭建MySQL5.7主從復(fù)制的實(shí)現(xiàn)

 更新時(shí)間:2022年06月22日 09:46:02   作者:在奮斗的大道  
本文主要介紹了Docker搭建MySQL5.7主從復(fù)制的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1、新建mysql-master主服務(wù)器容器實(shí)例3307

 docker run -p 3307:3306 --name mysql-master \
  -v /usr/local/mysql-master/log:/var/log/mysql \
  -v /usr/local/mysql-master/data:/var/lib/mysql \
  -v  /usr/local/mysql-master/conf:/etc/mysql \
  -e MYSQL_ROOT_PASSWORD=root \
  -d mysql:5.7

將日志、數(shù)據(jù)、配置文件都使用數(shù)據(jù)卷方式掛載

首先新建日志存放文件夾: /usr/local/mysql-master/log

數(shù)據(jù)存放文件夾:/usr/local/mysql-master/data

配置存放文件夾:/usr/local/mysql-master/conf

mkdir -p /usr/local/mysql-master/log /usr/local/mysql-master/data /usr/local/mysql-master/conf

2、新建mysql-master主服務(wù)器配置文件my.cnf

進(jìn)入/usr/local/mysql-master/conf目錄下新建my.cnf(上面啟動(dòng)容器實(shí)例指定的路徑)

 文件內(nèi)容如下:

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

3 重啟master實(shí)例

修改完配置之后重啟master實(shí)例

docker restart mysql-master

 

4 進(jìn)入mysql-master容器

進(jìn)入mysql-master容器并登錄數(shù)據(jù)庫(kù),密碼是容器啟動(dòng)的時(shí)候我們?cè)诿钚兄付ǖ摹?/p>

docker exec -it mysql-master /bin/bash
 
mysql -uroot -proot

5 master容器實(shí)例內(nèi)創(chuàng)建數(shù)據(jù)同步用戶

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
 
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

6 新建mysql-slave從服務(wù)器實(shí)例3308

 docker run -p 3308:3306 --name mysql-slave \
 -v /usr/local/mysql-slave/log:/var/log/mysql \
 -v /usr/local/mysql-slave/data:/var/lib/mysql \
 -v /usr/local/mysql-slave/conf:/etc/mysql \
 -e MYSQL_ROOT_PASSWORD=root \
 -d mysql:5.7

將日志、數(shù)據(jù)、配置文件都使用數(shù)據(jù)卷方式掛載

首先新建日志存放文件夾: /usr/local/mysql-slave/log

數(shù)據(jù)存放文件夾:/usr/local/mysql-slave/data

配置存放文件夾:/usr/local/mysql-slave/conf

mkdir -p /usr/local/mysql-slave/log /usr/local/mysql-slave/data /usr/local/mysql-slave/conf

7 進(jìn)入/usr/local/mysql-slave/conf目錄下新建my.cnf

my.cnf文件內(nèi)容如下:

[mysqld]
## 設(shè)置server_id,同一局域網(wǎng)中需要唯一
server_id=102
## 指定不需要同步的數(shù)據(jù)庫(kù)名稱
binlog-ignore-db=mysql  
## 開啟二進(jìn)制日志功能,以備Slave作為其它數(shù)據(jù)庫(kù)實(shí)例的Master時(shí)使用
log-bin=mall-mysql-slave1-bin  
## 設(shè)置二進(jìn)制日志使用內(nèi)存大?。ㄊ聞?wù))
binlog_cache_size=1M  
## 設(shè)置使用的二進(jìn)制日志格式(mixed,statement,row)
binlog_format=mixed  
## 二進(jìn)制日志過期清理時(shí)間。默認(rèn)值為0,表示不自動(dòng)清理。
expire_logs_days=7  
## 跳過主從復(fù)制中遇到的所有錯(cuò)誤或指定類型的錯(cuò)誤,避免slave端復(fù)制中斷。
## 如:1062錯(cuò)誤是指一些主鍵重復(fù),1032錯(cuò)誤是因?yàn)橹鲝臄?shù)據(jù)庫(kù)數(shù)據(jù)不一致
slave_skip_errors=1062  
## relay_log配置中繼日志
relay_log=mall-mysql-relay-bin  
## log_slave_updates表示slave將復(fù)制事件寫進(jìn)自己的二進(jìn)制日志
log_slave_updates=1  
## slave設(shè)置為只讀(具有super權(quán)限的用戶除外)
read_only=1

8 修改完配置后重啟slave實(shí)例

docker restart mysql-slave

9 在主數(shù)據(jù)庫(kù)中查看主從同步狀態(tài)

show master status;

10 進(jìn)入mysql-slave容器 

docker exec -it mysql-slave /bin/bash
 
mysql -uroot -proot

11 在從數(shù)據(jù)庫(kù)中配置主從復(fù)制

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

主從復(fù)制參數(shù)說(shuō)明: 

master_host:主數(shù)據(jù)庫(kù)的IP地址;
master_port:主數(shù)據(jù)庫(kù)的運(yùn)行端口;
master_user:在主數(shù)據(jù)庫(kù)創(chuàng)建的用于同步數(shù)據(jù)的用戶賬號(hào);
master_password:在主數(shù)據(jù)庫(kù)創(chuàng)建的用于同步數(shù)據(jù)的用戶密碼;
master_log_file:指定從數(shù)據(jù)庫(kù)要復(fù)制數(shù)據(jù)的日志文件,通過查看主數(shù)據(jù)的狀態(tài),獲取File參數(shù);
master_log_pos:指定從數(shù)據(jù)庫(kù)從哪個(gè)位置開始復(fù)制數(shù)據(jù),通過查看主數(shù)據(jù)的狀態(tài),獲取Position參數(shù);
master_connect_retry:連接失敗重試的時(shí)間間隔,單位為秒。

12 在從數(shù)據(jù)庫(kù)中查看主從同步狀態(tài)

show slave status\G;

13 在從數(shù)據(jù)庫(kù)中開啟主從同步 

start slave;

14 查看從數(shù)據(jù)庫(kù)狀態(tài)發(fā)現(xiàn)已經(jīng)同步 

show slave status \G;

15 主從復(fù)制測(cè)試

主庫(kù)新建庫(kù)、新建表、插入數(shù)據(jù)

從庫(kù)查看庫(kù)、查看記錄,看主從同步是否成功

主從復(fù)制相關(guān)問題排查

使用start slave開啟主從復(fù)制過程后,如果SlaveIORunning一直是Connecting,則說(shuō)明主從復(fù)制一直處于連接狀態(tài),這種情況一般是下面幾種原因造成的,我們可以根據(jù) Last_IO_Error提示予以排除。

1、網(wǎng)絡(luò)不通
        檢查ip,端口和防火墻是否開啟
2、密碼不對(duì)
        檢查是否創(chuàng)建用于同步的用戶和用戶密碼是否正確
3、pos不對(duì)
        檢查Master的 Position

 造成我無(wú)法正常訪問數(shù)據(jù)庫(kù)的原因,是本地的防火墻服務(wù)沒有關(guān)閉造成。

[root@localhost conf]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 五 2022-06-17 23:54:33 CST; 1h 38min ago
     Docs: man:firewalld(1)
 Main PID: 30715 (firewalld)
    Tasks: 2
   Memory: 416.0K
   CGroup: /system.slice/firewalld.service
           └─30715 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
 
6月 18 00:04:01 localhost.localdomain firewalld[30715]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t nat -D OUTPUT -m addrtype -...ectory
                                                         Try `iptables -h' or 'iptables --help' for more information....
6月 18 00:04:01 localhost.localdomain firewalld[30715]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t nat -D PREROUTING' failed: ...ain?).
6月 18 00:04:01 localhost.localdomain firewalld[30715]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t nat -D OUTPUT' failed: ipta...ain?).
6月 18 00:04:01 localhost.localdomain firewalld[30715]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t nat -F DOCKER' failed: ipta... name.
6月 18 00:04:01 localhost.localdomain firewalld[30715]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t nat -X DOCKER' failed: ipta... name.
6月 18 00:04:01 localhost.localdomain firewalld[30715]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -F DOCKER' failed: i... name.
6月 18 00:04:01 localhost.localdomain firewalld[30715]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER' failed: i... name.
6月 18 00:04:01 localhost.localdomain firewalld[30715]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -F DOCKER-ISOLATION'... name.
6月 18 00:04:01 localhost.localdomain firewalld[30715]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER-ISOLATION'... name.
6月 18 00:04:01 localhost.localdomain firewalld[30715]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i docker0 -o docke...ain?).
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost conf]# systemctl stop firewalld
[root@localhost conf]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since 六 2022-06-18 01:33:04 CST; 3s ago
     Docs: man:firewalld(1)
  Process: 30715 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 30715 (code=exited, status=0/SUCCESS)
6月 18 00:04:01 localhost.localdomain firewalld[30715]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t nat -D OUTPUT' failed: ipta...ain?).
6月 18 00:04:01 localhost.localdomain firewalld[30715]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t nat -F DOCKER' failed: ipta... name.
6月 18 00:04:01 localhost.localdomain firewalld[30715]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t nat -X DOCKER' failed: ipta... name.
6月 18 00:04:01 localhost.localdomain firewalld[30715]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -F DOCKER' failed: i... name.
6月 18 00:04:01 localhost.localdomain firewalld[30715]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER' failed: i... name.
6月 18 00:04:01 localhost.localdomain firewalld[30715]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -F DOCKER-ISOLATION'... name.
6月 18 00:04:01 localhost.localdomain firewalld[30715]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER-ISOLATION'... name.
6月 18 00:04:01 localhost.localdomain firewalld[30715]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i docker0 -o docke...ain?).
6月 18 01:33:02 localhost.localdomain systemd[1]: Stopping firewalld - dynamic firewall daemon...
6月 18 01:33:04 localhost.localdomain systemd[1]: Stopped firewalld - dynamic firewall daemon.
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost conf]# docker exec -it mysql-slave /bin/bash
root@7d98a59a8012:/# mysql -uroot -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.7.38-log MySQL Community Server (GPL)
 
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
 
mysql> show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.43.10
                  Master_User: slave
                  Master_Port: 3307
                Connect_Retry: 30
              Master_Log_File: mall-mysql-bin.000001
          Read_Master_Log_Pos: 769
               Relay_Log_File: mall-mysql-relay-bin.000002
                Relay_Log_Pos: 477
        Relay_Master_Log_File: mall-mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

2、MYSQL鏡像服務(wù)器因錯(cuò)誤停止的恢復(fù) —Slave_SQL_Running: No

先stop slave,然后執(zhí)行了一下提示的語(yǔ)句,再
 > stop slave;
 > set global sql_slave_skip_counter=1;
 > start slave; 
 > show slave status\G ;

3、從MYSQL服務(wù)器Slave_IO_Running: No的解決2

master節(jié)點(diǎn)執(zhí)行,獲取日志文件和post

mysql > show master status;

slave節(jié)點(diǎn)進(jìn)行重新綁定

mysql > stop slave;
mysql > CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000008', MASTER_LOG_POS=519086591; 
mysql > start slave;

造成這類問題的原因一般是在主從復(fù)制的時(shí)候,基于創(chuàng)建表,然后又去刪除和操作了數(shù)據(jù)表或者表。

到此這篇關(guān)于Docker搭建MySQL5.7主從復(fù)制的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Docker搭建MySQL主從復(fù)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker服務(wù)遷移的實(shí)現(xiàn)

    Docker服務(wù)遷移的實(shí)現(xiàn)

    本文詳細(xì)介紹了如何備份和遷移Docker服務(wù)數(shù)據(jù),包括停止Docker服務(wù)、備份Docker數(shù)據(jù)和DockerCompose文件,使用SCP或Rsync傳輸備份文件,以及在新服務(wù)器上恢復(fù)Docker數(shù)據(jù)和設(shè)置權(quán)限,文中提供了詳細(xì)的命令和步驟,確保數(shù)據(jù)遷移過程順利進(jìn)行
    2024-10-10
  • jenkins中通過Publish Over SSH插件將項(xiàng)目部署到遠(yuǎn)程機(jī)器上的講解說(shuō)明

    jenkins中通過Publish Over SSH插件將項(xiàng)目部署到遠(yuǎn)程機(jī)器上的講解說(shuō)明

    今天小編就為大家分享一篇關(guān)于jenkins中通過Publish Over SSH插件將項(xiàng)目部署到遠(yuǎn)程機(jī)器上的講解說(shuō)明,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • 在Docker環(huán)境中部署和運(yùn)行One API的操作方法

    在Docker環(huán)境中部署和運(yùn)行One API的操作方法

    隨著技術(shù)的發(fā)展,API 作為服務(wù)連接的橋梁,變得越來(lái)越重要,One API 是一種流行的 API 管理平臺(tái),能夠幫助我們更好地管理、監(jiān)控和擴(kuò)展 API 服務(wù),本文給大家介紹了如何在 Docker 環(huán)境中部署和運(yùn)行 One API,需要的朋友可以參考下
    2024-11-11
  • Linux Centos下使用腳本安裝Docker的方法

    Linux Centos下使用腳本安裝Docker的方法

    這篇文章主要介紹了Linux Centos下使用腳本安裝Docker的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • docker-compose啟動(dòng)redis多機(jī)集群的實(shí)現(xiàn)(6臺(tái)服務(wù)器3主3從)

    docker-compose啟動(dòng)redis多機(jī)集群的實(shí)現(xiàn)(6臺(tái)服務(wù)器3主3從)

    本文主要介紹了docker-compose啟動(dòng)redis多機(jī)集群的實(shí)現(xiàn)(6臺(tái)服務(wù)器3主3從),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • python腳本在docker上運(yùn)行的方法

    python腳本在docker上運(yùn)行的方法

    在本篇文章里小編給各位分享的是關(guān)于python腳本在docker上運(yùn)行的方法內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2020-03-03
  • dockerfile基于apline將JDK20打包成鏡像

    dockerfile基于apline將JDK20打包成鏡像

    這篇文章主要為大家介紹了dockerfile基于apline將JDK20打包成鏡像步驟及驗(yàn)證,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-02-02
  • Dokcer部署雙主Mysql的詳細(xì)步驟

    Dokcer部署雙主Mysql的詳細(xì)步驟

    文章介紹了如何創(chuàng)建MySQL主從復(fù)制容器,并配置主從關(guān)系,主要步驟包括創(chuàng)建容器、創(chuàng)建角色、配置MySQL從數(shù)據(jù)庫(kù)以連接到主數(shù)據(jù)庫(kù),并確保配置參數(shù)正確,感興趣的朋友一起看看吧
    2025-01-01
  • 修改Docker默認(rèn)存儲(chǔ)路徑的步驟詳解

    修改Docker默認(rèn)存儲(chǔ)路徑的步驟詳解

    隨著Docker技術(shù)的廣泛應(yīng)用,它極大地簡(jiǎn)化了復(fù)雜項(xiàng)目的部署與維護(hù)流程,僅憑單一鏡像即可輕松運(yùn)行,然而,隨著數(shù)據(jù)量不斷增長(zhǎng),Docker的默認(rèn)數(shù)據(jù)存儲(chǔ)方式可能逐漸成為挑戰(zhàn),本文給大家介紹了如何修改Docker默認(rèn)存儲(chǔ)路徑,解決系統(tǒng)盤占用90%+問題,需要的朋友可以參考下
    2024-09-09
  • 使用Docker run的選項(xiàng)以覆蓋Dockerfile中的設(shè)置詳解

    使用Docker run的選項(xiàng)以覆蓋Dockerfile中的設(shè)置詳解

    今天小編就為大家分享一篇關(guān)于使用Docker run的選項(xiàng)以覆蓋Dockerfile中的設(shè)置詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10

最新評(píng)論

阜阳市| 无极县| 措美县| 阳信县| 屏边| 沙洋县| 贵州省| 明水县| 达日县| 呈贡县| 崇州市| 射洪县| 缙云县| 化隆| 历史| 锡林郭勒盟| 敦化市| 绥中县| 福泉市| 孙吴县| 册亨县| 上犹县| 南宁市| 呈贡县| 平武县| 原平市| 南部县| 永平县| 寿阳县| 文登市| 兴仁县| 湖南省| 西城区| 大关县| 大竹县| 广昌县| 郴州市| 江永县| 兰州市| 荥阳市| 龙游县|