docker搭建主从服务器

docker搭建主从服务器

安装好docker之后就要开始搭建主从服务器了安装的文章请看连接=》
https://blog.csdn.net/weixin_45519387/article/details/104585588

1、首先要启动两个容器一个是主的一个是从的.

1.master是主,这里的端口号选择的是3339

docker run -p 3339:3306 --name jxc-mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d daocloud.io/library/mysql:5.7 

1.master是从,这里的端口号选择的是3340

docker run -p 3340:3306 --name jxc-mysql-slave-e MYSQL_ROOT_PASSWORD=123456 -d daocloud.io/library/mysql:5.7 

因为docker容器是相互独立的,每个容器有其独立的ip,所以不同容器使用相同的端口并不会冲突。这里我们应该尽量使用mysql默认的3306端口,否则可能会出现无法通过ip连接docker容器内mysql的问题。

使用docker ps查看正在运行的容器(docker ps -a 查看所有容器)

命令查看正在运行的容器:
在这里插入图片描述
mark
如果查询正在运行中的容器列表为空或者没有显示我们想找到的容器 运行以下命令
docker ps -a
查看所有容器(报考运行中和没有运行中的容器)

根据容器id 启动 容器
docker start f97112809a95

启动之后可以使用sqlYog测试一下是否能连接上 注意关闭防火墙

2、进入主容器Master

docker exec -it 627a2368c865  /bin/bash

命令进入到Master容器内部,也可以通过

docker exec -it jxc-mysql-master  /bin/bash

命令进入。627a2368c865是容器的id,而jxc-mysql-master是容器的名称。

cd /etc/mysql

切换到/etc/mysql目录下,然后
vi my.cnf

对my.cnf进行编辑。此时会报出 bash: vi: command not found,
需要我们在docker容器内部自行安装vim。使用
(这里是国外的地址,推荐往下看用国内的)

apt-get install vim
命令安装vim
会出现如下问题:
Reading package lists... Done Building dependency tree        Reading state information... Done E: Unable to locate package vim
执行
apt-get update
,然后再次执行
apt-get install vim

采用国内下载的方式快的惊人


mv /etc/apt/sources.list /etc/apt/sources.list.bak && \
echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list && \
echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list && \
echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list && \
echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
现在就能安装软件了:
apt-get update 
apt-get install vim -y

3、即可成功安装vim。然后我们就可以使用vim编辑my.cnf,在my.cnf中添加如下配置:

[mysqld] ## 同一局域网内注意要唯一
server-id=100 ## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
配置完成之后,需要重启mysql服务使配置生效。使用
在这里插入图片描述

service mysql restart

完成重启。重启mysql服务时会使得docker容器停止,我们还需要启动容器

docker start jxc-mysql-master

4、下一步在Master数据库创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据(在连接MySQL的工具中做)。

CREATE USER 'slave'@'%' IDENTIFIED BY 'root';GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
如果报错请用一下方式解决
select version(),@@sql_mode;SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

5、配置Slave(从)

也是需要安装vi!!!**回上一步按照教程完成!

在Slave配置文件(切换到/etc/mysql目录下)my.cnf中添加如下配置:

[mysqld] ## 设置server_id,注意要唯一
server-id=101 ## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin ## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
在这里插入图片描述

配置完成后也需要重启mysql服务和docker容器,
配置完成之后,需要重启mysql服务使配置生效。使用
service mysql restart
完成重启。重启mysql服务时会使得docker容器停止,我们还需要
docker start jxc-mysql-slave
操作和配置Master(主)一致。

6、链接Master(主)和Slave(从)

在Master进入mysql,执行

show master status;

在这里插入图片描述
mark
File和Position字段的值后面将会用到,在后面的操作完成之前,需要保证Master库不能做任何操作,否则将会引起状态变化,File和Position字段的值变化。
在Slave 中进入 mysql,执行

change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 154, master_connect_retry=30;

命令说明:
master_host :Master的地址,指的是容器的独立ip,可以通过

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id

查询容器的ip
在这里插入图片描述
master_port:Master的端口号,指的是容器的端口号
master_user:用于数据同步的用户
master_password:用于同步的用户的密码
master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒

如果报错请用一下方式解决
select version(), @@sql_mode;SET sql_mode=(SELECT REPLACE(@@sql_mode,‘ONLY_FULL_GROUP_BY’,’’));

在Slave 中的mysql终端执行
show slave status ;用于查看主从同步状态。
在这里插入图片描述

正常情况下,SlaveIORunning 和 SlaveSQLRunning 都是No,因为我们还没有开启主从复制过程。使用

start slave

开启主从复制过程,然后再次查询主从同步状态show slave status
在这里插入图片描述
SlaveIORunning 和 SlaveSQLRunning 都是Yes,说明主从复制已经开启。此时可以测试数据同步是否成功。

在这里插入图片描述
使用start slave开启主从复制过程后,如果SlaveIORunning一直是Connecting,则说明主从复制一直处于连接状态,这种情况一般是下面几种原因造成的,我们可以根据 Last_IO_Error提示予以排除。
网络不通
检查ip,端口
密码不对
检查是否创建用于同步的用户和用户密码是否正确
pos不对
检查Master的 Position
参考:
在master那边,执行:flush logs;show master status;记下File, Position。在slave端,执行:CHANGE MASTER TO MASTER_LOG_FILE=‘testdbbinlog.000008’,MASTER_LOG_POS=107;slave start;show slave status \G一切正常。

测试主从复制
测试主从复制方式就十分多了,最简单的是在Master创建一个数据库,然后检查Slave是否存在此数据库。
Master:

在这里插入图片描述

Slave:

在这里插入图片描述

下载的时候要胆大心细、下面更新mycat的文章

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Docker MySQL主从是一种数据库复制技术,通过在Docker容器中创建MySQL实例来实现主从同步。这种技术可以使数据在主数据库上的变化自动同步到从数据库上,确保数据的一致性和高可用性。 在创建Docker MySQL主从时,首先需要关闭防火墙并重启Docker以确保后续安装的MySQL可以正常启动。接下来,需要在Docker中创建并启动MySQL服务器,通过端口映射将宿主机的端口与Docker容器内的MySQL服务器端口绑定。同时,还需要指定MySQL的配置文件和数据存储路径,并设置MySQL的root密码。 创建主服务器的命令示例为: 引用: ```bash docker run -d \ -p 3306:3306 \ -v /hitd/mysql/master/conf:/etc/mysql/conf.d \ -v /hitd/mysql/master/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ --name hitd-mysql-master \ mysql:8.0.29 ``` 引用: ```bash 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 ``` 然后,需要创建MySQL服务器的配置文件,并配置日志、数据和配置文件的路径。 最后,可以通过进入从数据库容器并使用MySQL客户端工具查看主从同步状态。 引用: ```bash docker exec -it mysql-slave /bin/bash mysql -uroot -proot ``` 通过以上步骤,你可以成功创建Docker MySQL主从环境。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Docker搭建MySQL主从同步(全网最全保姆教程)](https://blog.csdn.net/qq_49619863/article/details/128047193)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【Docker 基础教程】Mysql主从环境搭建](https://blog.csdn.net/apple_51931783/article/details/126350430)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值