集群概述 MySQL复制技术 集群目的:
负载均衡:解决高并发
高可用HA:服务可用性
远程灾备:数据有效性
1.在主库上把数据更改记录到二进制日志中。
2.备库I/O线程将主库上的二进制日志复制到备库的中继日志中。
3.备库SQL线程读取中继日志中的事件,将其重放到备库数据库上。
集群案例 环境:1.全新服务器-互相通信
2.全新安装mysql57-分别安装
3.配置域名解析
注意:请重新安装多台数据库,不要克隆已经安装的数据,因为数据库的ID相同;关闭防火墙和selinux
master1:192.168.137.4
master2:192.168.137.5
slaves1: 192.168.137.6
slaves2: 192.168.137.7
一主一从(M-S)(1)
主(master1):
部署一台新的mysql服务器,准备好域名解析(修改host文件或者使用DNS服务器)
准备一些数据(用来验证主从同步使用)
create database master1db; create table master1tab(name char(50)); insert into master1tab values(houzhengrong); insert into master1tab values(gaoyuchuan); 开启二进制日志
vim /etc/my.cnf log_bin server-id=1 systemctl restart mysqld //重启生效 创建复制用户(不能使用root用户来搞,给用户授权)
grant replication slave,replication client on *.* to 'rep'@'192.168.137.%' identified by 'Rep@5201314'; 备份master数据库的数据
mysqldump -uroot -p'Hzr@5201314' --all-databases --single-transaction --master-data=2 --flush-logs > /backup/`date +%F-%H`mysql-all.
Nginx Web 安装时可以指定很多的模块,默认需要安装rewrite模块,需要系统有pcre库,安装pcre库支持rewrite模块。
源码安装
yum install -y pcre pcre-devel #安装pcre库支持
wget -c http://nginx.org/download/nginx-1.12.0.tar.gz #下载Nginx源码包
tar -xvzf nginx-1.12.0.tar.gz -C /opt #解压文件夹
cd /opt/nginx-1.12.0 ; sed -i -e 's/1.12.0//g' -e 's/nginx\//JWS/g' -e 's/NGINX/JWS/g' src/core/nginx.h #进入解压目录,并用sed更改nginx版本信息为JWS
useradd www -s /sbin/nologin ; ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module #创建nginx用户,并预编译nginx源码
make;make install #安装nginx
至此安装完成,然后进行测试
/usr/local/nginx/sbin/nginx -t
启动命令:/usr/local/nginx/sbin/nginx 查看进程是否已启动:ps -ef | grep nginx
编译过程中出现问题:./configure: error: SSL modules require the OpenSSL library.
缺少openssl环境,需要手动yum安装
解决方法:yum -y install openssl openssl-devel
http { proxy_headers_hash_bucket_size 1024; types_hash_bucket_size 1024; #server_tokens off; more_clear_headers Server; include mime.types; default_type application/octet-stream; (9条消息) 关于Nginx,在日常工作中你可能用到的操作就这些了_普通网友的博客-CSDN博客
博客目录总纲首页
硬件命令: dmesg、dmideode、lspci、hwconfig、ipmitool
Linux 命令大全(菜鸟教程命令目录)
linux命令大全(命令手册http://man.linuxde.net/)
linux命令大全
其他人的优秀命令总结:Linux常用命令大全
线上查询及帮助命令(2个)
man help
文件和目录操作命令(18个)
ls cd cp find mkdir mv pwd rename rm rmdir touch tree basename dirname chattr lsattr file md5sum
查看文件及内容处理命令(21个)
cat tac more less head tail cut split paste sort uniq wc iconv dos2unix diff vimdiff rev grep/egrep join tr vi/vim
文件压缩及解压缩命令(4个)
tar unzip gzip zip
信息显示命令(11个)
uname hostname dmesg uptime stat du df top free date cal
import os import multiprocessing def copy_file(file_name , source_dir, dest_dir): # 1.拼接源文件路径和目标文件路径 source_path = source_dir + / + file_name dest_path = dest_dir + / + file_name # 2.打开源文件和目标文件 with open(source_path, rb) as source_file: with open(dest_path, wb) as dest_file: # 3.循环读取源文件到目标路径 while True: data = source_file.read(1024) if data: dest_file.write(data) else: break if __name__ == '__main__': #1.定义源文件和目标文件夹 source_dir = python教学视频 dest_dir = /home/python/桌面/test #2.创建目标文件夹 try: os.mkdir(dest_dir) except: print(目标文件夹已经存在) #3. 读取源文件夹的文件列表 file_list = os.listdir(source_dir) #4.
今天整理了些日常可能经常遇到的一些处理字符串的函数,有些可能在写SQL时突然间想不到如何使用,今天就给大家总结两个函数的应用方法,以备不时之需!记得点赞收藏!
CHARINDEX(expression1,expression2[,start_location])函数解析:
expression1 必须,要查找的子字符串
expression2 必须,父字符串
start_location 可选,指定从父字符串开始查找的位置,为空时默认位置从1开始查找
作用:
判断一个字符串中是否包含另一个字符串。
从expression2字符串中指定的位置处开始查找是否包含expression1的字符串,如果能够从expression2字符串中查找到expression1字符串,则返回expression1字符串在expression2字符串中出现的位置,
反之,则返回0
注意:
CHARINDEX()函数的参数在SQL Server默认情况下大小写不敏感,但是在特殊的情况下,我们需要特意的去区分大小写,因此SQL Server专门提供了特殊的关键字用于查询时区分大小写,COLLATE Latin1_General_CS_AS(大小写敏感),COLLATE Latin1_General_CI_AS(大小写不敏感,和默认一样的效果,没必要多此一举)。
实例:
SELECT CHARINDEX('L','SQL数据库运维') --包含 --结果:3 SELECT CHARINDEX('R','SQL数据库运维') --不包含 --结果:0 SELECT CHARINDEX('l','SQL数据库运维'COLLATE Latin1_General_CS_AS) --大小写敏感 --结果:0 PATINDEX ( '%pattern%' , expression )函数
PATINDEX和CHARINDEX类似,PATINDEX也可以判断一个字符串中是否包含另一个字符串,两者的差异在于,CHARINDEX是全匹配,PATINDEX支持模糊匹配。
解析:
返回pattern字符串在表达式expression里第一次出现的位置,起始值从1开始算。
pattern字符串在expression表达式里没找到就返回0,对所有有效的文本和字符串都是有效的数据类型。
实例:
--类型一:PATINDEX ( '%pattern%' , expression ) --'%pattern%'的用法类似于 like '%pattern%'的用法,也就是模糊查找其pattern字符串是否在expression中找到,找到并返回其第一次出现的位置,否则返回0。 SELECT PATINDEX('%SQ%','SQL数据库运维SQL') --结果:1 --也就是SQ第一次出现的位置 --类型二:PATINDEX ( '%pattern' , expression ) --'%pattern' 类似于 like '%pattern'的用法,前面用模糊查找,也就是查找pattern的结束所在expression的位置,也就是从最后面开始匹配查找。 SELECT PATINDEX('%L','SQL数据库运维SQLLL') --结果:13 --也就是L在后面第一次出现的位置。 SELECT PATINDEX('%L','SQL数据库运维SQLLLS') --结果:0 --后面的第一个字母S和L不匹配,所以返回0 --类型三:PATINDEX ( 'pattern%' , expression ) --'pattern%'类似于 like 'pattern%'也就是前面用精确查找,后面模糊查找,也就相当于查询pattern首次出现的位置。 SELECT PATINDEX('SQL%','SQL数据库运维SQLLL') --结果:1 --也就相当于起始值 SELECT PATINDEX('SQL%','SSQL数据库运维SQLLL') --结果:0 --开头找不到就返回0,后面无论有多少都不管 --类型四:PATINDEX ( 'pattern' , expression ) --相当于精确匹配查找,也就是pattern,expression完全相等。 SELECT PATINDEX('SQL数据库运维','SQL数据库运维') --结果:1 --完全相等 SELECT PATINDEX('数据库运维','SQL数据库运维') --结果:0 --不完全相等 注:内容转载于微信公众号:SQL数据库运维,如需了解更多相关内容,请自行前往关注!
pip3 install django
报错如下:
Collecting django Downloading https://files.pythonhosted.org/packages/c3/68/b63abc009adee25c1bd266b3740e173eab656608cf21641594a37e02cf57/Django-3.2.13-py3-none-any.whl (7.9MB) 5% |?? | 471kB 9.7kB/s eta 0:12:42Exception:Traceback (most recent call last): File /usr/lib/python3.6/site-packages/pip/_vendor/urllib3/response.py, line 302, in _error_catcher yield File /usr/lib/python3.6/site-packages/pip/_vendor/urllib3/response.py, line 384, in read data = self._fp.read(amt) File /usr/lib/python3.6/site-packages/pip/_vendor/cachecontrol/filewrapper.py, line 60, in read data = self.__fp.read(amt) File /usr/lib64/python3.6/http/client.py, line 459, in read n = self.readinto(b) File /usr/lib64/python3.6/http/client.py, line 503, in readinto n = self.fp.readinto(b) File /usr/lib64/python3.6/socket.py, line 586, in readinto return self.
安装准备 1.安装gcc编译器 查看版本 gcc -v yum -y install gcc
2.pcre、pcre-devel安装 yum install -y pcre pcre-devel pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库。
3.zlib安装 yum install -y zlib zlib-devel zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip,所以需要安装
4.openssl安装 yum install -y openssl openssl-devel openssl是web安全通信的基石。
安装、配置 1.下载nginx安装包 进入 wget http://nginx.org/download/nginx-1.16.1.tar.gz 可以自己更换版本
2.解压 tar -zxvf nginx-1.16.1.tar.gz
3.切换到解压后的文件夹中,编译,安装 cd /usr/local/src/nginx-1.16.1 ./configure make make install 4.配置nginx环境变量 nginx -v 此时会发现报 - bash:nginx: 未找到命令,需要我们手动配置 打开环境变量的文件 vim /etc/profile 行末加上自己的nginx安装目录下sbin目录的地址 PATH=$PATH:/usr/local/nginx/sbin 重新加载环境 source /etc/profile
5.设置开机自启动 进入到/lib/systemd/system/目录 cd /lib/systemd/system/
部署环境:三台centos7.9,其中一台master节点,两台node节点
docker版本:20.10.14
kubernetes版本:1.23.6
master节点:
[root@k8s-master ~]# cat deploy_k8s_master.sh #!/bin/bash#1.configure domain name resolveecho '192.168.121.50 k8s-master' >>/etc/hostsecho '192.168.121.51 k8s-node1' >>/etc/hostsecho '192.168.121.52 k8s-node2' >>/etc/hosts#2.close firewallsystemctl disable firewalld.service --now#3.close selinuxsed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/configsetenforce 0#4.configure chronyyum -y install chronysed -i -e 's/^server/#&/g' -e '2a server k8s-master iburst' /etc/chrony.confecho allow all >> /etc/chrony.confecho local stratum 10 >> /etc/chrony.conf#5.permanent close swap partitionsed -i 's/.*swap.*/#&/g' /etc/fstabswapoff -a#6.modify module parametermodprobe br_netfilterecho net.ipv4.ip_forward = 1 >> /etc/sysctl.confecho net.bridge.bridge-nf-call-ip6tables = 1 >> /etc/sysctl.
十年河东,十年河西,莫欺少年穷
学无止境,精益求精
负载均衡的配置方式可参考:Nginx 通过upstream服务器组实现轮询式负载均衡及我所遇到的问题 【关闭selinux服务】
1、轮询策略 轮询策略其实是一个特殊的加权策略,不同的是,服务器组中的各个服务器的权重都是1
upstream backend { server 192.168.136.136 weight=1; server 192.168.136.136:81 weight=1; server 192.168.136.136:82 weight=1; server 192.168.136.136:83 weight=1; } server { listen 80; server_name localhost; location / { proxy_pass http://backend; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } 2、轮询加权策略 通过加入 weight的值进行加权处理,权重值越大,服务器越容易被访问,因此,性能好的服务器应适当加大权重值
upstream backend { server 192.168.136.136 weight=1; server 192.168.136.136:81 weight=2; server 192.168.136.136:82 weight=3; server 192.168.136.136:83 weight=4; } server { listen 80; server_name localhost; location / { proxy_pass http://backend; } error_page 500 502 503 504 /50x.