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

docker實(shí)現(xiàn)MySQL的主從復(fù)制

 更新時(shí)間:2024年01月07日 11:49:57   作者:我是小水水啊  
在學(xué)習(xí)項(xiàng)目的時(shí)候?qū)崿F(xiàn)讀寫(xiě)分離用到了主從復(fù)制,但是一般要實(shí)現(xiàn)的話(huà)需要虛擬機(jī)或服務(wù)器非常麻煩,但是docker可以完美解決這一問(wèn)題,本文主要介紹了docker實(shí)現(xiàn)MySQL的主從復(fù)制,感興趣的可以了解一下

什么是主從復(fù)制

MySQL 主從復(fù)制是指數(shù)據(jù)可以從一個(gè)MySQL數(shù)據(jù)庫(kù)服務(wù)器主節(jié)點(diǎn)復(fù)制到一個(gè)或多個(gè)從節(jié)點(diǎn)。MySQL 默認(rèn)采用異步復(fù)制方式,這樣從節(jié)點(diǎn)不用一直訪(fǎng)問(wèn)主服務(wù)器來(lái)更新自己的數(shù)據(jù),數(shù)據(jù)的更新可以在遠(yuǎn)程連接上進(jìn)行,從節(jié)點(diǎn)可以復(fù)制主數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)庫(kù)或者特定的數(shù)據(jù)庫(kù),或者特定的表。

為什么主從復(fù)制

  • 在業(yè)務(wù)復(fù)雜的系統(tǒng)中,有這么一個(gè)情景,有一句sql語(yǔ)句需要鎖表,導(dǎo)致暫時(shí)不能使用讀的服務(wù),那么就很影響運(yùn)行中的業(yè)務(wù),使用主從復(fù)制,讓主庫(kù)負(fù)責(zé)寫(xiě),從庫(kù)負(fù)責(zé)讀,這樣,即使主庫(kù)出現(xiàn)了鎖表的情景,通過(guò)讀從庫(kù)也可以保證業(yè)務(wù)的正常運(yùn)行。
  • 做數(shù)據(jù)的熱備,主庫(kù)宕機(jī)后能夠及時(shí)替換主庫(kù),保證業(yè)務(wù)可用性。
  • 架構(gòu)的擴(kuò)展。業(yè)務(wù)量越來(lái)越大,I/O訪(fǎng)問(wèn)頻率過(guò)高,單機(jī)無(wú)法滿(mǎn)足,此時(shí)做多庫(kù)的存儲(chǔ),降低磁盤(pán)I/O訪(fǎng)問(wèn)的頻率,提高單個(gè)機(jī)器的I/O性能。

搭建步驟

1.拉取鏡像

docker pull mysql:5.7

2.運(yùn)行主從

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

在這里插入圖片描述

3.進(jìn)入/mydata/mysql-master/conf目錄下新建my.cnf

在主機(jī)下:

cd  /mydata/mysql-master/conf
vim my.cnf
[mysqld]

## 設(shè)置server_id,同一局域網(wǎng)中需要唯一

server_id=101 

## 指定不需要同步的數(shù)據(jù)庫(kù)名稱(chēng)

binlog-ignore-db=mysql  

## 開(kāi)啟二進(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)制日志過(guò)期清理時(shí)間。默認(rèn)值為0,表示不自動(dòng)清理。

expire_logs_days=7  

## 跳過(guò)主從復(fù)制中遇到的所有錯(cuò)誤或指定類(lèi)型的錯(cuò)誤,避免slave端復(fù)制中斷。

## 如:1062錯(cuò)誤是指一些主鍵重復(fù),1032錯(cuò)誤是因?yàn)橹鲝臄?shù)據(jù)庫(kù)數(shù)據(jù)不一致

slave_skip_errors=1062

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

docker restart mysql-master

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

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

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

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';


GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

7.新建從服務(wù)器容器實(shí)例3308

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

8./mydata/mysql-slave/conf目錄下新建my.cnf

cd /mydata/mysql-slave/conf
vim my.cnf
[mysqld]

## 設(shè)置server_id,同一局域網(wǎng)中需要唯一

server_id=102

## 指定不需要同步的數(shù)據(jù)庫(kù)名稱(chēng)

binlog-ignore-db=mysql  

## 開(kāi)啟二進(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)制日志過(guò)期清理時(shí)間。默認(rèn)值為0,表示不自動(dòng)清理。

expire_logs_days=7  

## 跳過(guò)主從復(fù)制中遇到的所有錯(cuò)誤或指定類(lèi)型的錯(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ù)制事件寫(xiě)進(jìn)自己的二進(jìn)制日志

log_slave_updates=1  

## slave設(shè)置為只讀(具有super權(quán)限的用戶(hù)除外)

read_only=1

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

docker restart mysql-slave

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

show master status;

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

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

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

change master to master_host='192.168.196.100', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=617, master_connect_retry=30;
master_host:主數(shù)據(jù)庫(kù)的IP地址;

master_port:主數(shù)據(jù)庫(kù)的運(yùn)行端口;

master_user:在主數(shù)據(jù)庫(kù)創(chuàng)建的用于同步數(shù)據(jù)的用戶(hù)賬號(hào);

