Other

Linux基础15-Ansible自动化运维

安装Ansible软件包 yum -y install wget #下载wget工具 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo #下载阿里Base源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo #下载阿里epel源 ansible --version #查看ansible版本信息 定义Ansible主机清单 ansible主配置文件:/etc/ansible/ansible.cfg ansible默认清单文件:/etc/ansible/hosts 列出指定组内主机列表:ansible 组名 --list-host ansible-doc命令介绍 ansible-doc #模块文档命令 常用选项: -l #列出所有模块列表 -s #查看模块帮助信息 Ansible命令返回值的颜色表示: 绿色:代表对远程节点不进行相应修改,没有发生改变,命令执行成功了 黄色:代表对远程节点进行了相应修改,命令执行成功了 红色:代表你的命令执行失败或者是有异常 粉色:代表命令执行后发出的警告信息,可忽略 Ansible执行命令的方式 ad-doc:在命令行执行的命令(临时命令) Playbook:将命令写入到Playbook剧本中 Ansible命令格式介绍 ansible 组名/主机 [-m 模块名] [-a 模块参数] Ansible常用模块介绍 command模块 默认模块,用于远程执行命令 注意:特殊符号功能会失效 常用参数 chdir:此参数表示执行命令之前,会先进入到指定的目录中 creates:此参数表示文件如果存在于远程主机中,则不执行对应命令,如果不存在,才执行 removes:此参数表示文件如果存在于远程主机中,则执行对应命令,如果不存在,则不执行 shell模块 远程执行命令,通过/bin/bash程序处理命令 常用参数 cmd:此参数指定用于执行的命令(用于Playbook剧本中) chdir、creates、removes与command模块作用一致 script模块 用于远程执行脚本,脚本存放在ansible主机本地,不需要拷贝至远程主机 常用参数: chdir、creates、removes:与command作用一致 执行脚本举例:ansible 组名/主机 -m script -a '脚本'

[SQL Server] 配置分布式事务 DTC

https://docs.microsoft.com/zh-cn/biztalk/core/troubleshooting-problems-with-msdtc 数据库设置 这些设置我测试不开启也不会造成失败,不知道是不是什么原理 remote proc trans 这个是用来保证分布式事务之间的ACID的,微软不建议开启。 同时开启这个要开启‘remote access’,用来控制从运行 SQL Server 实例的本地或远程服务器执行存储过程 linked server rpc(remote procedure calls)设置 这代表远程过程调用,允许您在链接服务器上运行存储过程。 RPC 启用来自指定服务器的远程过程调用,RPC OUT 启用对指定服务器的远程过程调用。 alter proc sp_dtc_test as begin set xact_abort on --begin distributed transaction insert into win1.test.dbo.dtc_test values(1,getdate()) insert into win1.test.dbo.dtc_test select * from test.dbo.dtc_test --commit tran --select * from win1.test.dbo.dtc_test order by date desc end 大多数 BizTalk Server 运行时操作都需要 Microsoft 分布式事务处理协调器 (MSDTC) 支持,以确保操作事务性一致。 如果没有 MSDTC 事务支持,则相关联的 BizTalk Server 运行时操作将无法进行。 未正确配置 MSDTC 事务支持时通常会影响的 BizTalk 组件包括(但不限于)单一登录服务、BizTalk 主机实例以及 BizTalk Server 所连接的任何 SQL Server 实例。 本部分包含的信息描述了与 MSDTC 相关的错误和步骤,遵循这些步骤可帮助你诊断并解决 MSDTC 存在的问题。 未正确配置 MSDTC 事务支持时会出现的错误

Centos7 安装 Redis 傻瓜式直接复制即可

按顺序执行即可。 cd /usr wget http://download.redis.io/releases/redis-5.0.8.tar.gz tar zxvf redis-5.0.8.tar.gz mv redis-5.0.8 redis cd /usr/redis make cd /usr/redis/src ./redis-server /usr/redis/redis.conf ps:修改redis密码和外网访问按如下操作 vim /usr/redis/redis.conf # 修改以下内容 将bind 后 127.0.0.1 改为 内网IP # 为安全起见,请勿使用 0.0.0.0 protected-mode yes 改为 protected-mode no # 关闭保护模式 daemonize no 改为 daemonize yes # 开启守护进程 空白处添加 requirepass 123456 # 自行设置密码,例:123456 参考:https://blog.csdn.net/weixin_44029501/article/details/105537129

