docker小白第八天

docker小白第八天

redis常规安装

前期已经配好了阿里云容器镜像加速库

docker search redis
docker pull redis:6.0.8
docker images redis:6.0.8

在这里插入图片描述
启动容器,并进入容器的命令行界面

docker run -d -p 6379:6379 redis:6.0.8
docker ps
docker exec -it 容器id /bin/bash

在这里插入图片描述
验证redis命令

redis-cli
set k1 v1
get k1

在这里插入图片描述

redis高阶安装

1、普通简单的安装在后续的使用可能会出现问题,因此需要在安装过程中进行一些配置。
2、首先删除前文刚刚安装的容器,避免干扰。

docker ps
docker stop 容器id
docker rm -f 容器id

新建个存放redis配置文件的文件夹

mkdir -p /cz/redis
在我的个人目录下新建redis配置存放文件夹

然后去找一个redis.conf文件,如果没有,可以直接先下载一个redis

wget http://download.redis.io/releases/redis-6.0.8.tar.gz
tar -xzvf redis-6.0.8.tar.gz
cd redis-6.0.8
gcc -v  查看gcc版本,redis需要gcc版本为5.3以上
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash  临时将gcc版本修改,退出再进会复原
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile 永久修改gcc版本
make install

然后可以用xftp查看此时linux系统内的文件,找到redis.conf,然后将其复制到自己上文新建的文件夹内。
在这里插入图片描述
然后找到这个文件,vim进行编辑。
需要编辑内容如下:
1、开启redis验证,防止中勒索病毒
2、允许redis外地连接,需要注释掉 bind 127.0.0.1
3、将daemonize yes 注释起来或者改为daemonize no,因为该配置和docker run中的-d冲突,会导致容器一直启动失败。
4、开启redis数据持久化 appendonly yes

然后使用redis创建容器

docker run -p 6379:6379 --name myredis --privileged=true -v /cz/redis/redis.conf:/etc/redis/redis.conf -v /cz/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf
开启容器卷最高权限,设定端口,挂载容器卷到宿主机上
docker ps
查看容器

此时创建容器成功
在这里插入图片描述
测试redis容器

docker exec -it myredis /bin/bash
redis-cli
set k1 v1
get k1

在这里插入图片描述
测试redis.conf使用了我们修改过的配置文件

select 15  执行成功
select 10  执行成功
select 18  执行失败
因为原始的redis.conf默认select最大选到16

现在我们去修改redis.conf文件,使其select最大选到10。另起一个xshell,直连到linux机器命令行,不进容器命令行界面。找到配置文件

vim redis.conf

找到databases 16,将其修改为databases 10.。然后保存文件,重启redis容器

docker restart myredis
docker exec -it myredis /bin/bash
redis-cli
get k1 验证启动正常
select 15 执行失败了
select 8 执行成功了

docker复杂安装

安装docker主从复制

新建主服务器实例3307
docker run -p 3307:3306 --name mysql-master --privileged=true -v /cz/mydata/mysql-master/log:/var/log/mysql -v /cz/mydata/mysql-master/data:/var/lib/mysql -v /cz/mydata/mysql-master/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
此处是将linux机器的3307端口与容器的3306端口做映射关系
docker ps

在这里插入图片描述

进入mysql的conf目录文件新建my.cnf
cd /cz/mydata/mysql-master/conf

在这里插入图片描述
然后vim 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

在这里插入图片描述
重启主数据库实例

docker restart mysql-master

登录数据库

docker exec -it mysql-master /bin/bash
mysql -uroot -p
创建数据库实例的时候 密码设置的是root
创建用于主从同步的用户slave

创建用户并授予一定的权限,下文在从数据库做开启主从同步设置时会用到这个用户。

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ' slave'@'%';

在这里插入图片描述

新建从服务器3308
docker run -p 3308:3306 --name mysql-slave --privileged=true -v /cz/mydata/mysql-slave/log:/var/log/mysql -v /cz/mydata/mysql-slave/data:/var/lib/mysql -v /cz/mydata/mysql-slave/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
此处是将linux机器的3308端口与容器的3306端口做映射关系
docker ps

在这里插入图片描述

进入从数据库的conf目录中配置my.cnf
cd cz/mydata/mysql-slave/conf
vim my.cnf