master_password:在主數(shù)據(jù)庫(kù)創(chuàng)建的用于同步數(shù)據(jù)的用戶(hù)密碼;

master_log_file:指定從數(shù)據(jù)庫(kù)要復(fù)制數(shù)據(jù)的日志文件,通過(guò)查看主數(shù)據(jù)的狀態(tài),獲取File參數(shù);

master_log_pos:指定從數(shù)據(jù)庫(kù)從哪個(gè)位置開(kāi)始復(fù)制數(shù)據(jù),通過(guò)查看主數(shù)據(jù)的狀態(tài),獲取Position參數(shù);

master_connect_retry:連接失敗重試的時(shí)間間隔,單位為秒。


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

show slave status \G;

在這里插入圖片描述

14,在從數(shù)據(jù)庫(kù)中開(kāi)啟主從同步

mysql>start slave;

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

show slave status \G;
show master status \G;

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

主機(jī)新建庫(kù)-使用庫(kù)-新建表-插入數(shù)據(jù)
從機(jī)使用庫(kù)-查看記錄

-- 創(chuàng)建數(shù)據(jù)庫(kù)
CREATE DATABASE test;

-- 切換到 test 數(shù)據(jù)庫(kù)
USE test;

-- 創(chuàng)建表 test_table
CREATE TABLE test_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    age INT
);

-- 插入數(shù)據(jù)
INSERT INTO test_table (name, age) VALUES
    ('John Doe', 25),
    ('Jane Smith', 30),
    ('Bob Johnson', 22);

-- 查詢(xún)插入的數(shù)據(jù)
SELECT * FROM test_table;

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

相關(guān)文章

  • .netcore 使用surging框架發(fā)布到docker

    .netcore 使用surging框架發(fā)布到docker

    這篇文章主要介紹了netcore 使用surging框架發(fā)布到docker,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • 微信小程序Docker+Nginx環(huán)境配置業(yè)務(wù)域名驗(yàn)證文件的操作方法

    微信小程序Docker+Nginx環(huán)境配置業(yè)務(wù)域名驗(yàn)證文件的操作方法

    本文介紹了如何在DockerCompose+Nginx環(huán)境下配置并訪(fǎng)問(wèn)靜態(tài)驗(yàn)證文件,首先下載驗(yàn)證文件并將其掛載到容器中,然后修改Nginx配置文件使其能夠正確返回請(qǐng)求路徑下的靜態(tài)文件,最后,測(cè)試訪(fǎng)問(wèn)驗(yàn)證文件并提交業(yè)務(wù)域名,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • Docker安裝Nginx問(wèn)題及錯(cuò)誤分析

    Docker安裝Nginx問(wèn)題及錯(cuò)誤分析

    這篇文章主要介紹了Docker安裝Nginx的問(wèn)題及錯(cuò)誤分析正確的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • docker安裝使用系列之交叉編譯詳解

    docker安裝使用系列之交叉編譯詳解

    在x86平臺(tái)上使用Docker實(shí)現(xiàn)跨平臺(tái)編譯ARM端程序,需要安裝Docker,拉取包含ARM工具鏈的鏡像,啟動(dòng)QEMU支持,并使用相應(yīng)的Dockerfile進(jìn)行構(gòu)建,構(gòu)建完成后,可以運(yùn)行并測(cè)試ARM程序,導(dǎo)出所需文件,若在ARM平臺(tái)運(yùn)行x86鏡像,需使用Rosetta2等工具
    2024-10-10
  • 如何解決docker-compose網(wǎng)段路由沖突,docker-compose自定義網(wǎng)絡(luò)

    如何解決docker-compose網(wǎng)段路由沖突,docker-compose自定義網(wǎng)絡(luò)

    這篇文章主要介紹了如何解決docker-compose網(wǎng)段路由沖突,docker-compose自定義網(wǎng)絡(luò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Docker常用的清除容器鏡像命令小結(jié)

    Docker常用的清除容器鏡像命令小結(jié)

    這篇文章主要給大家總結(jié)了Docker常用的清除容器鏡像命令,相信對(duì)大家的學(xué)習(xí)和工作具有一定的參考借鑒價(jià)值,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2016-12-12
  • 解決Mac下 docker 無(wú)法 ping 通宿主機(jī)的問(wèn)題

    解決Mac下 docker 無(wú)法 ping 通宿主機(jī)的問(wèn)題

    這篇文章主要介紹了解決Mac下 docker 無(wú)法 ping 通宿主機(jī)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • 兩小時(shí)入門(mén)Docker教程實(shí)踐

    兩小時(shí)入門(mén)Docker教程實(shí)踐

    這篇文章主要介紹了兩小時(shí)入門(mén)Docker教程實(shí)踐,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • windows server 2016安裝docker的方法步驟

    windows server 2016安裝docker的方法步驟

    這篇文章主要介紹了windows server 2016安裝docker的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • 如何解決mysql配置文件錯(cuò)誤導(dǎo)致在docker中無(wú)法啟動(dòng)的問(wèn)題

    如何解決mysql配置文件錯(cuò)誤導(dǎo)致在docker中無(wú)法啟動(dòng)的問(wèn)題

    這篇文章主要介紹了如何解決mysql配置文件錯(cuò)誤導(dǎo)致在docker中無(wú)法啟動(dòng)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評(píng)論