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

一文教會你在Docker容器中實現(xiàn)Mysql主從復(fù)制

 更新時間:2022年11月29日 09:20:23   作者:小曾同學(xué).com  
MySQL的主從復(fù)制之前也沒做過,剛百度了下發(fā)現(xiàn)并不算難,所以下面這篇文章主要給大家介紹了關(guān)于在Docker容器中實現(xiàn)Mysql主從復(fù)制的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下

一 主從復(fù)制概念

在數(shù)據(jù)庫中主從復(fù)制``表示有一個主數(shù)據(jù)庫,多個從數(shù)據(jù)庫,即,主數(shù)據(jù)庫對外提供讀寫功能,從數(shù)據(jù)庫對外提供讀的功能。
Mysql默認(rèn)采用異步復(fù)制方式,這樣從節(jié)點(diǎn)不用一直訪問主服務(wù)器來更新自己的數(shù)據(jù),數(shù)據(jù)的更新可以實時在遠(yuǎn)端進(jìn)行。

二 主從復(fù)制的優(yōu)勢

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

三 Docker容器實現(xiàn)Mysql主從復(fù)制

下面開始進(jìn)入實戰(zhàn)環(huán)節(jié),一步步的教大家如何搭建主從數(shù)據(jù)庫,小伙伴趕快練習(xí)一下吧。

3.1 創(chuàng)建主服務(wù)器容器

主服務(wù)器端口號為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

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

補(bǔ)充:如果MYSQL_ROOT_PASSWORD的密碼設(shè)置為root,當(dāng)?shù)卿洈?shù)據(jù)庫時可能會報和權(quán)限相關(guān)的錯誤,所以,不妨將密碼改為數(shù)字試試,比如123456。

3.2 新建主配置文件 my.cnf

進(jìn)入/mydata/mysql-master/conf目錄下新建my.cnf,my.cnf 內(nèi)容如下:

[mysqld]
## 設(shè)置server_id,同一局域網(wǎng)中需要唯一
server_id=101
##指定不需要同步的數(shù)據(jù)庫名稱
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)制日志過期清理時間,默認(rèn)值為0,表示不自動清理
expire_logs_days=7
## 跳過主從復(fù)制中遇到的所有錯誤或指定類型的錯誤,避免slave端復(fù)制中斷。
## 如:1062 錯誤是指一些主鍵重復(fù),1032錯誤是因為主從數(shù)據(jù)庫數(shù)據(jù)不一致
slave_skip_errors=1062

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

3.3 重啟master容器實例

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

docker restart mysql-master
docker ps

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

進(jìn)入mysql-master容器,并登錄數(shù)據(jù)庫,可以看到當(dāng)前有哪些默認(rèn)的數(shù)據(jù)庫。

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

3.5 在主服務(wù)器中創(chuàng)建用戶并授權(quán)

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

3.6 創(chuàng)建從服務(wù)器容器

從服務(wù)器容器的端口號為: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

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

3.7 新建主配置文件 my.cnf

進(jìn)入/mydata/mysql-slave/conf目錄下新建my.cnf,my.cnf內(nèi)容如下:

[mysqld]
## 設(shè)置server_id,同一局域網(wǎng)中需要唯一
server_id=102
##指定不需要同步的數(shù)據(jù)庫名稱
binlog-ignore-db=mysql
##開啟二進(jìn)制日志功能,以備slave作為其他數(shù)據(jù)庫實例的master時使用
log-bin=mall-slave1-bin
## 設(shè)置二進(jìn)制日志使用內(nèi)存大小(事務(wù))
binlog_cache_size=1M
## 設(shè)置使用的二進(jìn)制日志格式(mixed,statement,row)
binlog_format=mixed
## 二進(jìn)制日志過期清理時間,默認(rèn)值為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ù)制事件寫進(jìn)自己的二進(jìn)制日志
log_slave_updates=1
## slave 設(shè)置為只讀(具有super權(quán)限的用戶除外)
read_only=1