在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_logi配置中继日志
relay_log=mall-mysql-relay-bin
##log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
##slave设置为只读(具有super权限的用户除外)
read_only=1
重启slave实例
docker restart mysql-slave

在主数据库中查看主从同步状态

docker exec -it mysql-master /bin/bash
mysql -uroot -p
输入密码root
show master status;

可以看到主数据库相关的同步信息
在这里插入图片描述
另起一个xshell连接linux虚机,进入mysql-slave里查看主从同步状态。

docker exec -it mysql-slave /bin/bash
mysql -uroot -p
输入密码root
show master status;

从数据库内执行下命令,进行主从复制,其中各参数依据前文在主数据库查询到的信息填写。

change master to master_host='宿主机ip', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000002', master_log_pos=154, master_connect_retry=30;
# master_host:主数据库的IP地址;
# master_port:主数据库的运行端口;
# master_user:在主数据库创建的用于同步数据的用户账号;
# master_password:在主数据库创建的用于同步数据的用户密码;
# master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;
# master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数;
# master_connect_retry:连接失败重试的时间间隔,单位为秒。

从数据库查看主从同步状态

show slave status \G

关注下列两个slave,代表还没开始同步
在这里插入图片描述
从数据库中开启主从同步,启动在主数据库中创建的slave用户,并在此查看主从同步状态。

start slave;
show slave status \G

可看到已经开启了主从同步
在这里插入图片描述

主从复制测试

在主数据库新建库-使用库-新建表-插入数据,在从数据库查看记录或数据是否同步。

# 主数据库执行如下命令:
show databases;查看当前的库
create database db01;创建新库
use db01; 使用新库
create table t1(id int,name varchar(20));创建新表t1
insert into t1 values(1.'cz'); 插入数据
select * from t1; 查询t1下的数据

在这里插入图片描述
在从机执行如下命令查看

use db01;看是否已同步到了数据库db01
select * from t1; 可以看到从机中也查询到了数据

证明主从同步已经完成了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/582093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可替代 Spring,国产 Solon v2.6.3 发布

Solon 是什么框架? Java 新的"生态级"应用开发框架。从零开始构建,有自己的标准规范与开放生态(历时六年,具备全球第二级别的生态规模)。 相对于 Spring,有什么特点? 国产&#xf…

Java生态系统的进化:从JDK 1.0到今天

目录 前言 JDK 1.0:开启Java时代 JDK 1.1:Swing和内部类 JDK 1.2:Collections框架和JIT编译器 JDK 1.5:引入泛型和枚举 JDK 1.8:Lambda表达式和流 JDK 11以后:模块化和新特性 未来展望 总结 作者简…

Abaqus许可证有效期及续期方法

作为工程设计和仿真领域的知名软件,Abaqus受到广大用户青睐。然而,许可证有效期的问题常常困扰着用户。为了帮助您更好地了解Abaqus许可证有效期及续期方法,我们特别邀请了行业专家进行详细解读。 一、Abaqus许可证有效期 Abaqus许可证的有…

【2023-12-23周报】

2023-12-23周报 本周开展工作下周工作计划 本周开展工作 上线工作小程序的水印添加以及删除项目的合并以及调整更改后的项目接口上周由于我们的后端不在,所以对于我们现在的小程序项目进行了一些深入的思考这周的话和后端进行联调了后端的接口 上线的话我们为小程…

Elasticsearch 常用 REST API 之集群APIs

Cluster health API 集群运行状况API返回关于集群运行状况的简单状态。您还可以使用API仅获取指定数据流和索引的健康状态。对于数据流,API 检索流的支持索引的运行状况。 集群健康状态为:绿色、黄色和红色。在shard级别,红色状态表示集群中没有分配特…

高并发下数据库插入操作死锁问题

1. 问题: 项目中出现如下报错: org.springframework.dao.DeadlockLoserDataAccessException: com.xxxMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Deadlock found when trying to get lock; try restarting trans…

Transformer实现的一个Demo

RT,直接上代码,可以跑通: #encoding:utf-8 import torch import torch.nn as nn import numpy as np import math class Config(object): def __init__(self): self.vocab_size 6 self.d_model 512 self.n_heads 4 assert self.d_model…

UI自动化Selenium 元素定位之Xpath

一、元素定位方式 selenium中定位元素,通常有几种方式: 1、通过id定位:By.ID 2、通过Name定位:By.Name 3、通过元素其他属性定位,如class、type、text文本。。。。。。等等,如果要用属性定位那就需要使…

