Canal报错Could not find first log file name in binary log index file

产生原因 Could not find first log file name in binary log index file表示根据目前的点位信息无法获取到binlog,发生这样情况通常是由于数据库的binlog过期清理或人为删除。 解决办法 如果是单机的Canal 可以修改canal/conf/example/meta.data文件,设置成当前存在的点位;或者直接删除。 然后重启canal服务。 如果是使用zookeeper集群的Canal 首先停止Canal服务。 Canal的点位信息存储在zookeeper的: /otter/canal/destinations/example/1001/cursor,可以通过set或者delete修改、删除该节点。 最后重启Canal服务。

  • 闻骏
    闻骏
数据库

MSSQL如何以指定用户身份运行Jobs

SqlServer一般会以启动SqlServer Agent服务的账户来运行其中的Jobs,但有些特殊情况下需要以不同的用户来运行不同的Jobs,这就需要用代理功能。 解决办法 在凭据创建一个凭据: 在SQLServer Agent ==> 代理 ==> 执行SSIS包中新增一个代理: 凭据名称选择之前创建的用户。 子系统选择SSIS包。 在Jobs中选择该代理: 类型选择SSIS包。 运行身份选择之前创建的代理。

  • 闻骏
    闻骏
Linux

CentOS8 Failed to download metadata for repo ‘AppStream’报错

最近在CentOS8上升级软件或安装软件时候,会有如下报错: Error: Failed to download metadata for repo ‘appstream’ 究其原因是CentOS Linux 8从2021年11月已经停止维护,所以之后更新镜像需要通过 vault.centos.org来获取更新。 解决方法: 01.进入repo目录: cd /etc/yum.repos.d/ 02.注释掉原来的源: sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* 03.将mirror.centos.org修改为vault.centos.org

  • 闻骏
    闻骏
前端开发

Django中使用多数据库的两种方式