3.8 重啟slave容器實例

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

docker restart mysql-slave
docker ps

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

在主服務(wù)器中輸入如下命令:

mysql> show master status;

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

docker exec -it mysql-slave /bin/bash

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

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;

其中,

字段含義
master_host主數(shù)據(jù)庫的IP地址
master_port主數(shù)據(jù)庫的運(yùn)行端口
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連接失敗重試的時間間隔,單位為秒

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

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

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

在從數(shù)據(jù)庫中操作,表示從數(shù)據(jù)庫同意接收數(shù)據(jù)

start slave;

3.14 查看從數(shù)據(jù)庫狀態(tài)是否同步

show slave status \G;

3.15 主從復(fù)制測試

驗證主要分為兩步,第一步在主數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù),第二步在從數(shù)據(jù)庫中查看數(shù)據(jù)。

1. 在主數(shù)據(jù)庫中新建數(shù)據(jù)庫db01,并在db01中新建表t1,并插入數(shù)據(jù)
create database db01;
use db01;
create table t1(id int,name varchar(20));
insert into t1 values(1,'zeng');

2. 在從數(shù)據(jù)庫中查詢
show databases;//會看到db01數(shù)據(jù)庫
use db01;
select * from t1;

總結(jié)

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

相關(guān)文章

  • Docker容器compose容器集群的快速編排方式

    Docker容器compose容器集群的快速編排方式

    這篇文章主要介紹了Docker容器compose容器集群的快速編排方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Docker安裝ElasticSearch和Kibana的問題及處理方法

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

    這篇文章主要介紹了Docker安裝ElasticSearch和Kibana的問題及遇到問題解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • Docker安裝RabbitMQ的超詳細(xì)步驟

    Docker安裝RabbitMQ的超詳細(xì)步驟

    RabbitMQ是一套開源的消息隊列服務(wù)軟件,是由LShift提供的一個 Advanced Message Queuing Protocol的開源實現(xiàn),由以高性能、健壯以及可伸縮性出名的 Erlang 寫成,這篇文章主要給大家介紹了關(guān)于Docker安裝RabbitMQ的超詳細(xì)步驟,需要的朋友可以參考下
    2022-08-08
  • Docker tomcat的設(shè)置內(nèi)存大小配置方式

    Docker tomcat的設(shè)置內(nèi)存大小配置方式

    這篇文章主要介紹了Docker tomcat的設(shè)置內(nèi)存大小配置方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • nginx在docker容器中自動生成配置文件

    nginx在docker容器中自動生成配置文件

    這篇文章主要介紹了nginx在docker容器中自動生成配置文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Dockerfile常用命令的使用簡介

    Dockerfile常用命令的使用簡介

    這篇文章主要介紹了Dockerfile常用命令的使用簡介,幫助大家更好的理解和學(xué)習(xí)使用Docker,感興趣的朋友可以了解下
    2021-04-04
  • docker容器日志時間不一致問題

    docker容器日志時間不一致問題

    這篇文章主要介紹了docker容器日志時間不一致問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Docker設(shè)置獲取環(huán)境變量的方法實現(xiàn)

    Docker設(shè)置獲取環(huán)境變量的方法實現(xiàn)

    本文主要介紹了Docker設(shè)置獲取環(huán)境變量的方法實現(xiàn),包含設(shè)置環(huán)境變量到使用獲取,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • 用docker搭建selenium grid分布式環(huán)境實踐之路

    用docker搭建selenium grid分布式環(huán)境實踐之路

    這篇文章主要介紹了用docker搭建selenium grid分布式環(huán)境實踐之路,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 詳解將本地docker容器遷移到服務(wù)端

    詳解將本地docker容器遷移到服務(wù)端

    這篇文章主要介紹了詳解將本地docker容器遷移到服務(wù)端,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07

最新評論