栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

一些常见的服务员原理

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一些常见的服务员原理

原理

MySQL

mysql主从复制原理:

(1)master服务器将数据的改变记录二进制binlog日志,当master上的数据发生改变时,则将其改变写入二进制日志中;
(2)slave服务器会在一定时间间隔内对master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/OThread请求master二进制事件
(3)同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中,从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致,最后I/OThread和SQLThread将进入睡眠状态,等待下一次被唤醒。

mysql主从怎么实现:
分别修改主从数据库的配置文件my.ini,然后在master上创建一个专门用于复制的账户, 这个新增的账户可以在表mysql.user中进行查询, 我第一次操作的时候,到这里就完成了这个账号的创建,
但是到真正复制的时候,却发现复制没有成功,排查错误的时候发现master生成的binlong没有问题,然后查看slave的状态, 在结尾处有这样一行错误: 使用weidai这个账号无法连接到master,所以应该是没有获取到master的binlog,导致中继日志无法生成。我反复检查了账号和密码都没有发现问题,然后查找相关资料,才发现是因为在master创建新用户的时候少了一步操作:新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表,否则会出现拒绝访问。 这就是出现前面错误的原因。另外还有一种办法是重新启动mysql服务器,来使新设置生效。
获取主数据库中此刻数据的位置,主要用于从数据启动后,复制数据的起始位置,但是在获取这个状态值之前,主数据库就不能再有数据的修改操作,所以需要先设置读锁定有效
主库进行数据备份,备份结束后可以释放读锁,主库就可以进行写操作
启动从数据库,对刚才备份的数据进行还原,这个时候主从数据库在备份那个时间点的数据是一致的。
在从数据库上进行复制行为的相关配置
这个时候配置完成,但是还需要启动slave线程,否则从数据库不能进行同步,
在master中创建表和新增数据,在slave中观察: 可以看出,我在master中进行的操作,都能在slave中体现出来,这个时候slave就如同是master的镜子一样。

主从同步状态解读,在slave上使用命令进行查看:show slave status;

flannel工作原理:

数据从源容器中发出后,经由所在主机的docker0虚拟网卡转发到flannel0虚拟网卡,这是个P2P的虚拟网卡,flanneld服务监听在网卡的另外一端。
Flannel通过Etcd服务维护了一张节点间的路由表,详细记录了各节点子网网段 。
源主机的flanneld服务将原本的数据内容UDP封装后根据自己的路由表投递给目的节点的flanneld服务,数据到达以后被解包,然后直接进入目的节点的flannel0虚拟网卡,然后被转发到目的主机的docker0虚拟网卡,最后就像本机容器通信一下的有docker0路由到达目标容器。
kubernetes Pod创建 的 工作流程:
第一步:
kubectl 向api server 发起一个create pod 请求
第二步:
api server接收到pod创建请求后,不会去直接创建pod,而是生成一个包含创建信息的yaml。
第三步:
apiserver 将刚才的yaml信息写入etcd数据库。到此为止仅仅是在etcd中添加了一条记录, 还没有任何的实质性进展。
第四步:
scheduler 查看 k8s api ,类似于通知机制。
首先判断:pod.spec.Node == null?
若为null,表示这个Pod请求是新来的,需要创建;因此先进行调度计算,找到最“闲”的node。
然后将信息在etcd数据库中更新分配结果:pod.spec.Node = nodeA (设置一个具体的节点)
ps:同样上述操作的各种信息也要写到etcd数据库中中。
第五步:
kubelet 通过监测etcd数据库(即不停地看etcd中的记录),发现api server 中有了个新的Node;
如果这条记录中的Node与自己的编号相同(即这个Pod由scheduler分配给自己了);
则调用node中的docker api,创建container。

CentOS6和CentOS7的区别:

防火墙规则:[CentOS6] iptables, [CentOS7] firewalld
服务启动命令:[CentOS6]servic,[CentOS7]systemctl
网卡:[CentOS6]eth0,[CentOS7]ens33
ipconfig 变成了 ip addr
Mysql存储原理:

1.连接池:最上层负责和客户端进行连接,比如jdbc,odbj这样的数据库连接的API,在这一层有连接池的概念,类似于线程池,连接池可以同时处理很多个数据库请求。同时这一层有SSL的安全概念,可以确保连接是安全的;
2.SQL接口:当SQL语句进入MySQL后,会先到SQL接口中,这一层是封装层,将传过来的SQL语句拆散,将底层的结果封装成SQL的数据格式;
3.解析器:这一层负责将SQL语句进行拆分,验证,如果语句有问题那么就返回错误,如果没问题就继续向下执行;
4.优化器:对SQL查询的结果优化处理,产生多种执行计划,最终数据库会选择最优化的方案去执行,尽快返会结果。比如select a,b from c where d。在这里会先查询c表中符合d的数据并将他们的ab项进行投影,返回结果,并不会直接把整张表查出来;
5.缓存:对要查询的SQL语句进行hash后缓存,如果下一次是相同的查询语句,则在SQL接口之后直接返回结果;
6.存储引擎:MySQL有很多种存储引擎,每一种存储引擎有不同的特性,他们负责组织文件的存放形式,位置,访问文件的方法等等。比较常用的有innoDB,MyISAM,MEMORY等;
7.文件系统:真正存放物理文件的单位;
系统优化怎么做-Linux系统配置优化:
1.永久关闭selinux: selinux提高系统安全性,但会造成很多麻烦,一般关闭

/etc/selinux/config

将SELINUX=enforcing改为SELINUX=disabled,保存后退出,重启生效
2.设置系统的级别为3:init 3 节约系统资源
3.加大系统文件描述符最大值

vim /etc/security/limits.conf
noproc 是代表最大进程数
nofile 是代表最大文件打开数

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/333562.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号