自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 多服务器实现MongoDB分片集群架构

虽然mongoDB的复制集应用的场景比较多,但是也存在很多问题,比如当数据量比较大的时候,复制集是所有的数据都放在主节点,然后同步到从节点上,也就是说每个节点上都是放了所有数据的,当然也就意味着,如果数据量特别大的时候,特别是存储问题及性能问题,虽然复制集可以提可供所谓的高可用,主节点提供写操作,从节点可以分担读操作的负荷,但是写操作只能发生在主节点上,这样的话写操作的性能瓶颈是没有办法解决的,所以需要采用分片集群,分片集群即数据的分布式管理,在之前的redis cluster已经实现过,redis clu

2021-12-13 16:59:24 1105

原创 MongoDB复制集架构实现

MongoDB和MySQL一样支持类似的主从复制架构,但无法实现自动故障转移,所以官方推荐使用复制集MongoDB的复制集相当于MySQL的主从复制结合MHA,亦或是相当于redis的主从结合sentinel机制,可以自动进行故障转移,实现了数据的高可用性,异地容灾,实现灾难恢复,也无需停机维护,而且是分片式读取数据,实现了数据的读操作的负载均衡,它的最常见的角色有两个,一个是主节点primary,一个是从节点secondary,当然还有一些特殊节点arbiter仲裁,但只有投票的权利,没有被选取的资格

2021-12-08 15:03:38 1372

原创 Redis Cluster集群架构部署实现及节点的扩容和缩容

redis通过主从或者哨兵机制确实解决了单点失败问题,但是写操作都只发生在master节点,而master节点只有一个,写性能没有提升,因此,在大量的高并发场景下主从加上哨兵机制是支撑不了的,所以我们需要redis cluster来解决这个问题,redis cluster是3.0之后推出的一个技术,也就是相对偏后的一个技术,它可以很好的提升redis集群写操作的性能,也能保证服务的高可用,redis cluster的实现方案是基于所谓分布式的集群解决方案,所谓分布式就是数据不是放在单一的一个主机上,而是

2021-11-30 17:18:53 2583

原创 实现redis sentinel哨兵机制架构

redis的主从架构无法实现master和slave角色的自动切换,当master节点故障down机时,主从复制无法实现自动的故障转移,即将slave节点提升为新的master,而是需要手动修改环境配置,才能切换到redis服务器,而sentinel哨兵机制就核心的解决了因master节点故障down机,自动提升节点的问题,另外单台redis服务器性能无法满足业务写入需求的时候,也无法横向扩展redis服务的并行写入性能。在主从节点搭建之后,一主多从,访问时并不知道访问的是哪个节点,之前需加代理,现在哨

2021-11-26 10:14:47 375

原创 利用MyCat实现MySQL的读写分离架构

