首页 > 数据库 >Docker搭建Mysql主从机制

Docker搭建Mysql主从机制

时间:2023-10-04 16:56:06浏览次数:48  
标签:bin 容器 Mysql redis 主从 master mysql docker Docker

Mysql 主从复制

1 基础准备

由于家境贫寒没有那么多的云资源供我操作,只能使用docker进行模拟了。拉取镜像简单得很就先不谈了。直接开整。

以下操作基于 mysql:5.7进行一主二从配置。

2 主库配置

  1. 运行容器
docker run -p 3306:3306 --name mysql-slaver-2 -e MYSQL_ROOT_PASSWORD=luanye-harlon@mysql -d mysql:8.0.20
  1. 进入容器
docker exec -it  容器id /bin/bash
  1. 进入配置目录
cd /etc/mysql

由于容器都是精简版本,所以没有 vim 为了方便操作配置文件,所以这里安装一下 vim

image-20220527143257205

安装vim的命令:

apt-get update

apt-get install vim
  1. 编辑my.cnf
[mysqld]
#mysql 服务ID,保证整个集群环境中唯一,取值范围:1 – 232-1,默认为1 
server-id=1 

#是否只读,1 代表只读, 0 代表读写 
read-only=0 

#忽略的数据, 指不需要同步的数据库 
#binlog-ignore-db=mysql 

#指定同步的数据库 
#binlog-do-db=db01

## 开启二进制日志功能,可以随便取(关键)
log-bin=master-bin
binlog-format=ROW 
  1. 重新服务
service mysql restart

# 由于 mysql 重启,会导致 docker 容器停止运行,所以需要重启docker
exit
docker restart mysql-master
  1. 创建远程登录用户
docker exec -it 容器id /bin/bash

CREATE USER 'harlon'@'%' IDENTIFIED WITH mysql_native_password BY 'luanye-harlon@mysql';

#为 shenzizia 赋予权限
GRANT REPLICATION SLAVE ON *.* TO 'harlon'@'%';

3 从库配置

创建容器过程类似,这里就省略了。。。

  1. 编辑my.cnf
[mysqld]
## 设置server_id,注意要唯一
server-id=101  
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin   
## relay_log配置中继日志
relay_log=mysql-relay-bin  
read_only=1  ## 设置为只读,该项如果不设置,表示slave可读可写
  1. 查看master二进制日志信息
show master status
  1. 查询 master 的ip
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称 | 容器id查询容器的IP
  1. 远程登录
change master to master_host='172.17.0.2', master_user='harlon', master_password='luanye-harlon@mysql', master_port=3306, master_log_file='mysql-bin.000002', master_log_pos=156, master_connect_retry=30;


  1. 查看主从同步状态
show slave status \G
  1. 重新设置主从设置
reset master;

3.1 二从

同上

docker run -p 6379:6379 --name redis -v /usr/local/docker/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

标签:bin,容器,Mysql,redis,主从,master,mysql,docker,Docker
From: https://www.cnblogs.com/shenzizai/p/17742445.html

相关文章

  • Mysql - 函数
    目录字符串函数数值函数日期函数字符串函数案例:企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0,比如:1号员工的工号应该为00001updateempsetworkno=LPAD(workno,5,'0');效果:需要注意的是workno需要是varchar类型数值函数案例:通过数据库的函数,生成一个6位......
  • IntelliJ IDEA 解决连接MYSQL失败问题
    省流版:mysql-connector-java-8.0.13.jar应该出现在下面三个地方:①web-WEB-INF-lib②Database连接时(一般会自动下载)③apache-tomcat-8.0.32-lib 在自己的项目里找到web-WEB-INF-lib,检查一下有没有驱动包  如果没有mysql-connector-java-8.0.13.jar需要下载一个然后在F......
  • 使用docker部署jenkins和gitlab
    万字干货!使用docker部署jenkins和gitlab 万字原创文章!本文将实现通过docker部署Jenkins与GitLab,并自动化发布应用:本地机器将代码推送到GitLab,GitLab通过webhook触发Jenkins流水线,Jenkins获取GitLab的代码并生成jar包,将jar包推送到应用服务器,并运行ja......
  • 2.MySQL的基本命令
    netstartmysql数据库重启netstopmysql强行停止数据库服务mysql-uroot-p进入数据库exit退出-u代表用户名,这之间可以用空格,空格也代表一个字符,但是仅对密码有效-p代表密码p后面如果跟空格也会算作一个字符......
  • 主从+哨兵搭建注意实现
    Redis主从复制模式下,一旦主节点出现了故障不可达,需要人工干预进行故障转移,无论对于Redis的应用方还是运维方都带来了很大的不便。对于应用方来说无法及时感知到主节点的变化,必然会造成一定的写数据丢失和读数据错误,甚至可能造成应用方服务不可用。对于Redis的运维方来说,整个故障......
  • dockerfile 由于公钥不可用,无法验证以下签名
    报错当我在打包docker镜像时,发生了报错$sudodockerbuild-tdcgm-exporter:3.2.5.1.772Thefollowingsignaturescouldn'tbeverifiedbecausethepublickeyisnotavailable:NO_PUBKEYA4B469963BF863CC……42.77W:GPGerror:https://developer.download.......
  • java——mysql随笔——运维——分库分表&MyCat
    分库分表:                    介绍:                    拆分方式:                                     ......
  • Java JDBC连接数据库的CURD操作(JDK1.8 + MySQL8.0.33 + mysql-connector-java-8.0.27-
    JDBC概述JDBC(JavaDatabaseConnectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,(java.sql,javax.sql)使用这些类库可以以一种标准的方法、方便地访问数据库资源。JDBC为访问不同的数据库提供了一......
  • MySQL聚合函数及分组查询
    本文列举数据库的聚合函数及分组查询的实际使用,以员工表和部门表作为举例:部门表:dept点击查看创建部门表sqlcreate table `dept`  (  `deptno` int(2) not null,  `dname` varchar(14),  `loc` varchar(13),  primary key (`deptno`));员工表:emp点击查......
  • MYSQL数据库基础
    目录1.数据库概念1.1数据库是干嘛的?1.2数据库和数据结构是啥关系?​1.3两种类型的数据库2.MySQL数据库2.1MySQL数据库概念2.2MySQL基本操作 2.2.1建立数据库 2.2.2查看数据库 2.2.3选中数据库 2.2.4删除数据库2.3MySQL数据类型1.数据库概念1.......