(1.5)mongodb备份恢复,mongodb备份还原,mongodb迁移

【1】备份恢复 (1.1)备份恢复工具介绍 应用场景总结: (1)mongoexport/mongoimport:json csv 1、异构平台迁移 mysql <---> mongodb 2、同平台,跨大版本:mongodb 2 ----> mongodb 3 (2)mongodump/mongorestore Mongodb 的日常备份恢复时使用,mongodb内部常规运维比较多  

MySQL DBA 防坑指南

1. MySQL连接数问题 MySQL里的max_connections参数代表mysql数据库的最大连接数,参数默认是151,显然不适用于生产,如果请求大于默认连接数,就会出现无法连接数据库的错误,会遇到too many connections的报错信息。 Mysql5.5、mysql5.6、mysql5.7:默认的最大连接数都是151,上限为:100000 max_connections需要设置的一个合理的值,并需要做好监控,避免连接数满引发业务故障(生产环境建议5000-10000左右,没有固定的值,根据各自业务情况来定)。 另外如果数据库连接数过高,需要分析业务端是否存在大量刷MySQL连接的情况,比如大量的短连接,连接没有正常关闭,代码逻辑问题等。 2. MySQL文件句柄设置 在文件I/O中,要从一个文件读取数据,应用程序首先要调用操作系统函数并传送文件名,并选一个到该文件的路径来打开文件。该函数取回一个顺序号,即文件句柄(file handle),该文件句柄对于打开的文件是唯一的识别依据。要从文件中读取一块数据,应用程序需要调用函数ReadFile,并将文件句柄在内存中的地址和要拷贝的字节数传送给操作系统。当完成任务后,再通过调用系统函数来关闭该文件。 在使用MySQL的过程中,有些用户碰到了打开文件句柄数过多的错误,查看用户实例的打开句柄个数,确实超过了系统设置的值,一旦出现了这种错误,将会带来连锁的各种错误(取决于当时正在操作什么类型的文件,以及什么操作)。 open_file_limits的设置的值,mysqld会通过setrlimit系统调用来初始化本进程可以使用的最大文件句柄数。 操作系统范围限制,可以通过编辑/etc/sysctl.conf或编辑指令fs.file-max来增加Linux中打开文件的限制。 3. 注意SQL隐式转换的坑 在开发规范中,我们往往会要求研发避免在where条件中出现隐式类型转换,什么是隐式转换:即在where语句中条件的值和条件对应的列的数据类型不一致。如 where id=‘123’,而id的类型为bigint,或者where code=100,而code的类型为varchar,隐式转换会产生以下两个问题:1. 隐式类型转换可能导致索引失效。2. 隐式类型转换可能产生非预期的结果。 4. SQL为什么一会可以走到索引,一会走不到索引 有些时候开发同学会找到DBA,反馈有一条SQL有索引,之前也能走到索引,查询性能非常的高,突然收到慢查询报警,查了十多秒,这种情况产生的原因一般和数据内容有关。MySQL如果通过索引选择扫描行数过多(大约20%以上,这个不是确定的),优化器会认为使用全表扫描更佳,从而会走全表扫描,当然很多时候其实还是走索引性能会更好一点,MySQL选择优化器并不是那么智能。举个例子,微博的用户有一张评论表,查询我们这些小众用户的评论会走索引,查询非常的快,如果正好查询的是一个大V账号,有可能涉及数百万条数据导致没有走到索引。5. 自增键重启后回溯问题 InnoDB 引擎的自增值,其实是保存在了内存里,并且到了 MySQL 8.0 版本后,才有了“自增值持久化”的能力,也就是才实现了“如果发生重启,表的自增值可以恢复为 MySQL 重启前的值”。 在 MySQL 5.7 及之前的版本,自增值保存在内存里,并没有持久化。每次重启后,第一次打开表的时候,都会去找自增值的最大值 max(id),然后将 max(id)+1 作为这个表当前的自增值。 举例来说,如果一个表当前数据行里最大的 id 是 10,AUTO_INCREMENT=11。这时候,我们删除 id=10 的行,AUTO_INCREMENT 还是 11。但如果马上重启实例,重启后这个表的 AUTO_INCREMENT 就会变成 10。也就是说,MySQL 重启可能会修改一个表的 AUTO_INCREMENT 的值。6. 自增键用完怎么办 如果你用过或了解过MySQL,那你一定知道自增主键了。每个自增id都是定义了初始值,然后按照指定步长增长(默认步长是1)。 虽然,自然数是没有上限的,但是我们在设计表结构的时候,通常都会指定字段长度,那么,这时候id就有上限了。在插入数据时有可能唯一主键冲、sql事务回滚、批量插入的时候,批量申请自增值等原因导致自增id是不连续的。 我们一般会将自增键的类型设置为int,数据范围为负21亿到正21亿,对于一个频繁插入删除数据的表来说,21亿是可能会被用完的,可能引发业务无法正常写入。 因此在建表的时候你需要考察你的表是否有可能达到这个上限,如果有可能,就应该创建成 8 个字节的 bigint unsigned。另外可以将表的自增键做好监控,比如到达使用率的80%,就可以报警出来。 7.

