Mysql数据备份与恢复
备份 - 从数据库导出数据:格式:mysqldump -h链接ip -P(大写)端口 -u用户名 -p密码数据库名 > d:XX.sql(路径) 示例:mysqldump -h132.72.192.432 -P3307 -uroot -p8888 htgl > bak.sql 备份导出示例:1、导出数据和表结构——将特定数据库特定表中的数据和表格结构和数据全部返回 1mysqldump --u b_user -h 101.3.20.33 -p'H_password' -P3306 database_di up_subjects > 0101_0630_up_subjects.sql 2、导出表结构却不导出表数据——只返回特定数据库特定表格的表格结构,不返回数据,添加“-d”命令参数 1mysqldump --u b_user -h 101.3.20.33 -p'H_password' -P3306 -d database_di up_subjects > 0101_0630_up_subjects.sql ...
mysql导入导出
导入导出csv文件 常用参数 12345常用参数(导入和导出的常用参数一致):FIELDS TERMINATED BY ',':指定字段分隔符OPTIONALLY ENCLOSED BY '"':认为双引号中的是一个独立的字段。Excel 转 CSV 时,有特殊字符(逗号、顿号等)的字段,会自动用双引号引起来LINES TERMINATED BY '\n':指定行分隔符,默认'\n'。注意,在 Windows 平台上创建的文件,分隔符是 '\r\n' 先检查是否开启允许导入 1show variables like '%secure%'; 导入12345678LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE db2.my_table;LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE db2.my_table FIELDS TER...
记录因group_concat函数长度限制引起的问题
首先项目里有一条类似这样的sql 123456789101112131415161718select tr.xxx tr.cm_ids, group_concat(te.xxx) a, group_concat(te.xxx) b, group_concat(te.xxx) c, group_concat(te.xxx) d,from (select tr.1, tr.2, tr.3, group_concat(cm_id) cm_ids from xxx tr where tr.xxx = '123' group by tr.1,tr.2,tr.3) tr left join xxx tc on tr.xxx = tc.xxx left join xxx te on tr.xxx = te.xxxgroup by tr.1,tr.2...
记录工作中遇到慢sql的情况和解决办法(长期)
left join查询加where条件, 用到了索引, 但是仍然几乎全表扫, explain-type为index, 用到的索引为联合索引,但where条件字段不符合最左原则(例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找), 所以最后解决办法是建立了条件字段的索引 单表同时查询多个字段和聚合函数的时候, 建立一个聚合索引(包含聚合函数字段)可能比单个字段索引效率要高(单个字段会回表)
k8s-secret安全加密
Secret介绍 k8s secrets用于存储和管理一些敏感数据,比如密码,token,密钥等敏感信息。它把 Pod 想要访问的加密数据存放到 Etcd 中。然后用户就可以通过在 Pod 的容器里挂载 Volume 的方式或者环境变量的方式访问到这些 Secret 里保存的信息了。 Secret有三种类型Opaque 1base64 编码格式的 Secret,用来存储密码、密钥等;但数据也可以通过base64 –decode解码得到原始数据,所有加密性很弱。 Service Account(暂时没用过) 1用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的 /run/secrets/kubernetes.io/serviceaccount 目录中。 kubernetes.io/dockerconfigjson 1用来拉取私有库镜像的认证信息(比如nexus或者habor等) Opaque类型 base64加密(--wrap=0表示不换行输出)echo -n 'xiaowu' | base64 --wr...
kubectl port-forward
kubectl port-forward 是 Kubernetes 提供的一个命令行工具,它允许你从本地机器转发一个或多个端口到 Kubernetes 集群中的 Pod。这个功能在开发和调试应用程序时非常有用,因为它可以让你直接访问集群中的服务,而不需要通过 Kubernetes 的服务发现和负载均衡机制。 使用 kubectl port-forward 的一些常见场景包括: 快速访问服务:当开发者需要迅速检查集群内部署的服务是否正常运行时,他们可以直接将该服务的端口转发到本地机器来访问。 调试应用:如果开发者需要调试集群内部的应用程序,在该应用程序没有暴露为服务或者没有外部IP时,port-forward 可以提供一个快速的解决方案。 数据库调试:对于涉及数据库的服务,port-forward 允许开发者使用本地数据库客户端工具连接到集群中的数据库 Pod,进行调试和查询操作。 基本语法为: 1kubectl port-forward TYPE/NAME [options] LOCAL_PORT:REMOTE_PORT TYPE/NAME 是指定的资源类型和名称,例如 ...
MapStruct的使用
MapStruct是一个代码生成库,简化了Java对象到Java对象之间的映射过程。通过注解接口,它可以自动生成转换代码,支持多种映射场景,如属性映射、定制方法、目标对象更新等。此外,还支持数据类型转换、嵌套对象映射和使用上下文对象定制转换。在Spring项目中,可通过Maven/Gradle依赖和配置进行集成。 注:MapStruct 从版本 1.2.0.Beta1 开始支持与 Lombok 整合,利用 Lombok 生成的 getter、setter 和构造函数来生成映射实现。 配置Maven1234567891011121314151617181920212223242526272829303132<dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>${mapstruct.version}</version><...
关于nf_conntrack以及xx of conntrack entries are used问题
Kubernetes 节点将conntrack_max值与节点上的 RAM 大小成比例地设置。高负载应用(尤其是在小型节点上)很容易超过conntrack_max,并导致连接复位和超时。 理论conntrack 是建立在 Netlifier 框架之上的功能。它对于高性能的 Kubernetes 复杂网络至关重要,其中节点需要跟踪数千个 Pod 和服务之间的连接信息。 在 Kubernetes 中, 默认值可以在 prometheus 指标中找到node_nf_conntrack_entries_limit(需要node_exporter) linux系统中可以通过以下指令查看【当然如果未配置过的话,默认值会以该公式「CONNTRACK_MAX = 内存 (bytes) / 16384 / (多少位 / 32)」计算出默认值】:sysctl net.netfilter.nf_conntrack_max conntrack_max值与节点的内存成正比,通常聚合代理类服务会需要持续跟踪大量连接【消耗大量的conntrack entries...
Optional开发中记录
首先,Optional是一个容器,用于放置可能为空的值,它可以合理而优雅的处理null。 不合适的使用方式 直接使用 isPresent() 进行 if 检查 -- isPresent()一般用于流处理的结尾,用于判断是否符合条件。 在方法参数中使用 Optional public void getUser(long uid, Optional<> userType); -- X 直接使用 Optional.get -- 和不做任何空判断一样,十分危险 使用在 POJO 中 -- 给序列化带来麻烦 记录一些API12345678910111213141516171819202122232425262728291. empty()返回一个Optional容器对象,而不是 null。建议常用⭐⭐⭐⭐2. of(T value)创建一个Optional对象,如果 value 是 null,则抛出 NPE。不建议用⭐⭐3. ofNullable(T value)同上,创建一个Optional对象,但 value 为空时返回Optional.empty()...
各层对象含义
PO(Persistant Object) 持久对象用于表示数据库中的一条记录映射成的 java 对象。PO 仅仅用于表示数据,没有任何数据操作。通常遵守 Java Bean 的规范,拥有 getter/setter 方法。 可以理解是一个PO就是数据库中的一条记录;可以理解某个事务依赖的原始数据;好处是可以将一条记录最为一个对象处理,可以方便转化为其他对象 POJO (Plain Old Java Object)POJO是“Plain Ordinary Java Object”的缩写,意为“简单的Java对象”。POJO通常指的是一个没有任何限制、继承或实现特定接口的普通Java对象。POJO对象通常是一种轻量级的Java对象,没有任何框架或者注解的依赖。在Java开发中,POJO对象通常用于表示简单的数据模型或者数据传输对象。最基本的 Java Bean 只有属性加上属性的 get 和 set 方法。可以转化为 PO、DTO、VO;比如 POJO 在传输过程中就是 DTO。 BO(Business Object) 业务对象封装对象、复杂对象,里面可能包含多个类主要作...
