" />

欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1、新建mysql-master主服務(wù)器容器實例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

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

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

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

3 重啟master實例

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

docker restart mysql-master

 

4 進入mysql-master容器

進入mysql-master容器并登錄數(shù)據(jù)庫,密碼是容器啟動的時候我們在命令行指定的。

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

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

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

6 新建mysql-slave從服務(wù)器實例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 進入/usr/local/mysql-slave/conf目錄下新建my.cnf

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

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

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

docker restart mysql-slave

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

show master status;

10 進入mysql-slave容器 

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

11 在從數(shù)據(jù)庫中配置主從復(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ù)說明: 

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

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

show slave status\G;

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

start slave;

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

show slave status \G;

15 主從復(fù)制測試

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

從庫查看庫、查看記錄,看主從同步是否成功

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

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

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

 造成我無法正常訪問數(shù)據(jù)庫的原因,是本地的防火墻服務(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ù)器因錯誤停止的恢復(fù) —Slave_SQL_Running: No

先stop slave,然后執(zhí)行了一下提示的語句,再
 > 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é)點執(zhí)行,獲取日志文件和post

mysql > show master status;

slave節(jié)點進行重新綁定

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

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

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

相關(guān)文章

  • Docker容器連接實現(xiàn)步驟解析

    Docker容器連接實現(xiàn)步驟解析

    這篇文章主要介紹了Docker容器連接實現(xiàn)步驟解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • docker容器動態(tài)添加端口號的方法

    docker容器動態(tài)添加端口號的方法

    這篇文章主要介紹了docker容器動態(tài)添加端口號的方法,本文分步驟給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • Docker上傳鏡像至私有倉庫的方法示例

    Docker上傳鏡像至私有倉庫的方法示例

    這篇文章主要介紹了Docker上傳鏡像至私有倉庫的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Rancher+Docker+SpringBoot實現(xiàn)微服務(wù)部署、擴容、環(huán)境監(jiān)控

    Rancher+Docker+SpringBoot實現(xiàn)微服務(wù)部署、擴容、環(huán)境監(jiān)控

    Rancher?是一套容器管理平臺,可以在生產(chǎn)環(huán)境中快捷的部署和管理容器,方便的對容器進行cpu內(nèi)存環(huán)境監(jiān)控、日志監(jiān)控、擴容縮容,自動重啟,這篇文章主要介紹了Rancher+Docker+SpringBoot實現(xiàn)微服務(wù)部署、擴容、環(huán)境監(jiān)控,需要的朋友可以參考下
    2022-04-04
  • IntelliJ IDEA(2018版)安裝docker插件的詳細過程

    IntelliJ IDEA(2018版)安裝docker插件的詳細過程

    這篇文章主要介紹了IntelliJ IDEA安裝docker插件的詳細過程,開發(fā)工具使用的是IDEA2018.16版,本文通過圖文實例相結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下
    2021-09-09
  • docker安裝elastic?search的詳細過程

    docker安裝elastic?search的詳細過程

    這篇文章主要介紹了docker安裝elastic?search的相關(guān)知識,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • Docker 提交倉庫的方法

    Docker 提交倉庫的方法

    這篇文章主要介紹了Docker 提交倉庫的方法,把我們東西上傳DockerHub,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Docker 教程之數(shù)據(jù)管理詳細介紹

    Docker 教程之數(shù)據(jù)管理詳細介紹

    這篇文章主要介紹了Docker 教程之數(shù)據(jù)管理詳細介紹的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Docker堆棧的管理操作詳解

    Docker堆棧的管理操作詳解

    這篇文章主要介紹了Docker堆棧的管理操作,結(jié)合實例形式分析了Docker堆棧管理相關(guān)的新服務(wù)添加、部署、數(shù)據(jù)持久化等操作技巧與注意事項,需要的朋友可以參考下
    2018-06-06
  • docker exec執(zhí)行多個命令的操作

    docker exec執(zhí)行多個命令的操作

    這篇文章主要介紹了docker exec執(zhí)行多個命令的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03

最新評論