Docker安装tomcat-mysql-redis-主从复制-集群

一:安装软件的步骤

  • 搜索镜像
  • 拉取镜像
  • 查看镜像
  • 启动镜像
  • 停止镜像
  • 移除容器

二:Docker安装tomcat

#查找
 docker search tomcat
#下载
docker pull tomcat:8.5
#查看是否成功下载
docker images tomcat
#运行
docker run -d -p8080:8080 --name tom tomcat:8.5
ps:后台运行,暴露映射端口8080启动tomcat:805,名字时tom
  • 无法访问
    在这里插入图片描述
  • 解决办法
- 进入到tomcat中
docker exec -it 7e60b291c9f8  /bin/bash

在这里插入图片描述

  • 因为webapp中没有文件,所以会出现无法访问的情况
    在这里插入图片描述
#删除webapps
 rm -rf webapps

 mv webapps.dist/ webapps
 重新访问,就发新有了

在这里插入图片描述

三:Docker安装mysql

#拉取镜像
docker pull mysql:5.7

#查看
docker images 

#启动mysql 映射端口和root密码 和容器卷
docker run -d -p 3306:3306 --privileged=true -v /usr/local/mysql/log:/var/log/mysql -v/usr/local/mysql/data:/var/lib/mysql -v/usr/local/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123321 --name mysql mysql:5.7

# 在/usr/local/mysql/conf 新建my.cnf
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8

# 重启mysql
docker restart d7b25905c9f2

#进入到Mysql
docker exec -it d7b25905c9f2 /bin/bash

在这里插入图片描述

  • 测试数据备份
- 删除容器
 docker rm -f  d7b25905c9f2
- 重新启动,因为有数据卷所以数据可以同步
docker run -d -p 3306:3306 --privileged=true -v /usr/local/mysql/log:/var/log/mysql -v/usr/local/mysql/data:/var/lib/mysql -v/usr/local/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123321 --name mysql mysql:5.7
  • 数据还存在
    在这里插入图片描述

四:Docker安装redis`

#拉取镜像
 docker pull redis:6.0.8
#查看
 docker images
#在/usr/local/redis新建redis.conf ,将自己之前安装的redis.conf拷贝一份
#修改配置文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#启动
docker run -d -p 6379:6379  --privileged=true -v/usr/local/redis/redis.conf:/etc/redis/redis.conf -v/usr/local/redis/data:/data  redis:6.2 redis-server /etc/redis/redis.conf

#进入容器
docker exec -it e67f6b18bce8 /bin/bash
#
 redis-cli
  • 测试
    在这里插入图片描述
  • 在本机的redis.conf文件配置为10个
    在这里插入图片描述
  • 重启 docker restart e67f6b18bce8
    在这里插入图片描述
  • 说明修改生效,redis是加载的本机的配置文件
  • 如果想远程访问需要将
    在这里插入图片描述
  • 其他知识
bind 0.0.0.0 #改成0.0.0.0,使redis可以外部访问

daemonize no   #用守护线程的方式启动

requirepass 你的密码   #给redis设置密码

appendonly yes   #redis持久化  默认是no

五:Docker安装mysql的主从复制

#在/usr/local/mysqlmaster/conf  目录下新建一个my.cnf文件
[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=101 
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql  
## 开启二进制日志功能
log-bin=mall-mysql-bin  
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M  
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7  
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
#复制上去


#先启一个映射端口3307的
docker run -d -p 3307:3306 --privileged=true -v /usr/local/mysqlmaster/log:/var/log/mysql -v/usr/local/mysqlmaster/data:/var/lib/mysql -v/usr/local/mysqlmaster/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123321 --name mysqlmaster mysql:5.7


# 通过容器id进入
docker exec -it 02f3d0806236  /bin/bash


在这里插入图片描述

#授权连接 在mysql的图像化界面运行两行命令
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
#- 配置从机 在/usr/local/mysqlslave/conf创建文件my.cnf

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql  
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mall-mysql-slave1-bin  
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M  
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7  
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062  
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin  
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1  
## slave设置为只读(具有super权限的用户除外)
read_only=1
#复制进去
#在开启一台mysql3308
docker run -d -p 3308:3306 --privileged=true -v /usr/local/mysqlslave/log:/var/log/mysql -v/usr/local/mysqlslave/data:/var/lib/mysql -v/usr/local/mysqlslave/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123321 --name mysqlslaver mysql:5.7
  • 在主服务器查看主从同步的状态
  • show MASTER STATUS
    在这里插入图片描述
  • 连接从服务器
    在这里插入图片描述
#在从机上运行
change master to master_host='宿主机ip', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=617, master_connect_retry=30;
例:
change master to master_host='192.168.116.126', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=2654, master_connect_retry=30;

ps:踩坑
master_user
master_password
master_log_file
master_log_pos 这四个参数一定要合主机对应
主从复制说明:
master_host:主数据库的IP地址;
master_port:主数据库的运行端口;
master_user:在主数据库创建的用于同步数据的用户账号;
master_password:在主数据库创建的用于同步数据的用户密码;
master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;
master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数;
master_connect_retry:连接失败重试的时间间隔,单位为秒。
 
#在从服务开启主从复制
start slave

-这样就算成功了
在这里插入图片描述

  • 新建库表 同步完成
    在这里插入图片描述

六:Docker安装redis集群

  • 等过两天在写累了
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值