原来的个人博客使用CN域名,众所周知CN域名相当麻烦,上次转移空间的时候一不小心捡了这个域名,所以就转移到这个域名了xuplus.com,新网站地址:http://xuplus.com,新RSS地址:http://xuplus.com/feed。如有收藏,请重新收藏。
安装配置ttserver(Tokyo Cabinet,Tokyo Tyrant) ttserver.c:611错误解决办法
最近在尝试安装ttserver来评估一下用于某个SCADA中可行性,在CentOS 6.2下安装Tokyo Tyrant时使用下列命令时出现一个错误:
yum install tokyocabinet tokyocabinet-devel
wget http://fallabs.com/tokyotyrant/tokyotyrant-1.1.41.tar.gz
tar xvzf tokyotyrant-1.1.41.tar.gz
cd tokyotyrant-1.1.41
make
报错:tokyotyrant-1.1.41/ttserver.c:611: undefined reference to `tcadbsetskelmulti`。说是这个函数没有定义过,有人说直接把代码注释掉,这样做不太好。经过查询原来版本兼容性问题。
tcadbsetskelmulti 这个函数是Tokyo Cabinet 1.4.35版本中引入的新函数,这一点可以冲tokyocabinet的ChangeLog中发现,同时加入的新函数还有tcadbmulnew, tcadbmuldel,setskeltran。所以为了使用TokyoTyrant 1.1.41必须使用1.4.35版本及之后的Tokyo Cabinet,那么就换最新版本的Tokyo Cabinet吧。
yum install gcc-c++ zlib-devel bzip2-devel
wget http://fallabs.com/tokyocabinet/tokyocabinet-1.4.47.tar.gz
tar xvzf tokyocabinet-1.4.47.tar.gz
cd tokyocabinet-1.4.47
./configure –enable-profile
make
make install
cd
wget http://fallabs.com/tokyotyrant/tokyotyrant-1.1.41.tar.gz
tar xvzf tokyotyrant-1.1.41.tar.gz
cd tokyotyrant-1.1.41
./configure
make
make install
果然顺利安装ttserver
智能变电站中在线监测系统一次设备监测参量和IEC 61850模型
分享一下:
1、一次设备监测参量
| 一次设备 | 监测参量 |
| 主变 | 顶层油温、底层油温、油箱油位、绕组温度、铁心接地电流、油中溶解气体、中性点直流、主变套管绝缘、环境温湿度、有载调压开关及在线滤油机监测、主变设备热像测温与故障定位巡视系统 |
| GIS | 局部放电、SF6气体密度、微水和温度、断路器参数(包括一次电压、一次电流(应可兼容电子式CT)、线圈电流、电机电流、三相同期、重合闸分析、预击穿时间、燃弧时间、触头磨损等)、避雷器泄漏电流和阻性电流 |
| 出线开关柜 | 触头温度、柜内温湿度、电能质量检测 |
| 出线并联电抗器 | 铁心接地电流、绕组温度 |
| 出线并联电容器 | 电容器故障、绝缘降低、电抗器故障、放电线圈故障、过压过流、投切录波 |
2、基本数据模型
-
变压器 YPTR
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 控制量 | ||||
| 冷却泵(Cooling Pumps) | Pumps | ISC | O | |
| 冷却风扇(Cooling Fans) | Fans | ISC | O | |
| 测量量 | ||||
| 绕组热点温度(Temperature of Winding hot point) | HPTemp | MV | O | |
| 绝缘水平(Level of Insulating Medium) | IMLev | MV | O | |
| H2 | H2 | MV | O | 绝缘液体介质中相对饱和湿度(百分数%表示) |
| CO2 | CO2 | MV | O | |
| CO | CO | MV | O | |
| CH4 | CH4 | MV | O | |
| C2H6 | C2H6 | MV | O | |
| C2H4 | C4H4 | MV | O | |
| C2H2 | C2H2 | MV | O | |
| 微水 | MicroH2O | MV | O | |
| 总烃 | TotHyd | MV | O | Total Hydrocarbon |
| 含气量(氧气O2+氮气N2) | PctO2N2 | MV | O | 百分数(%)表示单位 |
| Hydran仪复合气体 | PctHdrGas | MV | O | 百分数(%)表示单位 |
| 总可燃性气体(TCG)等各组分气体浓度 | TCGChm | MV | O | 百分数(%)表示单位 |
| 相对产气速率 | RlvGRte | MV | O | |
| 绝对产气速率 | AltGRte | MV | O | |
| 油温 | OilTmp | MV | O | |
| 色谱图 | CmtGram | MV | O | 表示色谱图的测量值 |
| CmtGramMad | SPS | O | 表示色谱图形成 | |
| 采样时间 | SMTmh | MV | O | 小时单位时间 |
| SMTmm | 分钟单位时间 | |||
| SMTms | 秒单位时间 | |||
| SMTmms | 毫秒单位时间 | |||
| SMTm | 其他时间单位 | |||
| 环境温度 | EnvTmp | MV | O | |
| 浓度报警 | DenAlm | SPS | O | |
| 铁心接地电流 | CGAmp | MV | O | 电流如果没有三相概念,则采用MV |
| CGA | WYE | O | 电流如果包含三相,则用WYE | |
| 顶层油温 | ToOilTmp | MV | O | |
| 局部放电量最大值 | MaxPaDsch | MV | O | |
| 局部放电量最大值相位 | MaxPaDsAng | MV | O | |
| 局部放电量平均值 | AvPaDsch | MV | O | |
| 越限放电脉冲数 | DschPlsOv | INS | O | |
| 局部放电放电波形 | PaDschCrv | SPS | O | 波形已形成 |
| MV | O | 波形测量值 | ||
| 局部放电谱图 | PaDschGrap | SPS | O | 谱图已形成 |
| MV | O | 波形测量值 | ||
-
变压器分节头YLTC
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 外部设备健康(External equipment health) | EEHealth | ISI | O | |
| 外部设备铭牌(External equipment name plate) | EEName | PLATE | O | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 测量量 | ||||
| 压力(Pressure) | Pres | MV | O | |
| 绝缘介质温度(Temperature of Insulating Medium) | Lev | MV | O | |
| 驱动力矩(Drive torque) | Torq | MV | O | |
| 电机驱动电流(Motor drive current) | DrvMA | MV | O | |
| 循环油电机驱动电流(Oil circulation motor drive current) | OCMA | MV | O | |
| 可控点 | ||||
| 分接头位置(Tap position) | TapPos | IST | O | |
| 上升(Raise) | Raise | BST | O | |
| 下降(Lower) | Lower | BST | O | |
| 冷却泵(Cooling Pumps) | Pumps | ISC | O | |
| 状态量 | ||||
| 分接头上升到达最高档位置(End position raise reached) | EndPosR | SPS | M | |
| 分接头下降到达最低档位置(End position lower reached) | EndPosL | SPS | M | |
| 油过滤(Oil filtration) | OilFil | SPS | M | |
| 最高油位(Oil level maximum) | OLMax | SPS | M | |
| 最低油位(Oil level minimum) | OLMin | SPS | M | |
-
变压器套管YPRB
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 测量量 | ||||
| 泄漏电流 | RelA | WYE | O | 电流如果包含三相,则用WYE |
| RelAmp | MV | O | 非三相电流,则采用MV | |
| 介质损耗因数 | LosFact | MV | O | |
| 电容量 | React | MV | M | |
| 电容基值 | ReactVal | MV | O | |
-
局部放电监测和诊断 XPDC
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 外部设备健康(External equipment health) | EEHealth | ISI | O | |
| 外部设备铭牌(External equipment name plate) | EEName | PLATE | O | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 测量量 | ||||
| 局放噪声水平,单位db (Acoustic level of partial dischaarge in db) | AcuPaDsch | MV | M | |
-
断路器 XCBR
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 操作计次数(Operation counter) | OperCnt | ISI | M | |
| 控制量 | ||||
| 开关位置(Switch position) | Pos | DPC | M | |
| 闭锁跳闸(Block opening) | BlkOpen | SPC | M | |
| 闭锁合闸(Block opening) | BlkClos | SPC | M | |
| 蓄能电动机允许(Charger motor enabled) | ChgmotorEn | SPC | O | |
| 测量量 | ||||
| 分合闸线圈电流(Opening and Closing Coil Current) | OpnClsColA | MV | O | |
| 线路电流(Line Current) | OvAVal | MV | O | |
| 累积I2T(Cumulative I2T) | CumI2T | MV | O | |
| 机械动作时间 | McaOpTms | MV | O | 以秒为单位 |
| McaOpTmms | MV | O | 以毫秒为单位 | |
| 拉弧时间 | CATms | MV | O | 以秒为单位 |
| CATmms | MV | O | 以毫秒为单位 | |
| 开断电流有效值 | OpnAmp | MV | O | |
| 温度 | Tmp | MV | O | |
| 绝对压力 | AltPres | MV | O | |
| 相对湿度 | RlvMst | MV | O | |
| 密度 | Den | MV | O | |
| 压力(20度) | Pres | MV | O | |
| 体积比 | VoluRatio | MV | O | |
| 质量比 | QtyRatio | MV | O | |
| 露点 | DewPVal | MV | O | |
| 储能时间长度 | SavPwTms | MV | O | 以秒为单位 |
| SavPwTmms | MV | O | 以毫秒为单位 | |
| 动作类型 | OpTyp | INS | ||
| 实时电流 | RealA | WYE | O | 电流如果包含三相,则用WYE |
| RealAmp | MV | O | 非三相电流,则采用MV | |
| 开关量 | NumPwrUp | INS | O | |
| 剩余电寿命 | ResPwr | MV | O | |
| 累计开断电流 | TotOpnAmp | MV | O | |
| 累计触头磨损量 | TotTapLos | MV | O | |
| 累计开断次数 | TotOpnCnt | MV | O | |
| 波形 | WavCrv | MV | O | |
-
开关(隔离刀闸) XSWI
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 外部设备健康(External equipment health) | EEHealth | ISI | O | |
| 外部设备铭牌(External equipment name plate) | EEName | PLATE | O | |
| 操作计数(Operation counter) | OperCnt | ISI | M | |
| 控制量 | ||||
| 开关位置(Switch position) | Pos | DPC | M | |
| 闭锁跳闸(Block opening) | BlkOpen | SPC | M | |
| 闭锁合闸(Block opening) | BlkClos | SPC | M | |
| 蓄能电动机允许(Charger motor enabled) | ChgmotorEn | SPC | O | |
| 状态量 | ||||
| 断路器操作性能力(Circuit breaker operating Capability) | SwTyp | ISI | M | |
| 波形定点切换能力(Point On Wave switching capability) | SwOpCap | ISI | M | |
-
电缆 ZACB
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 测量量 | ||||
| 泄漏电流 | RelA | WYE | O | 电流如果包含三相,则用WYE |
| RelAmp | MV | O | 非三相电流,则采用MV | |
| 绝缘电阻 | InsRis | MV | O | |
| 介质损耗因数 | LosFact | MV | O | |
| 局部放电量最大值 | MaxPaDsch | MV | O | |
| 局部放电量最大值相位 | MaxPaDsAng | MV | O | |
| 局部放电量平均值 | AvPaDsch | MV | O | |
| 越限放电脉冲数 | DschPlsOv | INS | O | |
| 局部放电放电波形 | PaDschCrv | SPS | O | 波形已形成 |
| MV | O | 波形测量值 | ||
| 局部放电谱图 | PaDschGrap | SPS | O | 谱图已形成 |
| MV | O | 波形测量值 | ||
-
电容器 ZCAP
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 外部设备健康(External equipment health) | EEHealth | ISI | O | |
| 外部设备铭牌(External equipment name plate) | EEName | PLATE | O | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 控制点 | ||||
| 电容器组设备状态(Capacitor bank device status) | CapDS | SPC | M | |
| 状态点 | ||||
| 由于放电引起的闭锁(Blocked due to discharge) | DschBlk | SPS | O | |
-
电抗器 ZREA
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 外部设备健康(External equipment health) | EEHealth | ISI | O | |
| 外部设备铭牌(External equipment name plate) | EEName | PLATE | O | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 测量量 | ||||
| H2 | H2 | MV | O | 绝缘液体介质中相对饱和湿度(百分数%表示) |
| CO2 | CO2 | MV | O | |
| CO | CO | MV | O | |
| CH4 | CH4 | MV | O | |
| C2H6 | C2H6 | MV | O | |
| C2H4 | C4H4 | MV | O | |
| C2H2 | C2H2 | MV | O | |
| 微水 | MicroH2O | MV | O | |
| 油温 | OilTmp | MV | O | |
| 环境温度 | EnvTmp | MV | O | |
| 浓度报警 | DenAlm | SPS | O | |
| 铁心接地电流 | CGAmp | MV | O | 非三相电流,则采用MV |
| CGA | WYE | O | 电流如果包含三相,则用WYE | |
| 顶层油温 | ToOilTmp | MV | O | |
| 局部放电量最大值 | MaxPaDsch | MV | O | |
| 局部放电量最大值相位 | MaxPaDsAng | MV | O | |
| 局部放电量平均值 | AvPaDsch | MV | O | |
| 越限放电脉冲数 | DschPlsOv | INS | O | |
| 局部放电放电波形 | PaDschCrv | SPS | O | 波形已形成 |
| MV | O | 波形测量值 | ||
| 局部放电谱图 | PaDschGrap | SPS | O | 谱图已形成 |
| MV | O | 波形测量值 | ||
-
电流互感器 TCTR
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 外部设备健康(External equipment health) | EEHealth | ISI | O | |
| 外部设备铭牌(External equipment name plate) | EEName | PLATE | O | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 测量量 | ||||
| 泄漏电流 | RelA | WYE | O | 电流如果包含三相,则用WYE |
| RelAmp | MV | O | 非三相电流,则采用MV | |
| 介质损耗因数 | LosFact | MV | O | |
| 电容量 | React | MV | M | React |
| 电容基值 | ReactVal | MV | O | ReactVal |
-
电压互感器 TVTR
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 测量量 | ||||
| 泄漏电流 | RelA | WYE | O | 电流如果包含三相,则用WYE |
| RelAmp | MV | O | 非三相电流,则采用MV | |
| 介质损耗因数 | LosFact | MV | O | |
| 电容量 | React | MV | M | React |
| 电容基值 | ReactVal | MV | O | ReactVal |
-
避雷器 ZATR
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 外部设备健康(External equipment health) | EEHealth | ISI | O | |
| 外部设备铭牌(External equipment name plate) | EEName | PLATE | O | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 测量量 | ||||
| 全电流(Total Current) | TolCur | MV | O | |
| 阻性电流(Fundamental Resistive Current) | FundRCur | MV | O | |
-
绝缘子 ZINL
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 外部设备健康(External equipment health) | EEHealth | ISI | O | |
| 外部设备铭牌(External equipment name plate) | EEName | PLATE | O | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 测量量 | ||||
| 温度(Temperature) | Tmp | MV | O | |
| 湿度(Humidity) | Hum | MV | O | |
| 报警(Alarm) | Alm | MV | O | |
| 电池电压(Battery Voltage) | BatVol | MV | O | |
| 等值盐密(salt density) | ESDD | MV | O | |
| 平均泄漏电流(Average leakage current) | AvAmp | MV | O | |
| 最大泄漏电流(Maximum leakage current) | MaxRelAmp | MV | O | |
用Postgresql作为BIND9 数据存储情况下TXT等包含空格记录的处理
前段时间尝试用PostgreSQL 作为BIND9的后端数据存储玩玩,发现真不错,需要的Postgresql数据库表结构简单,查询效率高、及时生效。SOA记录也是一条语句,但发送邮件需要的TXT记录出现了问题,按照SPF格式写入了以下TXT记录:“v=spf1 ip4:60.166.118.xxx include:xuplus.com -all”,结果使用nslookup查询出来的情况竟然是这样的:
服务器: google-public-dns-a.google.com
Address: 8.8.8.8非权威应答:
xuplus.com text ="v=spf1"
"ip4:60.166.118.xxx"
"include:xuplus.com"
"-all"
这样的记录是没有办法使用的,使用SPF记录测试工具(http://www.openspf.org/Tools)是没有办法通过。查阅了一番资料发现无法解决这个问题,翻阅bind9 源代码发现在rdata.c文件的dns_rdata_tofmttext函数中使用了的linebreak就是空格字符,那么向spf这种需要包含空格的记录怎么办呢?经过尝试可以添加斜线(\)作为转义字符,由于数据库记录中斜线也需要转义,所以将记录对应的rdata字段值改成 ‘v=spf1\\ ip4:60.166.118.xxx\\ include:xuplus.com\\ -all’这样的即可,这样之后再次nslookup就可以发现结果正常了:
服务器: cache2.ahwhtel.net.cn
Address: 202.102.199.68非权威应答:
xuplus.com text ="v=spf1 ip4:60.166.118.xxx include:xuplus.com -all"
xuplus.com nameserver = dns2.xuplus.com
xuplus.com nameserver = dns1.xuplus.com
dns1.gi-rms.com internet address = 60.166.118.xxx
dns2.gi-rms.com internet address = 60.166.118.xxx
BIND 9也有转移字符:斜线(\)。
PostgreSQL 9.0基于streaming replication的Primary/Standby集群安装典型配置文件
最近给PostgreSQL搞伤了,Debian 5默认PostgreSQL是8.4,本身是不支持Primary/Standby集群的。在经历尝试Slony的超级复杂配置和pgpool无法按照步骤成功的痛苦经历情况下,将PostgreSQL升级到9.0,但是根据网上一些手册还是配置不成功,经过摸索终于成功配置了,并将配置文件公布出来供参考。
安装指令如下,其中192.168.0.212作为Primary服务器,192.168.0.211作为Standby服务器
两台服务器共同执行部分:
-
修改apt源
vim /etc/apt/sources.list
在最后加入:
deb http://backports.debian.org/debian-backports lenny-backports main
deb http://backports.debian.org/debian-backports lenny-backports-sloppy main
apt-update
-
安装PostgreSQL数据库服务
wget http://ftp.us.debian.org/debian/pool/main/o/ossp-uuid/libossp-uuid15_1.5.1-1.1+b1_i386.deb
wget http://ftp.us.debian.org/debian/pool/main/o/ossp-uuid/libossp-uuid-dev_1.5.1-1.1+b1_i386.deb
dpkg -i libossp-uuid*.deb
apt-get install -t lenny-backports postgresql-common
apt-get install -t lenny-backports-sloppy postgresql-9.0 postgresql-client-9.0 postgresql-contrib-9.0 postgresql-server-dev-9.0
-
修改访问控制
vim /etc/postgresql/9.0/main/pg_hba.conf
最后加一行
host all all 192.168.0.0/24 md5
-
修改监听范围
vim /etc/postgresql/9.0/main/postgresql.conf
修改listen_addresses = ‘localhost’为listen_addresses = ‘*’,如果前面有#号则需要删除#号
-
重新启动postgresql服务
/etc/init.d/postgresql restart
212 Primary服务器配置
-
设置同步账号
su – postgres
psql
create user repl superuser log in password ‘replpwd’ ;
-
修改访问控制
vim /etc/postgresql/9.0/main/pg_hba.conf
最后添加以下内容
host replication repl 192.168.0.211/32 md5
-
修改postgresql服务配置文件
vim /etc/postgresql/9.0/main/postgresql.conf
主要配置修改如下:
wal_level = hot_standby
archive_mode = on
archive_command = ‘cp -i %p /var/lib/postgresql/9.0/archivedir/%f </dev/null’
archive_timeout = 600
max_wal_senders = 5
wal_keep_segments = 32
-
建立归档目录
su – postgres
mkdir /var/lib/postgresql/9.0/archivedir/
-
重启服务
/etc/init.d/postgresql stop
/etc/init.d/postgresql start
211Standby服务器配置
-
修改postgresql服务配置文件
vim /etc/postgresql/9.0/main/postgresql.conf
主要配置修改如下:
wal_level = hot_standby
hot_standby = on
vim /etc/postgresql/9.0/main/recovery.conf
内容如下:
restore_command = ‘cp /var/lib/postgresql/9.0/archivedir/%f %p’ archive_cleanup_command = ‘pg_archivecleanup /var/lib/postgresql/9.0/archivedir %r’
standby_mode = ‘on’
primary_conninfo = ‘host=192.168.0.212 port=5432 user=repl password=replpwd’
trigger_file = ‘/var/lib/postgresql/9.0/trigger_activestb’
cp /etc/postgresql/9.0/main/recovery.conf /var/lib/postgresql/9.0/main/
-
停止服务
/etc/init.d/postgresql stop
-
删除原数据目录下数据文件
su – postgres
cd /var/lib/postgresql/9.0/
rm –R –f main
mkdir main
chmod –R 700 main
传送数据文件到StandBy并启动集群
-
从212服务器中传送文件(在212服务器执行)
su – postgres
psql -c "SELECT pg_start_backup(‘label’,true);"
rsync -avz /var/lib/postgresql/9.0/main/* postgres@192.168.0.211:/var/lib/postgresql/9.0/main/
注意:这里rsync是没有办法执行的,需要先建立两个服务器之间关于postgres之间的ssh 密钥文件交换。
-
211服务器删除pid文件(在211服务器执行)
rm /var/lib/postgressql/9.0/main/postgresql.pid
/etc/init.d/postgresql restart
-
212服务器正式启动主从模式(在212服务器执行)
su – postgres
psql -c "SELECT * from pg_stop_backup();"
exit
/etc/init.d/postgresql restart
测试
在Primary服务器上建立一个数据库或者修改一个数据表,可以在StandBy数据库上看到同样的修改操作发生了。
配置参考文件
可直接使用的配置参考文件见:。注意前缀分别代表在那台服务器上的配置文件。
给CodeIgniter 2.0.1中的PostgreSQL 数据库驱动打两个补丁
近期帮朋友用CodeIgniter基于PostgreSQL做了个小东西,发现CodeIgniter2.0.0在实现PostgreSQL数据库驱动是有两个小缺陷。
一个是CI的数据库通用接口insert_batch,CI2.0发布包中的PosgreSQL驱动实现,并没有实现该接口,可以在system\database\drivers\postgre\postgre_driver.php文件中的_insert函数下添加如下函数。
// -------------------------------------------------------------------- /** * Insert_batch statement * * Generates a platform-specific insert string from the supplied data * * @access public * @param string the table name * @param array the insert keys * @param array the insert values * @return string */ function _insert_batch($table, $keys, $values) { return "INSERT INTO ".$table." (".implode(', ', $keys).") VALUES ".implode(', ', $values); } // --------------------------------------------------------------------
另一个是insert_id()函数,该函数如果在数据表没有serial字段可能无法返回数值,导致问题,特别是主从表而从表不需要serial字段的情况下。
如果碰到这个问题可以把原来的:
elseif ($table != null && $column != null && $v >= '8.0') { $sql = sprintf("SELECT pg_get_serial_sequence('%s','%s') as seq", $table, $column); $query = $this->query($sql); $row = $query->row(); $sql = sprintf("SELECT CURRVAL('%s') as ins_id", $row->seq); }
修改成:
elseif ($table != null && $column != null && $v >= '8.0') { $sql = sprintf("SELECT pg_get_serial_sequence('%s','%s') as seq", $table, $column); $query = $this->query($sql); $row = $query->row(); if($row->seq!='') $sql = sprintf("SELECT CURRVAL('%s') as ins_id", $row->seq); else $sql='SELECT LASTVAL() as ins_id'; }
2011年兔年个人计划
虎年平稳结束,在2010年发生了两件重要的事情,进入兔年后,正式迈入奔四时代,古人云:“三十而立”,而我马上就三十周岁了确什么也没有立起来,这就是2010年我焦虑了一整年的原因。2011年还是需要做很多事情的,写下来到龙年到来的时候看看做到了哪些。
1、工作方面
- 向电力自动化方向转型
- 进行个人收入、职位、能力方面提升
- 寻找下一个方向工作机会
2、家庭方面
- 敦促老婆完成两项资格考试和尝试新的方向
- 给小贝壳添置一台iPad或者平板作为她个人电脑
- 搞定父母一个人的养老保险
- 帮助表弟找一份工作
- 确保在老婆转型过程中家庭总收入不下降
3、个人方面
- 完成信息系统项目管理师之后的高级项目经理或者项目经理认证
- 进行一级建造师考试
- 添置一台新笔记本和替换现有手机
- 开始Android或者iOS开发学习
CentOS下redmine、apache、svn配置安装心得
CentOS默认开启了SELinux,安装Redmine、apache、svn之类的还是蛮复杂的,经过几次折腾之后,终于顺利将redmine折腾成功了,有些心得记录下来备查:
集成方案大体为:
a) svn和apache集成,通过http协议访问svn,svn使用域名svn.test.com,仓库访问路径为:http://svn.test.com/XXXX
b) svn通过Perl和redmine的数据库集成提供身份和权限认证,仓库访问用户名和密码由redmine中创建的用户和密码访问,可访问项目仓库受redmine控制
c) redmine用mongrel_rails 运行于3000端口
d) apache使用proxy模块将pms.image-pro.com.cn的80端口反向代理到redmine的3000端口
e) 每5分钟通过cron的形式将redmine中项目信息同步到svn中
1、不要使用passenger集成Apache,使用反向代理方式集成Apache
官方指南中使用passenger来和Apache集成,但是passenger跟SELinux集成是很困难正常运行的,解决办法需要将SELinux更改为permissive模式(编辑
/etc/sysconfig/selinux文件修改为SELINUX=permissive),然而使用Apache的反向代理向rails转发却简单得多。
这种方式需要开启redmine的“启用用于版本库管理的Web Service”功能,设置方式为安装完成之后,用admin账号登陆redmine,进入“管理”->“配置”->“版本库”设置页面开启“启用用于版本库管理的Web Service”选项,并生成一个API Key,这个API key有用。
相关virtualhost配置节点如下:
<VirtualHost *:80> ServerAdmin bbs@test.com DocumentRoot "/var/www/redmine" ServerName pms.test.com ErrorLog "logs/pms.test.com-error.log" CustomLog "logs/pms.test.com-access.log" combined <Location /sys> Order deny,allow Allow from 127.0.0.1 Deny from all </Location> ProxyPass / http://localhost:3000/ ProxyPassReverse / http://localhost:3000/ </VirtualHost>
注意:如果/etc/hosts文件中没有解析相关域名到127.0.0.1的话,最好在Allow from后面添加一行让服务器ip可以正常访问。
2、使用两个virtualhost,分别安装redmine和svn,并使用一个location配置svn
这样的好处是明显的,svn单独访问也足够间接,不使用svn和svn-private两个Location配置来分别供给SVN客户端和redmine使用。
相关virtualhost配置节点如下:
<VirtualHost *:80> ServerAdmin svn@test.com ServerName svn.test.com ErrorLog "logs/dummy-svn.test.com-error.log" CustomLog "logs/dummy-svn.test.com-access.log" combined PerlLoadModule Apache2::Redmine <Location /> DAV svn SVNParentPath "/var/svn" Order deny,allow Deny from all Satisfy any PerlAccessHandler Apache::Authn::Redmine::access_handler PerlAuthenHandler Apache::Authn::Redmine::authen_handler AuthType Basic AuthName "Redmine SVN Repository" #read-only access <Limit GET PROPFIND OPTIONS REPORT> Require valid-user Allow from 127.0.0.1 # Allow from another-ip Satisfy any </Limit> # write access <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> ## for mysql RedmineDSN "DBI:mysql:database=redmine;host=localhost" RedmineDbUser "redmine" RedmineDbPass "password" </Location> </VirtualHost>
这里Allow from跟上面说的一样,最好添加服务器的ip通过,这样一个Location节点即可完成SVN设置,保证redmine中看到的svn仓库地址和SVN客户端(例如:TortoiseSVN)中使用的svn仓库地址一致(都是http://svn.test.com/XXXXX,而不是一个/svn-private/XXX,一个/svn/XXXX),而且svn仓库地址也够简洁。
3、如果邮件使用GMail的服务,则需要使用ruby 1.8.7,rails要求2.3.5
如果默认安装的是ruby 1.8.6则发送邮件的时候会报错,要求先自行starttls命令。必须升级到1.8.7
相关命令:
ftp ftp.ruby-lang.org cd /pub/ruby get ruby-1.8.7.pXXX.tar.gz tar zxvf ruby-1.8.7.pXXX.tar.gz ruby-1.8.7.pXXX cd ruby-1.8.7.pXXX ./configure --prefix=/usr make make install ruby -v which ruby cd ..
这里XXX是对应的发布版本号,当前是330,需要注意的是有些版本不一定能够正常编译通过,我在测试的时候p160编译就通过不了。
4、相关SELinux权限设置
执行以下命令赋予相关目录正确的SELinux属性:
chcon -u system_u -R -t httpd_log_t /var/www/redmine/log chcon -u system_u -R -t httpd_tmpfs_t /var/www/redmine/tmp chcon -u system_u -R -t httpd_sys_script_rw_t /var/www/redmine/files chcon -u system_u -R -t httpd_sys_script_rw_t /var/www/redmine/public/plugin_assets
由于svn版本库的SELinux设置比较复杂,可以通过以下命令直接处理完毕
chcon -u system_u -R -h -t httpd_sys_script_rw_t /var/svn
5、redmine跟svn之间有关版本库通过可以通过cron来完成
cron执行内容如下:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/bin/ruby /var/www/redmine/extra/svn/reposman.rb --redmine pms.test.com -k apikey --svn-dir /var/svn --owner apache --url http://svn.test.com/ >> /var/log/reposman.log
其中apikey内容为redmine后台生成的API key,这样每5分钟都会将redmine中的版本库信息同步到svn中(自动创建版本库)
6、redmine使用mongrel自启动
安装mongrel之后,使用cron来确保在启动时候自动启动mongrel_rails来启动redmine。
cron执行内容如下:
@reboot cd /var/www/redmine; rm -f log/mongrel.pid; /usr/bin/mongrel_rails start -p 3000 -d -e production
7、使用ImageMagick绘制甘特图,需要rMagick 1.5.17版本
执行以下命令:
yum install ImageMagick -y yum install ImageMagick-devel -y yum install freetype -y yum install gd-devel -y wget http://www.osresources.com/files/centos-windows-fonts/msfonts.tbz mkdir /usr/share/fonts/default/TrueType tar xvjpf msfonts.tbz -C /usr/share/fonts/default/TrueType/ gem install rmagick -v=1.15.17
8、Redmine.pm存放文字需要根据实际情况来定
x64位操作系统perl库文件位置是/usr/lib64/perl5下,perl5.10版本库位置不再是/perl5.8.8,最后位置也不一定是Apache目录,例如:我机器上就是复制到/usr/lib64/perl5/Apache2目录下,所以具体目录应该根据实际情况决定,拷贝完毕之后Apache的相关VirtualHost配置加载的模块语句就有变化了(如上我的变成了Apache::Redmine)。
整体来说,安装过程需要仔细,特别是SELinux在某种程度上来说是设置的羁绊,但RedHat等公司开发它肯定有他的安全必要性,所以我们还是完成SELinux环境下安装比较好。
相关可参考官方资源和文档:
Installing Redmine:http://www.redmine.org/projects/redmine/wiki/RedmineInstall
How To Automate repository creation:http://www.redmine.org/projects/redmine/wiki/HowTo_Automate_repository_creation
Repositories access control with apache, mod_dav_svn and mod_perl:http://www.redmine.org/projects/redmine/wiki/HowTo_configure_Redmine_for_advanced_Subversion_integration
Email Configuration:http://www.redmine.org/projects/redmine/wiki/EmailConfiguration
SELinux, Subversion and mod_svn:http://ejohansson.se/archives/2007/11/04/selinux-subversion-and-mod_svn/
我修改的可正常使用的Live Writer SkyDrive插件
微软的LiveWriter是不错的离线博客写作工具,同时微软也提供了25G的SkyDrive空间,对于存放博客附件来说,放在SkyDrive还是不错的选择,毕竟如果附件放在自己的博客主机上,有时候很容易流量超标。
2007年的时候Scott发布了一个SkyDrive插件(http://plugins.live.com/writer/detail/skydrive-embed-plugin),几年过去微软升级了SkyDrive,和office.live.com进行了整合,直接导致了SkyDrive插件不能使用,首先是文件夹浏览不能使用,再就是直接插入URL(包含office.live.com)时报错。我花了一点时间对这个插件做了一些hack。
主要hack内容有:
1、处理office.live.com和skydrive.live.com两种情况;
2、修改useiframe选择框不能使用情况,改用直接连接对应的url而不用Live Writer的插件函数;(这样就要求ie的代理设置必须保证可以正常访问网络);
3、更正浏览共享文件夹是不能显示共享者名字和不能正常获取文件夹下文件的问题;
4、获取文件夹下文件改用RSS方式,加快获取速度。
使用方法,下载附件中的文件替换skydrive embed plugin的文件或者直接放在Writer的Plugin目录下。
下载地址:
VMWare 中虚拟机报错“eth0 设备的 MAC 地址与预想的不符,忽略。”解决办法
今天拷贝了一个CentOS做测试,打开虚拟机的时候我选择了“I copied it.”,结果启动的时候,CentOS报错“eth0 设备的 MAC 地址与预想的不符,忽略。 ",进入系统使用ifup eth0命令也不能启用网卡,还是报同样错:
使用ifconfig -a命令可以看到eth0当前MAC地址为:00:0C:29:12:8A:3C :
打开虚拟机的配置文件CentOS.vmx可以看到记载的MAC地址为:00:0c:29:12:8a:3c
显然,我选择”I copied it.“之后VMWare 重新分配了一个新MAC,问题就在这里,修改一下eth0的MAC地址跟vmx文件一致应该可以解决问题。
执行vi /etc/sysconfig/network-scripts/ifcfg-eth0,将最后一行的MAC地址更改为00:0c:29:12:8a:3c,然后再启用网卡/sbin/ifup eth0,果然解决了这个问题。
有关VMWare虚拟机的网卡MAC地址说明,以及修改方式可以参考:http://hi.baidu.com/china_lantian/blog/item/4b5ef8d60d97132a06088ba0.html。
专题推荐
标签
分类目录
- Apple (3)
- dotNet (4)
- IT服务 (3)
- JAVA (2)
- linux (5)
- Oracle (1)
- Web应用 (42)
- 工作 (5)
- 生活叫吠 (29)
- 电力相关 (4)
- 智能电网 (2)
- 系统应用 (3)
- 网站管理 (7)
- 读书 (4)
- 软件应用 (24)
新浪微博
存档
近期文章
- 安装配置ttserver(Tokyo Cabinet,Tokyo Tyrant) ttserver.c:611错误解决办法
- 智能变电站中在线监测系统一次设备监测参量和IEC 61850模型
- 用Postgresql作为BIND9 数据存储情况下TXT等包含空格记录的处理
- PostgreSQL 9.0基于streaming replication的Primary/Standby集群安装典型配置文件
- 给CodeIgniter 2.0.1中的PostgreSQL 数据库驱动打两个补丁
- 2011年兔年个人计划
- CentOS下redmine、apache、svn配置安装心得
- 我修改的可正常使用的Live Writer SkyDrive插件
- 分享某公司负责IT运维的部门工作量统计文档和技术人员考核文档
- VMWare 中虚拟机报错“eth0 设备的 MAC 地址与预想的不符,忽略。”解决办法
近期评论
- 口臭怎么办 发表在《安装配置ttserver(Tokyo Cabinet,Tokyo Tyrant) ttserver.c:611错误解决办法》
- bulos 发表在《理想中的IEC 61850应用开发API》
- leo 发表在《PayDollar支付通道开发介绍及ECShop开发PayDollar注意事项》
- zhiwu 发表在《VMWare 中虚拟机报错“eth0 设备的 MAC 地址与预想的不符,忽略。”解决办法》
- 团长 发表在《iTouch/iPhone 没有apt-get命令?安装aptbackup就可以了。》
- 百乐买 发表在《遭遇腾讯SOSO爬虫攻击》
- ccoo9191 发表在《交通银行网银报错“E00001:密文参数传递丢失,请重试”解决办法》
- www.198818.com|3ityks 发表在《智能变电站中在线监测系统一次设备监测参量和IEC 61850模型》
- changmark 发表在《PHPMailer类发送中文邮件兼谈解决XOOPS中文发送邮件乱码》
- mytoplily 发表在《Excel 2007:双击Excel文件打不开提示找不到文件解决办法》

Dominic