相比傳統(tǒng)的架構(gòu)設(shè)計,使用Docker來搭建數(shù)據(jù)庫的主從模式更加簡單。本節(jié)內(nèi)容,我們就Docker搭建MySql主從模式來做一些了解,文中的搭建方法僅僅是一種最簡單的方式,具體的業(yè)務(wù)場景還需要小伙伴們自行加固,本文僅做學(xué)習(xí)參考之用。
一、下載鏡像文件
出于對系統(tǒng)的穩(wěn)定性和減少部署麻煩,本文使用MySql5.7的版本來做演示。
docker pull mysql:5.7.25
二、運行容器實例
1、主庫docker run -p 3306:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.25
2、從庫 docker run -p 3307:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.25
三、容器安裝vim(文本編輯器)
因需要修改mysql中的my.cnf文件,所以安裝vim來修改。當然你也可以使用其他方式來修改
/etc/mysql/my.cnf這個配置文件。
1、進入容器實例內(nèi)部控制終端docker exec -it 容器id/bin/bash
2、執(zhí)行指令mv /etc/apt/sources.list /etc/apt/sources.list.bak
3、執(zhí)行指令
echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free" >/etc/apt/sources.list
echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free" >>/etc/apt/sources.list
echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free" >>/etc/apt/sources.list
echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free" >>/etc/apt/sources.list
4、執(zhí)行指令 apt-get update
5、執(zhí)行指令 apt-get install vim
6、在主庫中執(zhí)行show master status;,記錄一下File字段的值和Position字段的值。
7、在主庫創(chuàng)建用戶并賦予權(quán)限
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
8、cd到/etc/mysql/目錄下,執(zhí)行 vim my.cnf
9、修改配置文件,添加如下配置
[mysqld]
server-id=1000
log-bin=mysql-bin
10、重啟主庫和容器
service mysql restart
docker start mymysql-master
11、修改從庫配置文件并重啟mysql
server-id=1001
log-bin=mysql-slave-bin
relay_log=edu-mysql-relay-bin
12、進入從庫命令模式,執(zhí)行如下指令
如果不清楚主庫的容器ip,可以使用
docker inspect id/名稱來查看。正常情況下容器實例的ip其實是動態(tài)獲取的,所以建議使用自定義網(wǎng)絡(luò)來設(shè)置固定ip;
change master to master_host='172.17.0.4', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 617, master_connect_retry=30;
13、開啟主從同步過程
在從庫的mysql命令行中執(zhí)行。
start slave
14、查看主從同步狀態(tài)
show slave status \G
四、測試主從同步
PS:在主庫中新建數(shù)據(jù)庫,看從庫是否能同步過來。