6.2 Java Web数据库编程

6.2 Java Web数据库编程 Java web简介 • Java web开发运行环境 • Servlet技术 • JSP • JavaBean • MyBatis 一、 WEB数据库系统技术 以浏览器/服务器(B/S)模式为平台,其运行模式: 浏览器 —— Web服务器 —— 数据库 Java web Java 的 Web 框架虽然各不相同,但遵循特定的 J2EE 规 范:使用 Servlet 或者 Filter 拦截请求,使用 MVC 的思想 设计架构,使用约定、XML 或 Annotation 实现配置,运 用 Java 面向对象的特点,面向对象实现请求和响应的流 程 二、Java web开发运行环境 Web 服务器主要用来接收客户端发送的请求和响应客户 端请求。 JavaWeb 应用程序需要Servlet 容器,容器的主要 作用就是调用 Java 程序处理用户发送的请求,并响应指 定的资源。 开发 JavaWeb 项目,Web 服务器和 Servlet 容 器是必需的,两者通常是合在一起的 数据库应用程序结构 三层架构(3-tier Architecture) 所谓三层体系架构是在客户端与数据库之间加入了一个中间件层,也叫组 件层。三层是指逻辑上的三层。三层体系的应用程序将业务规则、数据访 问、合法性校验等工作放到了中间层进行处理。通常来说,客户端不与数 据库直接进行交互,而是与中间层建立连接,再经由中间层与数据库进行 交互。

Nginx日志统计展示

一、 效果展示  二、流程  三、 Nginx 配置  nginx.conf,修改日志格式,指定需要收集的字段及字段分割 http{ ........ log_format main '$remote_addr - $remote_user [$time_local] $request ' '$status $body_bytes_sent $http_referer ' '$http_user_agent'; ........ }  四、 Filebeat 配置  修改filebeat.yml egrep -v ^#|^ #|^$ filebeat.ymlfilebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/xxx.log fields: file_type: nginx-log fields_under_root: true encoding: utf-8 filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false setup.template.settings: index.number_of_shards: 1 setup.kibana: output.logstash: hosts: [xxx.xxx.xxx.xxx:xxxxx] processors: - add_host_metadata: ~ - add_cloud_metadata: ~ - add_docker_metadata: ~ - add_kubernetes_metadata: ~  五、 Logstash 配置

linux 系统中如何匹配指定数目的连续多个字符

1、测试数据 root@PC1:/home/test2# ls test.txt root@PC1:/home/test2# cat test.txt attatgcccagggtttgttacttcagatgtgtccagagtttctcccttct ggcaggttcatggtcttgctcacttcaagaatgaagctgcagacatttac ggtgagtgttacagcacttatatttgttgtatccagagtttgttccttca gatgtgtccagaatttcttccttctggcgggttcatggtcttgctcactt  2、提取前10个字符(连续匹配) root@PC1:/home/test2# ls test.txt root@PC1:/home/test2# cat test.txt attatgcccagggtttgttacttcagatgtgtccagagtttctcccttct ggcaggttcatggtcttgctcacttcaagaatgaagctgcagacatttac ggtgagtgttacagcacttatatttgttgtatccagagtttgttccttca gatgtgtccagaatttcttccttctggcgggttcatggtcttgctcactt root@PC1:/home/test2# sed 's/[a-z]\{10\}/& /' test.txt ## 匹配前10个字符 attatgccca gggtttgttacttcagatgtgtccagagtttctcccttct ggcaggttca tggtcttgctcacttcaagaatgaagctgcagacatttac ggtgagtgtt acagcacttatatttgttgtatccagagtttgttccttca gatgtgtcca gaatttcttccttctggcgggttcatggtcttgctcactt root@PC1:/home/test2# sed 's/[a-z]\{10\}/& /' test.txt | awk '{print $1}' ## 提取前10个字符 attatgccca ggcaggttca ggtgagtgtt gatgtgtcca  3、提取后10个字符(连续匹配) root@PC1:/home/test2# ls test.txt root@PC1:/home/test2# cat test.txt attatgcccagggtttgttacttcagatgtgtccagagtttctcccttct ggcaggttcatggtcttgctcacttcaagaatgaagctgcagacatttac ggtgagtgttacagcacttatatttgttgtatccagagtttgttccttca gatgtgtccagaatttcttccttctggcgggttcatggtcttgctcactt root@PC1:/home/test2# sed 's/[a-z]\{10\}$/ &/' test.