MyCat是基于java开发的工具,在MySQL主从复制的前面加上MyCat程序用来接收用户的请求,判断读写,写就发往master节点,读就发往slave节点,实现读写分离的基本功能。MyCat架构部署所有主机系统环境:cat /etc/centos-release服务器共三台,客户端一台10.0.0.8 mycat-server(mysql8.0.26)10.0.0.18 master(mysql8.0.26)10.0.0.28 slave(mysql8.0...

2021-11-23 10:05:44 244

原创 实现MySQL的高可用性MHA集群架构

MySQL的主从能解决读操作的可用性,如果从节点挂掉,也可以通过其他从节点继续提供读的操作,但是主节点的单点问题没有解决,因此在日常生产中会利用MHA配合主从架构来实现数据库的高可用。MHA工作逻辑:MHA会利用Select 1 As Value指令判断master服务器的健康性,一旦master down机之后,MHA从down机崩溃的master中把二进制日志保存下来,然后判断有最新数据更新的slave,数据最全的slave应用中继日志的数据差,把差异数据同步到其他slave上,使之与其数据

2021-11-20 23:48:36 2117

原创 实现MySQL数据库的主从复制架构

主从复制同步机制实现的过程及详解:master sever—>数据更新—>写入BinLog—>开启dump线程—>(slave sever)io线程—>写入relay log—>SQL线程—>数据更新主从复制的过程中会开启三个线程,其中主节点要想把自己的二进制日志同步到从节点,需要在主机点上开启一个专门用来同步二进制日志的线程,这个线程的功能就是把主节点上的二进制日志copy出来通过网络发送给从节点,这个线程叫做dump线程,有几个从节点,就要同步几次,一个

2021-11-16 17:19:38 2172

原创 关于MySQL二进制日志的实质意义

MySQL数据库中,二进制日志和其他日志差别很大,二进制日志的实际功能在于备份,在日常生产中备份非常重要,因为二进制日志里记录的是数据库的增删改的操作,它会把数据库除查询以外所有的增删改都记录在日志中,所以可以把二进制日志理解成数据备份,而不是仅仅当成一个日志,它的记录形式分三种,一种是基于语句型的记录,MariaDB10.2.3之前的版本默认都是语句型记录格式,这种形式只记录执行的命令的本身,优势是空间占用较小,记录的日志量比较少,但是由于生成的日志数量过于精简,不能够用于将来数据的还原,所以不太推荐使用

2021-11-14 21:45:25 778

原创 实现internet的DNS服务架构

DNS客户端:10.0.0.6/24本地DNS服务器(只缓存):10.0.0.8/24转发目标DNS服务器:10.0.0.18/24根DNS服务器:10.0.0.28/24org域DNS服务器:10.0.0.38/24magedu.org域主DNS服务器:10.0.0.48/24magedu.org域从DNS服务器:10.0.0.58/24www。magedu.org的WEB服务器:10.0.0.68/24在客户端配置DNS服务器地址(10.0.0.6)[root@l

2021-11-10 18:33:22 2798 2

原创 计划任务at和周期性任务计划cron

计划任务之atat命令的基本用法例如我们约定时间创建一个at.txt的文件:任务约定完之后一定要以Ctrl+d结束,才会执行约定计划因为我约定了wall广播,任务执行完之后会通知计划任务完成至于echo at job为什么没有在屏幕上打印是因为只要在计划任务中执行的标准输出是不会在屏幕上显示的,会以邮件的方式发送给你,那为什么echo不在屏幕上打印要发送邮件呢?是因为计划任务约定的是未来的事情,未来的时间系统不确定坐在终端登录的人还在不在,也许可能把窗口已经关了,或者坐在系统

2021-10-30 21:02:29 275

原创 命令并行执行的实现

我们日常在系统执行命令时都是顺序执行,效率比较低,如果命令并行执行的话,肯定会大大提高我们的工作效率,将来我们也可以利用并行执行这个技术来访问一些比较消耗资源的脚本,比如:扫描网段,当然命令并行执行的方法有很多种方法一:把需要执行的命令放到一个文件里,cmd加&符号放在后台执行cat all.shf1.sh&f2.sh&f3.sh&方法二:放到小括号里,分号隔开(f1.sh&);(f2.sh&);(f3.sh&)方法

2021-10-30 15:33:14 886

原创 程序前后台的状态切换以及nohup命令的实用小技巧

一个进程的运行有两种表现形式,一个前台运行,一个是后台运行,前台运行占用终端资源,比较典型的就是ping命令,执行ping命令之后由于不断输出,到执行结束之前,是无法执行其他命令的,后台执行的典型命令比如bash,screen,nohup,这些命令在执行过程中是不会影响其他命令操作执行的ping命令想在后台执行也可以实现,执行操作ping ip &,加上&符号之后,命令将在后台执行,当然还有一些其他的后台运行命令例如:Ctrl+z,jobs,nohup,kill如果想把后台的

2021-10-30 14:24:05 1329

原创 利用kill命令实现程序的故障自愈

相信看到kill这个单词,因为译意的原因,大家脑海中会联想到一些不好的画面,但是在Linux中,kill命令也有一些比较实用的功能,它可以用来终止一些执行中的程序,也可以用来给某个程序发送指定信号,对指定进程进行相应操作,还可以通过一些小技巧实现程序的故障自愈,先介绍一下在Linux中的一些常用的kill命令用法总结如下:kill –l 查看kill命令信号列表kill PID 终止进程(kill在不指定信号的情况下默认15信号,终止进程)kill -1 PID 刷新进程,重读配置文件(程序

2021-10-28 20:09:23 2508 1

原创 怎样恢复误删文件?

在日常生产中,有时候会误删除某个文件,如果误删的是数据库的话,数据库虽然删除了,实际上数据库里的文件仍然是被数据库的程序所占用的,在Linux里有个特点就是正在占用的文件是可以删除的,某个文件正在被占用时删除之后磁盘空间是不会立即释放的,那么我们就可以利用这个特点去恢复被删除的文件第一步,先把这个文件找到,执行命令lsof | grep delete ,就会列出系统里所有被打开的文件,其中就包括那个被删掉的文件,可以看到,你虽然删掉了这个文件,但是没有被真正的删掉,因为系统正在占用它第二步,查看被删

2021-10-28 17:19:59 588

原创 怎样找到未知进程的执行程序文件路径?

如果日常生产中某个未知进程CPU利用率特别高,而且你又没有运行过这个程序,那么要小心了,很有可能是黑客植入的一个木马程序或者是挖矿程序,如果关掉的话可能过一会儿又会持续这种情况,解决的不彻底,那么我们就要找到这些恶意程序并且干掉它首先我们先看一下这个未知程序的PID,然后执行命令ll /proc/PID/exe ,就可以看到这个程序的磁盘文件路径指向的是一个软连接,就是这个程序的真实路径,然后执行rm –rf命令删除就可以了,但是这样操作删除的可能不彻底,因为它背后可能不是一个程序,还有其他程序,而这些

2021-10-26 20:46:44 436

原创 关于awk

取出磁盘分区利用率(/dev/sda1)[19:48:50 root@localhost ~]#dfFilesystem 1K-blocks Used Available Use% Mounted ondevtmpfs 462804 0 462804 0% /devtmpfs 482772 0 482772 0% /dev/shmtmpfs...

2021-10-26 15:05:16 735

原创 screen命令与孤儿进程

孤儿进程:正常情况下,一个父进程退出,子进程也会随之而销毁,但是有一种情况,父进程终止之后,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。因为每个进程都必须体现在进程树里,父进程和子进程之间都是以树状结构的状态呈现出来的,所以这些孤儿进程就会被它的1号进程systemd来收养,systemd1就像是一个收容所,专门负责处理孤儿进程的善后工作。每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置为1号进程systemd在日常生产中,比如有一个比较大的,长时间运行的程序,例如备份,因为备

2021-10-23 17:05:26 185

原创 怎样查看进程中的线程?

怎样查看进程中的线程?执行命令street -p查看系统进程查看进程的PID然后执行命名 cat/proc/PID/status例如查看子进程915的线程Threads 4就是线程

2021-10-23 11:53:04 1844

原创 关于编写脚本时意外退出的解决办法

关于编写脚本时意外退出的解决办法我们平时编写脚本时会不小心导致系统页面关闭或者打开新窗口编写同一个脚本时会出现以下情况:因为窗口意外关闭系统会自动生成一个swp后缀的隐藏文件,先操作命令ls -a或者l.查看一下隐藏文件,然后执行rm -rf 命令删除这个swp文件,vim窗口就可以正常打开啦~注意⚠️因为是隐藏文件,删除文件时不要忘记文件以点开头哦~操作如下:...

2021-10-21 20:42:22 446 1

原创 for循环之国际象棋棋盘Tiffany蓝

for循环之国际象棋棋盘Tiffany蓝脚本如下:背景色显示:

2021-10-21 20:27:43 112

原创 for循环之国际象棋棋盘

for循环之国际象棋棋盘脚本如下:

2021-10-21 20:21:28 415

原创 关于/dev/zero文件的使用和误删

关于/dev/zero文件的使用和误删/dev/zero文件是一个特殊的字符设备文件,当我们使用或者读取它的时候,它会提供无限连续不断的空数据流(特殊的数据格式流),其中一个典型的用法就是用它提供的字符流来覆盖信息,另一个常见用法就是产生一个特定大小的空白文件。例如:生成块大小1M,含有2个块的文件提示:在使用dd 命令产生空文件时常用/dev/zero作为字符流的源利用/dev/zero文件覆盖其他文件信息创建一个新文件写入12345字符串,用空的字符流覆盖存在的2.txt文件,再cat一下,数

2021-10-21 20:01:34 4731

原创 TCP四次挥手

TCP四次挥手Client 客户端和server服务端任何一端都可以发起关闭连接请求,假如Client 发起关闭连接请求,随即会产生一个FIN=1,seq=u的值,之后进入FIN-WAIT1状态,server收到该报文后,就会向client 发送ACK=1,seq=v,ack=u+1的应答报文,等待server处理完数据后,并发送给client FIN=1,ACK=1,seq=w,ack=u+1的确认断开连接的应答报文,server进入CLOSE-WAIT状态,client进入FIN-WAIT2状态,同时

2021-10-19 19:31:59 90

原创 TCP三次握手

TCP三次握手第一次握手:client将标志位SYN置为1,表示要发起一个连接,随即产生一个值,seq =x,并将这个数据包发给server,client 随即进入SYN-SENT状态,等待server确认。第二次握手:server接到数据包后,由标志位SYN=1知道client 请求建立连接,server将SYN和ACK都置为1,随即产生一个seq=y的值,同时ack=x+1表示已收到client 的连接请求,并将该数据包发给client已确认连接请求,server随即进入SYN-RCVD状态。第三

2021-10-19 18:48:23 922

原创 添加子网卡

添加子网卡日常生产中,通常会一个网卡配多个地址格式如下:ifconfig 网卡名:子网卡名(通常为某个整数)IP地址(cida 格式)

2021-10-19 14:25:14 650

原创 关于RAID

关于RAID“RAID”一词是由David Patterson,Randy Katz于1987年在加州大学伯克利分校发明的,外1988年6月SIGMOD会议上提交的论文“A Case for Redundant Arrays of Inexpensive Disks”中提出,当时性能最好的大型机不断增长的个人电脑市场开发的一系列廉价驱动器的性能所击败,尽管故障与驱动器数量的比例会上升,但通过配置冗余,阵列的可靠性可能远远超过任何大型单个驱动器的可靠性。独立硬盘冗余阵列(RAID Redundant Ar

2021-10-19 11:40:37 317

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除