Django项目开发中,ORM默认的连接对对象对象都是settings.DATABASES['default'] 如果一个Django项目中有多个应用,分别需要使用不同的数据库,该如何配置呢? 第一步:在settings中配置多个数据库对象: DATABASES = { 'default': {}, 'common': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 'ENGINE': 'django.db.backends.mysql', 'HOST': '127.0.0.1', 'PORT': 3306, 'NAME': 'common', 'USER': 'root', 'PASSWORD': '123456.com'

  • 闻骏
    闻骏
数据库

MySQL清理慢查询日志

由于慢查询日志写满导致的数据库异常 MySQL当慢查询阈值设置的较低时,较容易产生大量的慢查询日志,进而导致数据盘被占满。 原因 MySQL官方并未提供自动定时清理慢查询日志的策略,需要手工干预。 解决方案 方法一:手动刷新日志: 01.关闭慢查询日志: set global slow_query_log=off; 02.手动刷新慢查询日志: flush slow logs; 03.重命名慢查询日志文件,删除或压缩: mv /usr/local/mysql/data/mysql-slow.log /usr/local/mysql/mysql-slow-$(date +%Y-%m-%d).log gzip -c

  • 闻骏
    闻骏
Linux

由于磁盘满导致Vsphere故障的问题解决

由于磁盘满导致VCenter各种异常 vcenter 6.0版本使用过程中有时会发生一些异常,比如无法添加主机,无法迁移主机等。 这时候要考虑是否磁盘已经占满的因素。 原因 Vsphere安装时,默认使用root账户作为服务及计划任务管理账户,而该账户的密码有效期仅为一年。 这就导致当密码过期时,一些服务和计划任务无法执行,例如清理审计日志的计划任务。 当日志越来越多,以致将磁盘完全占满时,一些功能的使用就会收到影响。 解决方案 第一步: 开启ssh登陆,并且切换到交互模式: shell.set --enabled true shell 第二步: 确认磁盘是否已经写满;如果是,则找到对应的日志清理: truncate -s 0 audit.log 或者 echo > audit.log 第三步: 确认是否因为计划任务失效导致的磁盘爆满及失败的原因: grep "

  • 闻骏
    闻骏

ESXI解决键盘鼠标可以登录但UI不能登陆的问题

ESXI键盘可以登录,但UI报账户密码错误: ESXI6.0以上的版本,有时候会发生明明账户密码正确,但UI不能登陆,并且VCENTER也不能加入管理的问题。 原因: 官方提供的说明显示可能是守护进程假死状态或者是Agent失效。 在这样的情况下,远程创建虚拟机或者管理虚拟机也会发生问题。 解决方案: 第一步:使用键盘鼠标登陆ESXI,开启SSH: 第二步:使用SSH登陆,执行如下命令: /etc/init.d/hostd restart /etc/init.d/vpxa restart

  • 闻骏
    闻骏
Web Server

使用Tengine实现会话保持

使用Tengine实现会话保持 一般情况下,nginx实现会话保持的机制是$ip_hash,即根据请求的源地址实现代理请求至特定的后端服务器上。 但这样的模式有限制: 第一,nginx必须是在请求入口的第一层,一旦nginx之前有F5或者squid之类的入口设备,那nginx获取的永远是F5和squid的ip,即无法根据源IP代理至特定的后端上。 第二,即使使用MAP函数以其他header为源数据hash,对于类似企业公共出口IP的请求,也只能认为它们是同一个请求人,这样的划分是比较粗狂的。 通用解决方案: Cookie插入模式: 在Cookie插入模式下,负载均衡设备将负责插入cookie,后端服务器无需作出任何修改。 Cookie插入模式原理: 当客户进行第一次请求时,客户HTTP请求(不带cookie)进入负载均衡设备, 负载均衡设备根据负载平衡算法策略选择后端一台服务器,并将请求发送至该服务器。 后端服务器进行HTTP回复(不带cookie)被发回负载均衡设备,然后负载均衡设备插入cookie,将HTTP回复返回到客户端。 当客户请求再次发生时,客户HTTP请求(带有上次负载均衡设备插入的cookie)进入负载均衡设备,然后负载均衡设备读出cookie里的会话保持数值,将HTTP请求(带有与上面同样的cookie)发到指定的服务器。 后端服务器进行请求回复,由于服务器并不写入cookie,

  • 闻骏
    闻骏
Kubernetes

如何更换harbor的证书

如何更换Harbor的证书: 在安装Kubernetes的过程中,由于一些用户会使用Ansible或其他自动化方式安装全套环境, 而不甚了解其内部原理时,一些组件的克隆和迁移会遇到麻烦。 比如当需要复制harbor用于其他环境时,会产生证书未授权的问题。 通过以下步骤,可以解决这个问题。 解决方案: 第一步:修改harbor证书签名请求文件harbor-csr.json: { "CN": "harbor", "hosts": [ "127.0.0.1", "10.25.40.xx", "harbor.xxxxxx.com" ], "key": { "algo&

  • 闻骏
    闻骏
Kubernetes

如何在kubernetes中开启容器的sshd服务

Kubernetes中的容器开启sshd服务: 在Kubernetes中,运维人员可以很方便的通过Kubectl exec登录某台节点排查问题。 但对于一些开发,或者供应商人员,给其完全的权限就不是很合适了。 前提: 需要kubernetes容器与宿主机在同一个网段中,即大二层打通。 如果是传统模式,则只能登录到kubernetes集群中操作。 解决方案: 第一步:安装openssh服务: yum install openssh-server 由于kubernetes需要提权才能够使用systemctl命令,因此手动启动/usr/sbin/sshd报错: Could not load host key: /etc/ssh/ssh_host_rsa_key Could not load host key: /etc/ssh/ssh_host_ecdsa_

  • 闻骏
    闻骏
Linux

CentOS:too many open files

最大文件数限制: 在CentOS中,有时使用systemctl启动某个服务之后,通过cat /proc/$pid/limits命令查看到它的资源限制与/etc/security/limits.conf中配置的不一致。 原因: CentOS7中,使用systemd替代了之前的SysV,因此/etc/security/limits.conf文件的配置作用域缩小了一些。 limits.conf中的的配置,只适用于通过PAM认证登录用户的资源限制,即对systemd的service的资源限制不生效。 解决方案: 若通过systemctl start启动服务,则需要在对应的service文件中添加如下配置: LimitCORE=infinity LimitNOFILE=100000 LimitNPROC=100000

  • 闻骏
    闻骏
Web Server

Tomcat:consider increasing the maximum size of the cache

缓存不足 在启动一些较大的项目,比如jenkins时,会发现访问缓慢,并且报错: the cache because there was insufficient free space available after evicting expired cache entries - consider increasing the maximum size of the cache 这是由于tomcat分配的缓存不够导致。 解决办法: 修改tomcat目录下conf/context.xml文件,在content中添加如下内容: <Resources cachingAllowed="true" cacheMaxSize="100000"

  • 闻骏
    闻骏
后端开发

Python中的陷阱

可变默认参数 函数定义: def append_to(element, to=[]): to.append(element) return to 函数调用: print(append_to(10)) print(append_to(20)) 期望的结果: 每次调用函数时,如果不提供第二个参数,就会创建一个新的列表,所以结果应是这样的: [10] [20] 事实的结果: 当函数被定义时,一个新的列表就被创建一次 ,而且同一个列表在每次成功的调用中都被使用: [10] [10, 20] 结论: 当函数被定义时,Python的默认参数就被创建一次,而不是每次调用函数的时候创建。 这意味着,如果使用一个可变默认参数并改变了它,将会在未来所有对此函数的调用中改变这个对象。 应该使用的方法: 在每次函数调用中,

  • 闻骏
    闻骏
Kubernetes

使用Prometheus监控Kubernetes集群

环境准备 实验环境: 192.168.0.230,k8s master 192.168.0.231,k8s node01 192.168.0.232,k8s node02 192.168.0.213,prometheus 192.168.0.222,grafana Kubernetes集群监控的思路: 01.kubernetes集群监控的指标: 各master,node节点的性能监控,包括cpu,内存,磁盘,IO以及网络流量等。 各container的监控,包括cpu,内存,磁盘,IO以及网络流量等。

  • 闻骏
    闻骏
达美乐比萨运维: Dean.Wen Kenshi.Zhang Makly.Zhang Furong.zhou