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

使用Docker容器搭建MySql主從復(fù)制

 更新時(shí)間:2016年11月22日 11:07:20   作者:zhangchao19890805  
這篇文章主要介紹了使用Docker容器搭建MySql主從復(fù)制的相關(guān)資料,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

1. 編寫(xiě)主MySQL的Docker文件

新建文件夾,命名為MySQL-master-v1。在文件夾mysql-master-v1中新建文件Dockerfile和master.cnf。筆者推薦使用的編輯器是Visual Studio Code。利用編輯器將這兩個(gè)文件的編碼設(shè)置成UTF-8。因?yàn)楸疚慕榻B安裝到Linux系統(tǒng)下,所以筆者建議讀者把換行符設(shè)置成LF,以兼顧Linux操作系統(tǒng)。按照如下內(nèi)容編寫(xiě)這兩個(gè)文件。

Dockerfile

FROM mysql:5.7
# set timezone as china/shanghai
RUN cp /usr/share/zoneinfo/PRC /etc/localtime
# copy mysql config file
COPY master.cnf /etc/mysql/conf.d/
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 3306
CMD ["mysqld"]

master.cnf

user=root
password='123456'
[mysqld]
max_allowed_packet=8M
lower_case_table_names=1
character_set_server=utf8
max_connections=900
max_connect_errors=600
server-id=1
log-bin=mysql-bin
replicate-wild-do-table=db1.%
replicate-wild-do-table=db2.%
slow_query_log=1
long_query_time=1
log_error

2. 主MySQL的配置文件參數(shù)說(shuō)明

解釋一下master.cnf。

lower_case_table_names:忽略表名、列名等數(shù)據(jù)結(jié)構(gòu)的大小寫(xiě)(注意:不是每行記錄內(nèi)容的大小寫(xiě)?。?/p>

server-id=1: 表示此MySQL服務(wù)器是主服務(wù)器 。

log-bin:開(kāi)啟二進(jìn)制記錄。這是為了主從復(fù)制而做的設(shè)置。本文使用RBR(Row-Based Replication)模式。

replicate-wild-do-table:規(guī)定有哪些表可以從主服務(wù)器復(fù)制到從服務(wù)器。db1.%是指只要是數(shù)據(jù)庫(kù)db1的表,就都可以復(fù)制到從服務(wù)器上??梢远鄺l設(shè)置,來(lái)允許多個(gè)數(shù)據(jù)庫(kù)。

沒(méi)有使用replicate-do-db是因?yàn)閞eplicate-do-db禁止跨數(shù)據(jù)庫(kù)的訪問(wèn)。比如用戶已經(jīng)使用use db2;選擇了數(shù)據(jù)庫(kù)db2,用戶還要執(zhí)行update db1.t_student set c_name='stu_c' where c_id='1234c',那么就不能使用replicate-do-db。在編程的時(shí)候雖然程序員不會(huì)用到use,但是程序員有可能把連接mysql的url寫(xiě)成指定某個(gè)數(shù)據(jù)庫(kù)或沒(méi)有指定具體的數(shù)據(jù)庫(kù)。即便沒(méi)有指定數(shù)據(jù)庫(kù),使用replicate-do-db也是不允許的。

slow_query_log=1:開(kāi)啟慢查詢?nèi)罩?。如果某一條SQL執(zhí)行的時(shí)間超過(guò)long_query_time設(shè)置的秒數(shù),那么就記錄下來(lái)。記錄文件路徑可以使用show variables;命令,在變量名是slow_query_log_file下查找到具體的日志文件路徑。

long_query_time=1:?jiǎn)挝皇敲?。指如果某一條SQL語(yǔ)句執(zhí)行時(shí)間超過(guò)1秒,就記錄下來(lái)。必須開(kāi)啟慢查詢?nèi)罩玖艘院?,此變量才能使用?/p>

log_error:開(kāi)啟錯(cuò)誤日志。show variables like 'log_error'; 就可以查詢到日志文件的路徑。mysql的Docker官方鏡像如果設(shè)置別的取值會(huì)導(dǎo)致容器無(wú)法正常啟動(dòng)。

3. 生成并使用主MySQL的鏡像

上傳文件夾mysql-master-v1到Linux服務(wù)器上。為了便于說(shuō)明,用服務(wù)器A來(lái)指代這臺(tái)服務(wù)器。筆者的Linux版本是Ubuntu14.04。通過(guò)cd命令進(jìn)入目錄mysql-master-v1。然后輸入以下命令來(lái)編譯鏡像:

docker build -t zhangchao/mysql-master5.7:v1 .

注意不要落下行末尾最后一個(gè)點(diǎn)。

根據(jù)編譯好的鏡像,生成新的容器:

docker run --name mysql-master \
-p 3306:3306 \
-v /zc/mysql-master/datadir:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD='123456' -d zhangchao/mysql-master5.7:v1

使用MySQL的客戶端連接MySQL主服務(wù)器,筆者使用的是MySQL Workbench。執(zhí)行如下命令:

show master status;

記錄下file和position。這里假設(shè)file是mysql-bin.000001,post是154。

4. 編寫(xiě)從MySQL的Docker文件

新建文件夾 mysql-slave-v1。仿照步驟1在文件夾 mysql-slave-v1下新建 Dockerfile 和 slave.cnf 兩個(gè)文件。下面是這兩個(gè)文件的內(nèi)容。

Dockerfile

FROM mysql:5.7
# set timezone as china/shanghai
RUN cp /usr/share/zoneinfo/PRC /etc/localtime
# copy mysql config file
COPY slave.cnf /etc/mysql/conf.d/
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 3306
CMD ["mysqld"]

slave.cnf