图论 经典例题

1 拓扑排序 对有向图的节点排序,使得对于每一条有向边 U-->V U都出现在V之前 *有环无法拓扑排序 indegree[], nxs[];//前者表示节点 i 的入度,后者表示节点 i 指向的节点 queue [] for i in range(n):if indege[i] 0: queue.add(i)// 入度为0的节…

虚析构和纯虚析构

多态使用时,如果子类中有属性开辟到堆区,那么父类的指针在释放时无法调用到子类的析构代码 解决方式:将父类中的析构代码函数改为虚析构或者纯虚析构 虚析构和纯虚析构共性: 可以解决父类指针释放子类对象 都需要有具体的函数…

[SWPUCTF 2021 新生赛]finalrce

[SWPUCTF 2021 新生赛]finalrce wp 注&#xff1a;本文参考了 NSSCTF Leaderchen 师傅的题解&#xff0c;并修补了其中些许不足。 此外&#xff0c;参考了 命令执行(RCE)面对各种过滤&#xff0c;骚姿势绕过总结 题目代码&#xff1a; <?php highlight_file(__FILE__); …

【算法练习】leetcode链表算法题合集

链表总结 增加表头元素倒数节点&#xff0c;使用快慢指针环形链表&#xff08;快慢指针&#xff09;合并有序链表&#xff0c;归并排序LRU缓存 算法题 删除链表元素 删除链表中的节点 LeetCode237. 删除链表中的节点 复制后一个节点的值&#xff0c;删除后面的节点&#x…

verilog 通过DPI-C调用C 流水灯模拟

verilog 通过DPI-C调用C简单示例&#xff0c; verillator模拟 ledloop.v module ledloop(input wire clk,output wire[3:0] LED );reg[31:0] cnt 32h00000000;always (posedge clk)cnt < cnt 1;assign LED 4b0001 << cnt[21:20]; endmodule电脑模拟较慢&#xff…

如何解决服务器CA证书过期的问题

一、问题的提出 最近在学习VPS&#xff0c;在Linux系统里给服务器安装某项服务时&#xff0c;在服务的log里看到下面的错误信息&#xff1a; failed to verify certificate: x509: certificate has expired or is not yet valid: current time 2023-12-25T04:42:38-05:00 is a…

java球队信息管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web球队信息管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5…

深度学习之RNN

1.循环神经网络 在时间t的时候&#xff0c;对于单个神经元来讲它的输出y(t)如下 wx是对于输入x的权重&#xff0c;wy是对于上一时刻输出的权重 所以循环神经网络有两个权重。 如果有很多这样的神经元并排在一起 则在t时刻的输出y为 这时输入输出都是向量 2.记忆单元 由于循…

java系列-CountDownLatch

CountDownLatch 不是一种锁&#xff0c;而是一种同步工具类&#xff0c;用于协调多个线程之间的操作。它并不是像 ReentrantLock 或 synchronized 关键字那样实现了锁定机制&#xff0c;而是通过一个计数器来实现线程的等待和通知。 具体来说&#xff0c;CountDownLatch 维护了…

车队试验的远程实时显示方案

风丘科技推出的数据远程实时显示方案更好地满足了客户对于试验车队远程实时监控的需求&#xff0c;并真正实现了试验车队的远程管理。随着新的数据记录仪软件IPEmotion RT和相应的跨平台显示解决方案的引入&#xff0c;让我们的客户端不仅可在线访问记录器系统状态&#xff0c;…

LaTeX 不同章的图片放在不同的文件夹

需求&#xff1a;在写长文档的时候&#xff0c;比如学位论文&#xff0c;每一章都有好几张图片&#xff0c;整个文档一共几十张甚至上百张图片&#xff0c;如果不分开放&#xff0c;想修改某一张图片的时候&#xff0c;找起来比较困难。所以&#xff0c;想把每一章的图片单独放…

git unable to create temporary file: No space left on device(git报错)

1.问题 1.1 vscode中npm run serve跑项目的时候&#xff0c;进度达到95%的时候一直卡着无进度&#xff1b; 1.2 git命令提交代码报错&#xff1b; 2.具体解决 这个错误通常表示你的磁盘空间已经满了&#xff0c;导致 Git 无法在临时目录中创建文件。2.1 清理磁盘空间&#xf…