Linux基础13-vsftpd文件共享服务、NFS文件共享服务、Apache httpd的Web服务

文件共享服务FTP介绍 FTP(FIle Transfet Protocol):文件传输协议 FTP是一种在互联网中基于TCP协议端到端的数据传输协议 基于C/S架构,默认使用20、21端口 端口20(数据端口)用于数据传输 端口21(命令端口)用于接收客户端发出的相关FTP命令 工作模式: 主动模式:FTP客户端从本机的非特殊端口(>1023)连接FTP服务器的命令端口21,服务端通过本地的20号端口主动向客户端的随机端口发起连接请求,开始传输数据 被动模式:FTP客户端通过向FTP服务器发送PASV命令进入被动模式,FTP服务器会另开一个随机端口,客户端主动连接到随机端口后,开始传输数据 vsftp介绍:非常安全的FTP守护进程 用户模式:本地用户、虚拟用户、匿名用户 vsftp服务相关参数 /var/ftp #匿名用户共享目录 /etc/vsftpd #配置文件所在目录 /etc/vsftpd/vsftpd.conf #主配置文件 /usr/sbin/vsftpd #主程序文件 /etc/vsftpd/ftpusers #黑名单 /etc/vsftpd/user_list #控制名单 /var/log/xferlog #日志目录 主配置文件介绍: vim /etc/vsftpd/vsftpd.conf 12 anonymous_enable=YES #是否允许匿名yoghurt访问,yes允许 29 #anon_upload_enable=YES #是否允许匿名用户上传,yes允许 33 #anon_mkdir_write_enable=YES #是的允许匿名用户创建目录,yes允许  anon_other_write_enable=YES #是否允许匿名用户写权限,yes允许(手动添加) 12 anonymous_enable=NO #关闭匿名用户访问 16 local_enable=YES #是否允许本地用户访问,yes允许,no不允许 19 write_enable=YES #是否允许本地用户有写权限,yes允许,no不允许 23 local_umask=022 #本地用户上传文件默认权限为755 37 dirmessage_enable=YES #当用户第一次进入新目录时显示消息(了解) 40 xferlog_enable=YES #启动xferlog日志记录,该文件记录传输数据 53 #xferlog_file=/var/log/xferlog #日志文件位置,需删除注释 43 connect_from_port_20=YES #启用数据传输端口 49 #chown_username=whoever #改变上传文件的属主与属组 60 #idle_session_timeout=600 #客户端连接超时时间 63 #data_connection_timeout=120 #数据连接超时时间101 chroot_local_user=YES #是否允许本地用户切换目录,yes不允许,no允许115 listen=NO #是否开启监听IPV4的连接,默认没开启,改为yes126 pam_service_name=vsftpd #启用pam认证的文件名称,路径为/etc/pam.

升级mysql后,python操作mysql报错:import _mysql ImportError: libmysqlclient.so.18: cannot open shared object

0x00 报错描述 之前把mysql从5.6升级到了5.7,然后在使用python安装或者操作mysql数据库的时候报了一个错:“import _mysql ImportError: libmysqlclient.so.18: cannot open shared object file: No such file or directory” 0x01 解决方法 百度了下,说是MySQLdb是需要调用MySQL的c动态链接库。想了下,可能是最近刚好把自动化测试的数据库被迁到另外一个服务器,脚本所在服务器的MySQL也被卸载了,然后找不到那个库。 解决方法1: 先找找系统中有没有这个库:find -name libmysqlclient.so.18 将libmysqlclient.so.18 链接到/usr/lib64中:ln -s /usr/java/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18 解决方法2(成功): 卸载虚拟环境:rm -rf venv/ 重新安装python依赖库:pip install -r req.txt 0x02 参考文章 https://www.cnblogs.com/minerrr/p/9722148.html