[mysqldump]
user=root
password='123456'
[mysqld]
max_allowed_packet=8M
lower_case_table_names=1
character_set_server=utf8
max_connections=900
max_connect_errors=600
slow_query_log=1
long_query_time=1
log_error
# Regard this db as a slave
server-id=2

slave.cnf 文件中的 server-id=2 會(huì)把MySQL服務(wù)器設(shè)置成從服務(wù)器。

5. 生成并使用從MySQL的鏡像

上傳 mysql-slave-v1 到第二臺(tái)服務(wù)器。用服務(wù)器B來(lái)指代這臺(tái)服務(wù)器。

編譯鏡像:

docker build -t zhangchao/mysql-slave5.7:v1 .

利用新的鏡像建立容器:

docker run --name mysql-slave \
-p 3306:3306 \
-v /zc/mysql-slave/datadir:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD='123456' -d zhangchao/mysql-slave5.7:v1

這時(shí)MySQL的主從服務(wù)器都在運(yùn)行中,需要讀者自行保證兩邊的數(shù)據(jù)相同。只有當(dāng)兩臺(tái)服務(wù)器的數(shù)據(jù)都一樣的時(shí)候,才能建立主從復(fù)制連接。

6. 把從MySQL連接到主MySQL上

使用客戶端連接到MySQL從服務(wù)器,假定服務(wù)器A的IP是192.168.10.1。

執(zhí)行如下命令:

change master to 
master_host='192.168.10.1',
master_user='root',
master_password='123456',
master_log_file='mysql-bin.000001',
master_log_pos=154;

待命令正常執(zhí)行后,接著執(zhí)行如下命令:

start slave;

這樣就可以主從復(fù)制了。只要在主服務(wù)器的db1和db2數(shù)據(jù)庫(kù)插入或修改數(shù)據(jù),就可以自動(dòng)復(fù)制到從服務(wù)器上了。

以上所述是小編給大家介紹的使用Docker容器搭建MySql主從復(fù)制,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Docker容器/bin/bash?start.sh無(wú)法找到not?found問(wèn)題解決

    Docker容器/bin/bash?start.sh無(wú)法找到not?found問(wèn)題解決

    最近在學(xué)習(xí)聯(lián)系中遇到一個(gè)問(wèn)題,百度后發(fā)現(xiàn)這個(gè)需求還是挺常見(jiàn)的,所以下面這篇文章主要給大家介紹了關(guān)于Docker容器/bin/bash?start.sh無(wú)法找到not?found問(wèn)題的解決方法,需要的朋友可以參考下
    2022-08-08
  • 解決docker run后容器出現(xiàn)Exited (0)情況的問(wèn)題

    解決docker run后容器出現(xiàn)Exited (0)情況的問(wèn)題

    這篇文章主要介紹了解決docker run后容器出現(xiàn)Exited (0)情況的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • docker?nginx(訪問(wèn)靜態(tài)文件、訪問(wèn)共享目錄、負(fù)載均衡)配置方式

    docker?nginx(訪問(wèn)靜態(tài)文件、訪問(wèn)共享目錄、負(fù)載均衡)配置方式

    這篇文章主要介紹了docker?nginx(訪問(wèn)靜態(tài)文件、訪問(wèn)共享目錄、負(fù)載均衡)配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 從零搭建docker+jenkins+node.js自動(dòng)化部署環(huán)境的方法

    從零搭建docker+jenkins+node.js自動(dòng)化部署環(huán)境的方法

    這篇文章主要介紹了從零搭建docker+jenkins+node.js自動(dòng)化部署環(huán)境的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Docker利用busybox創(chuàng)建基礎(chǔ)鏡像(base image)

    Docker利用busybox創(chuàng)建基礎(chǔ)鏡像(base image)

    今天小編就為大家分享一篇關(guān)于Docker利用busybox創(chuàng)建基礎(chǔ)鏡像(base image),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • docker打包前端項(xiàng)目的實(shí)現(xiàn)示例

    docker打包前端項(xiàng)目的實(shí)現(xiàn)示例

    本文介紹了如何將前端項(xiàng)目打包到Docker容器中,包括編寫(xiě)Dockerfile文件、創(chuàng)建鏡像和容器以及解決部署過(guò)程中遇到的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-09-09
  • Docker?文件系統(tǒng)-AUFS?原理介紹

    Docker?文件系統(tǒng)-AUFS?原理介紹

    這篇文章主要介紹了Docker?文件系統(tǒng)-AUFS原理,Docker?主要是基于?Namespace、cgroups?和聯(lián)合文件系統(tǒng)這三大核心技術(shù)實(shí)現(xiàn)的,下文相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-04-04
  • 如何解決docker logs無(wú)法實(shí)時(shí)輸出腳本打印的內(nèi)容

    如何解決docker logs無(wú)法實(shí)時(shí)輸出腳本打印的內(nèi)容

    這篇文章主要介紹了如何解決docker logs無(wú)法實(shí)時(shí)輸出腳本打印的內(nèi)容問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • docker安裝java環(huán)境的實(shí)現(xiàn)步驟

    docker安裝java環(huán)境的實(shí)現(xiàn)步驟

    這篇文章主要介紹了docker安裝java環(huán)境的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • docker?pull?mysql報(bào)missing?signature?key錯(cuò)誤解決辦法

    docker?pull?mysql報(bào)missing?signature?key錯(cuò)誤解決辦法

    這篇文章主要給大家介紹了關(guān)于docker?pull?mysql報(bào)missing?signature?key錯(cuò)誤的解決辦法,docker pull mysql命令用于從Docker Hub下載MySQL鏡像,需要的朋友可以參考下
    2023-11-11

最新評(píng)論