info

MySQL MHA搭建

六眼飞鱼酱① 提交于 2019-12-17 17:05:26
MHA算是业内比较成熟的MySQL高可用解决方案,在MySQL故障切换过程中,MHA能做到自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。软件主要有MHA Manager(管理节点)和MHA Node(数据节点)两部分组成,在MHA自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据的不丢失,但这并不总是可行的。例如,如果主服务器硬件故障或无法通过ssh访问,MHA没法保存二进制日志,只进行故障转移而丢失了最新的数据。使用MySQL 5.5的半同步复制,可以大大降低数据丢失的风险。MHA可以与半同步复制结合起来。如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性。 目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,因为至少需要三台服务器。 下面我们就开始着手配置我们的MHA高可用,因为本人只有两台虚拟机,所以就只能按照两台来搞了,中间也踩了点坑,下面看一下我们的基本环境: MySQL1(master):172.16.16.34:3306 +MHA Manager

log4js 安装和配置

喜欢而已 提交于 2019-12-17 13:30:13
在 nodeJS 开发中,不能直接使用 console.log 打印相关日志并 debug。所以,查阅资料后,可以使用 log4js 在终端打印日志。下面是具体的安装和使用。 除了直接打印日志,这个库还支持这些功能:支持使用不同颜色标记和打印日志;文件类型的日志输出源,并可通过配置支持基于文件大小或日期进行日志回滚;支持日志分级和日志分类;可配置的日志信息模式。 基本用法 'use strict' ; let log4js = require ( 'log4js' ) ; let logger = log4js . getLogger ( ) ; logger . debug ( 'this is debug' ) ; logger . info ( 'this is info' ) ; logger . warn ( 'this is warn' ) ; 运行 node log.js 注意:如果没有全局安装 log4js 会报错,然后执行 sudo npm install log4js -g # 使用npm install -g 'xxx' 之后仍然报 # Cannot find module 'xxx' 错误,可以通过设置环境变量来解决; export NODE_PATH = /usr/local/lib/node_modules/ echo $NODE_PATH #

Python之旅.第五章.面向对象

时光怂恿深爱的人放手 提交于 2019-12-17 09:29:26
/*--> */ /*--> */ 一、组合 解决类与类之间代码冗余问题有两种解决方案: 1 、继承 2 、组合 1 、继承:描述的是类与类之间,什么是什么的关系 2 、组合:描述的是类与类之间的关系,是一种什么有什么关系;一个类产生的对象,该对象拥有一个属性,这个属性的值是来自于另外一个类的对象 # 组合不属于继承 # 类的使用将变量及处理其的函数捆绑起来 # 继承是强耦合,组合是解耦合 class Date: def __init__(self,year,mon,day): self.year = year self.mon = mon self.day = day def tell_birth(self): print(' 出生年月日 <%s-%s-%s>' % (self.year, self.mon, self.day)) class OldboyPeople: school = 'oldboy' def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex class OldboyTeacher(OldboyPeople): def __init__(self,name,age,sex,level,salary): super().__init__(name,age

Ozone数据探查服务Recon的启用

喜欢而已 提交于 2019-12-17 09:14:14
文章目录 前言 Ozone Recon服务的启用 前言 笔者之前写过一篇关于Ozone数据探查服务Recon的文章: 存储系统“数据之眼”的设计–数据探查服务 ,大致阐述了Recon如何通过定期获取OM的快照来做数据的二次分析的过程。不过笔者当时没有介绍Recon服务如何被启用的过程,以及此服务被启用后,它的内部运行过程是如何的。本文笔者来补充介绍下这块的内容。 Ozone Recon服务的启用 Ozone Recon服务需要依赖于OM的metadata,它采用定期同步OM metadata db的方式来做的。因此这里需要为Recon服务配置一个OM的通信地址,在这里为OM的http地址(此处9874为默认端口), < property > < name > ozone.om.http-address </ name > < value > {om host}:9874 </ value > </ property > 然后是recon db, recon om db的存放目录,这个我们也是建议另外配置的, < property > < name > ozone.recon.db.dir </ name > < value > /path/to/recon.db </ value > </ property > < property > < name > ozone.recon

ZooKeeper系列(三)

僤鯓⒐⒋嵵緔 提交于 2019-12-17 05:15:17
前面虽然配置了集群模式的Zookeeper,但是为了方面学建议在伪分布式模式的Zookeeper学习Zookeeper的shell命令。 一、Zookeeper的四字命令 Zookeeper支持某些特定的四字命令字母与其的交互。他们大多数是查询命令,用来获取Zookeeper服务的当前状态及相关信息。用户在客户端可以通过telnet或nc向Zookeeper提交相应的命令。Zookeeper常用的四字命令见图1.1所示。 图 1.1 图1.2是Zookeeper四字命令的一个简单用例。 [root@hadoop ~]# echo ruok|nc localhost 2181 [root@hadoop ~]# zkServer.sh start zoo1.cfg JMX enabled by default Using config: /usr/local/zk/bin/../conf/zoo1.cfg Starting zookeeper ... STARTED [root@hadoop ~]# zkServer.sh start zoo2.cfg JMX enabled by default Using config: /usr/local/zk/bin/../conf/zoo2.cfg Starting zookeeper ... STARTED [root@hadoop ~]

