DATABASE笔记
内存数据库 Redis Memercache 常规数据库 Mysql Oracle Mogodb Sqlserver 对文件,图片,二进制数据不存储在数据库: 1.数据库备份变大,耗时长。 2.大字段加重数据库负担,拖慢数据库,不适合大并发。 3.增加复杂度。对文件的访问需要穿越你的应用层和数据库层。 ...
内存数据库 Redis Memercache 常规数据库 Mysql Oracle Mogodb Sqlserver 对文件,图片,二进制数据不存储在数据库: 1.数据库备份变大,耗时长。 2.大字段加重数据库负担,拖慢数据库,不适合大并发。 3.增加复杂度。对文件的访问需要穿越你的应用层和数据库层。 ...
解决方法: 清空原数据目录 该节点已经被引导,可能是因为之前这个节点已经加入过集群了,但配置失败,在启动参数那里设置的是new,所以需要将new修改为existing。编辑etcd.service 文件,–initial-cluster-state existing更新 如果初始化集群有多个节点,确保所有节点数据目录清空,集群改为new,依次重启每个节点服务,直到所有服务正常。 ...
netplan、networkctl、nmcli 以及 systemd-networkd 是Linux系统中用于配置和管理网络的不同工具和服务,他们各自有不同的作用和使用情景。 netplan: 目的:netplan是一个基于YAML的网络配置抽象层,用于统一不同的网络配置服务(如NetworkManager和systemd-networkd)的配置方式。 配置文件:通常位于/etc/netplan/目录下,使用YAML格式。 工作方式:用户编辑YAML文件,netplan将这些配置转换为底层网络管理器(如NetworkManager或systemd-networkd)可以理解的配置。 适用环境:主要用于Ubuntu 17.10及以后版本。 networkctl: 目的:是systemd-networkd的命令行前端,用于查询和控制systemd-networkd管理的网络状态。 命令:可以查看网络接口的状态、配置等信息。 工作方式:作为systemd-networkd的辅助工具,直接与systemd-networkd的状态和配置进行交互。 适用环境:适合于使用systemd-networkd作为网络管理器的系统。 nmcli: 目的:是NetworkManager的命令行界面,用于配置和管理NetworkManager服务。 命令:可以进行网络连接的添加、修改、删除、激活和非激活等操作。 工作方式:直接与NetworkManager的守护进程进行交互,不依赖于其他配置文件,虽然也可以管理和查看/etc/NetworkManager/目录下的配置。 适用环境:广泛用于各种Linux发行版,尤其适合桌面环境和需要频繁更改网络设置的场景。 systemd-networkd: 目的:是一个系统服务,用于配置网络设备和连接。 配置文件:通常位于/etc/systemd/network/目录下。 工作方式:在系统启动时(或服务启动时)应用配置,管理网络接口。 适用环境:适合于服务器或容器环境,以及对于稳定性和轻量级配置有较高要求的场景。 systemctl 命令的区别 systemctl restart systemd-networkd:重启systemd-networkd服务,会重新应用/etc/systemd/network/目录下的配置。 systemctl restart networking:这通常是基于ifupdown的旧式网络管理脚本在Debian和Ubuntu上的服务名称,用于重启传统的网络服务。 systemctl restart network:在基于Red Hat的系统上,如CentOS和Fedora,这个命令会重启传统的网络服务(在这些系统中,System V之前的/etc/init.d/network脚本或与其相对应的systemd服务)。 他们之间的关系 netplan 可以配置以 systemd-networkd 或者 NetworkManager 为后端的网络设置。 networkctl 是 systemd-networkd 的配套工具,用于查看由 systemd-networkd 管理的网络接口的状态。 nmcli 是 NetworkManager 的命令行工具,用于配置和控制 NetworkManager。 systemd-networkd、networking、和 network 是Linux系统中可能的不同网络服务,具体使用哪一个取决于系统配置和发行版。通过systemctl重启这些服务可以应用新的网络配置或者重置网络连接。 Red Hat Linux / CentOS 系列网络配置文件路径: - /etc/sysconfig/network-scripts/ifcfg-ethX # IP地址,子网掩码等配置文件<br> - /etc/sysconfig/network-scripts/ifcfg-lo # 回环网卡配置<br> - /etc/sysconfig/network # 主机名和网关配置文件<br> - /etc/resolv.conf # DNS配置文件<br> - /etc/hosts # 主机和IP绑定信息<br> suse Linux 网络配置文件路径: - /etc/sysconfig/network/ifcfg-eth-id-HWaddr # IP地址,子网掩码等配置文件<br> - /etc/HOSTNAME # 全局主机名配置<br> - /etc/resolv.conf # DNS配置文件<br> - /etc/sysconfig/network/routes # 网关配置文件<br> - /etc/hosts # 主机和IP绑定信息<br> Debian / Ubuntu Linux 网络配置文件路径: ubuntu从17.10开始,已放弃在/etc/network/interfaces里固定IP的配置,即使配置也不会生效,而是改成netplan方式 ,配置写在/etc/netplan/的yaml文件里 ...
logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。例如,你可以设置logrotate,让/var/log/foo日志文件每30天轮循,并删除超过6个月的日志。配置完后,logrotate的运作完全自动化,不必进行任何进一步的人为干预 ...
kubernetes组件: etcd 一个高可用的K/V键值对存储和服务发现系统 flannel 实现夸主机的容器网络的通信 kube-apiserver 提供kubernetes集群的API调用 kube-controller-manager 确保集群服务,控制器群 kube-scheduler 调度容器,分配到Node。调度器,大大缓解了APISERVER入口压力 kubelet 在Node节点上按照配置文件中定义的容器规格启动容器 kube-proxy 提供网络代理服务 master etcd kube-apiserver kube-controller-manage kube-scheduler node kube-proxy kubelet 节点加入集群 #重新生成新的token kubeadm token create kubeadm token list #获取ca证书sha256编码hash值 openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' #节点加入集群 kubeadm reset kubeadm join 192.168.38.11:6443 --token c9afga.w3fue0yh3gzxczic --discovery-token-ca-cert-hash sha256:8b79b6461e58c07333cb2851fe74fd4374af8bbbe0bf7e040b415b86ad4fb89d #查看节点 kubectl get nodes 新加入master节点 kubeadm join 192.168.0.200:6443 --token 9vr73a.a8uxyaju799qwdjv --discovery-token-ca-cert-hash sha256:7c2e69131a36ae2a042a339b33381c6d0d43887e2de83720eff5359e26aec866 --control-plane --certificate-key f8902e114ef118304e561c3ecd4d0b543adc226b7a07f675f56564185ffe0c07 #- 这个 --control-plane 命令通知 kubeadm join 创建一个新的控制平面。 #- --certificate-key ... 将导致从集群中的 kubeadm-certs 秘钥下载控制平面证书并使用给定的密钥进行解密。 监控工具 ctop ...
PersistentVolume 卷可以用资源提供者所支持的任何方式挂载到宿主系统上。 如下表所示,提供者(驱动)的能力不同,每个 PV 卷的访问模式都会设置为 对应卷所支持的模式值。 例如,NFS 可以支持多个读写客户,但是某个特定的 NFS PV 卷可能在服务器 上以只读的方式导出。每个 PV 卷都会获得自身的访问模式集合,描述的是 特定 PV 卷的能力。 访问模式有: ...
top常用配置项 z 开启高亮 x 开启排序加亮模式 t cpu展示模式 m mem展示模式 P 按CPU排序 M 按MEM排序 T 按TIME排序 V 开启tree模式 v 列出子进程 1 显示所有内核 c 显示具体命令而不是进程名称 f 筛选排序,显示列 shift+> shift+<改变排序列 Cpu(s): 0.0 us: 用户空间占用CPU百分比 0.3 sy: 内核(系统)空间占用CPU百分比 0.0 ni: 用户进程空间内改变过优先级的进程占用CPU百分比 99.7 id: 空闲CPU百分比 0.0 wa: 等待输入输出的CPU时间百分比 0.0 hi: 硬件CPU中断占用百分比 0.0 si: 软中断占用百分比 0.0 st: 虚拟机(虚拟化技术)占用百分比 --- us: is meaning of "user CPU time" sy: is meaning of "system CPU time" ni: is meaning of" nice CPU time" id: is meaning of "idle" wa: is meaning of "iowait" hi:is meaning of "hardware irq" si: is meaning of "software irq" st: is meaning of "steal time" top - 11:45:01 up 21 days, 23:57, 2 users, load average: 0.00, 0.00, 0.00 Tasks: 241 total, 1 running, 240 sleeping, 0 stopped, 0 zombie ...
字体颜色: 30m-37m 黑、红、绿、黄、蓝、紫、青、白 echo -e "\033[30m ${str}\033[0m" ## 黑色字体 echo -e "\033[31m ${str}\033[0m" ## 红色 echo -e "\033[32m ${str}\033[0m" ## 绿色 echo -e "\033[33m ${str}\033[0m" ## 黄色 echo -e "\033[34m ${str}\033[0m" ## 蓝色 echo -e "\033[35m ${str}\033[0m" ## 紫色 echo -e "\033[36m ${str}\033[0m" ## 青色 echo -e "\033[37m ${str}\033[0m" ## 白色 背景颜色: 40-47 黑、红、绿、黄、蓝、紫、青、白 ...
KILL PKILL KILLALL $ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS SIGKILL(9) 不能被捕获,用户不能注册自己的handler SIGTERM(15) 允许用户注册自己的handler,kill命令缺省发出 kill根据pid结束 pkill根据进程名批量结束 killall根据进程名批量结束 kill默认发送 15(TERM)信号终止进程 查看dd命令进度,发送USR1信号,dd命令收到回打出进度 watch -n 1 killall -USR1 dd每一秒打印dd进度 ...
层级 RADOS 分布式存储相较于传统分布式存储的优势在于: 将文件映射到object后,利用Cluster Map 通过CRUSH 计算而不是查找表方式定位文件数据存储到存储设备的具体位置。优化了传统文件到块的映射和Block MAp的管理。 RADOS充分利用OSD的智能特点,将部分任务授权给OSD,最大程度地实现可扩展。 对象寻址过程 PGID=POOL_ID+HASH(OBJ_ID)%PG_NUM 对象的id 通过hash映射,然后用PG总数对hash值取模得到pg id CRUSH(PGID) => OSD 通过crush算法计算PG 上的对象分布到哪些OSD硬盘上 CRUSH算法的希望达成的目标: 数据均匀的分布到集群中; 需要考虑各个OSD权重的不同(根据读写性能的差异,磁盘的容量的大小差异等设置不同的权重); 当有OSD损坏需要数据迁移时,数据的迁移量尽可能的少; CRUSH 算法 CRUSH_HASH(PGID,OSDID,R) = DRAW 输入PG id、可供选择的OSD id 列表,和一个常量,通过一个伪随机算法,得到一个随机数,伪随机算法保证了同一个key总是得到相同的随机数,从而保证每次计算的存储位置不会改变 (DRAW &0xffff) * OSD_WEIGHT = OSD_STRAW 将上面得到的随机数和每个OSD的权重相乘,然后挑出乘积最大的那个OSD 样本容量足够大后,随机数对挑中结果不影响,OSD权重起决定作用,权重越大,挑中概率越大。 通过随机算法让数据均衡分布,乘以权重让挑选的结果考虑了权重;而如果出现故障OSD,只需要恢复这个OSD上的数据,不在这个节点上的数据不需移动 ...