c# list排序的三种实现方式

醉酒当歌 提交于 2019-12-17 04:59:38
本文转载自: https://www.cnblogs.com/bradwarden/archive/2012/06/19/2554854.html 作者:bradwarden 转载请注明该声明。 用了一段时间的gridview,对gridview实现的 排序 功能比较好奇,而且利用 C# 自带的排序方法只能对某一个字段进行排序,今天demo了一下,总结了三种对list排序的方法,并实现动态传递字段名对list进行排序。 首先先介绍一下平时最常用的几种排序方法。 第一种:实体类实现IComparable接口,而且必须实现CompareTo方法 实体类定义如下: View Code 1 class Info:IComparable 2 { 3 public int Id { get ; set ; } 4 public string Name { get ; set ; } 5 6 public int CompareTo( object obj) { 7 int result; 8 try 9 { 10 Info info = obj as Info; 11 if ( this .Id > info.Id) 12 { 13 result = 0 ; 14 } 15 else 16 result = 1 ; 17 return result; 18 } 19 catch

并发之lock的condition接口

浪尽此生 提交于 2019-12-17 01:35:37
13.死磕Java并发-----J.U.C之Condition 12.Condition使用总结 11.Java并发编程系列之十七:Condition接口 === 13.死磕Java并发-----J.U.C之Condition 此篇博客所有源码均来自JDK 1.8 在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait()、notify()系列方法可以实现等待/通知模式。在Java SE5后,Java提供了Lock接口,相对于Synchronized而言,Lock提供了条件Condition,对线程的等待、唤醒操作更加详细和灵活。下图是Condition与Object的监视器方法的对比(摘自《Java并发编程的艺术》): Condition提供了一系列的方法来对阻塞和唤醒线程: await() :造成当前线程在接到信号或被中断之前一直处于等待状态。 await(long time, TimeUnit unit) :造成当前线程在接到信号、被中断或到达指定等待时间之前一直处于等待状态。 awaitNanos(long nanosTimeout) :造成当前线程在接到信号、被中断或到达指定等待时间之前一直处于等待状态。返回值表示剩余时间,如果在nanosTimesout之前唤醒,那么返回值 = nanosTimeout - 消耗时间,如果返回值 <=

ORA-01017

 ̄綄美尐妖づ 提交于 2019-12-17 00:47:44
今天凌晨oracle数据库割接,一个程序连接到新库(oracle 18c)时报错:ORA-01017: 用户名/口令无效; 登录被拒绝。 其连接串为: Provider=MSDAORA.1;Password=******;User ID=***;Data Source=***;Persist Security Info=True; 修改连接串为 Provider=OraOLEDB.Oracle.1;Password=******;User ID=***;Data Source=***;Persist Security Info=True; 报错: 打开数据库出错 错误信息:未找到提供程序。该程序可能未正确安装。 进入安装目录 D:\oracle\product\11.2.0\client_1\BIN 注册OraOLEDB11.dll 注册方法: regsvr32 OraOLEDB11.dll 登录成功! 来源: https://www.cnblogs.com/elideng/p/9480088.html

优雅地处理不同响应码的异步请求

丶灬走出姿态 提交于 2019-12-16 23:20:39
urls . txt 文件 https : // regex101 . com / https : // docs . python . org / 3 / this - url - will - 404. html https : // www . nytimes . com / guides / https : // www . mediamatters . org / https : // 1.1 .1 .1 / https : // www . politico . com / tipsheets / morning - money https : // www . bloomberg . com / markets / economics https : // www . ietf . org / rfc / rfc2616 . txt import sys import aiohttp import asyncio import logging from typing import IO from aiohttp import ClientSession logging . basicConfig ( format = "%(asctime)s %(levelname)s:%(name)s: %(message)s" , level = logging . DEBUG

用来获取豆瓣网上电影信息的简介

强颜欢笑 提交于 2019-12-16 21:52:22
<?php //搜索链接 function search_link($moviename) { //构造url,其中max-results可根据需要更改 $urlString = 'http://api.douban.com/movie/subjects?q='.$moviename.'&start-index=1&max-results=1&alt=json'; //print_r($urlString); $urlString=mb_convert_encoding($urlString, "UTF-8", "GBK");//将Url转换为utf-8编码 $r = new HttpRequest($urlString,HttpRequest::METH_GET);//请求 $response = $r->send(); $result = $r->getResponseBody(); $obj = json_decode($result);//解析成json格式 if($entry = @$obj->{'entry'}){ //搜索链接并存在数组中返回 for($i = 0;$i<sizeof($entry);$i++){ $link=$entry[$i]->{'link'}; for($j = 0;$j<sizeof($link);$j++){ $arr = (array)