存档

‘互联网技术’ 分类的存档

MySQL升级到5.6

2014年4月22日 1,113 views 没有评论

开发/测试环境,建议先升级到5.6,升级到MySQL 5.6的步骤如下,以官方二进制版本为例:

假设目录路径如下

ll /usr/local/mysql
lrwxrwxrwx 1 root root 39 Oct 23 2013 /usr/local/mysql -> /usr/local/mysql-5.5.34-linux2.6-x86_64

/usr/local/mysql/里面的 数据目录/日志目录 我们都是用的符号链接,这样可以更方便升级。

以下步骤均在root下执行

1、备份下数据,可以使用mysqldump备份下;

2、关闭MySQL实例

2、下载官方二进制版本 MySQL 5.6; http://dev.mysql.com/downloads/mysql/

3、删除符号链接 /usr/local/mysql, 解压缩 mysql到/usr/local下,并建立新的符号链接 mysql指向它

4、配置相应的实例的配置文件,注意数据目录正常可访问

5、启动实例

6、确认启动成功

7、运行如下命令[……]

Read more

分类: 互联网技术 标签:

运维规则浅谈-6

2014年1月22日 3,198 views 没有评论

运维规则浅谈-6

虽然我维护的数据库,都尽力会做到完善,有些东西融入到了骨子里,用心、用心、再用心,自然就基本无忧了,服务可用性永远是第一目标。 但国内的现状,或者或我了解的公司,确实有些片面放大了故障现象。 即使是google、facebook、twitter、亚马逊这样的公司,也时不时出一次故障,影响面不一定比国内的公司小。 这个世界上,只要存在着硬件载体,就必然伴随着各种各样的故障。有时为了追求可用性,设计复杂的架构,或者准备过多的冗余设施,往往导致解决方案的成本剧增,而解决方案的复杂,很可能增加维护成本和后期改造的难度。国内的众多公司,真正需要99.99%的高可用的到此有多少呢?有多少不能承受单点故障呢? 许多时候,产品才是王道,短期的失效,可能并不影响到用户的流失。

有时出现性能问题,往往是一件好事,因为往往伴随着流量的巨大增长。而在一定时间内,问题总是可以解的,我还从来没有碰到过用时间解决不了的技术问题,那么出现各种问题,检讨总结之类的往往可以事后总结,重要的经过问题的解决,经验/技术都能够上一个台阶。

当然,不是鼓励 冒险主义, 有计划的冒险才是可取的。在不[……]

Read more

关于博客写作

2014年1月20日 1,576 views 评论已被关闭

看来今年每个月2篇博客的任务完成不了了,工作/生活一直很忙。
能写多少写多少,年前尽量写多篇博客:)

分类: 互联网技术 标签: ,

运维规则浅谈-2

2014年1月20日 1,817 views 评论已被关闭

保持简单。 生产中常见的问题,是复杂性导致的问题,在这里要区分,那些是必然复杂的,那些是”想当然的“,”错误的理解“导致的复杂性。 如跨IDC的网络复杂性就是必然的,需要更复杂的处理策略。 比如 程序/项目 过多的数据流层次,就可能是不需要的,层次多了,而没有合适的协议约定,往往导致连锁反应,诊断困难,开发复杂。

cache or buffer 数据,应该限定在保护不容易扩展的资源,如数据库的大量读取。 或者提升用户体验,如在靠近用户的城市部署图片cache节点。 当资源很好的水平扩展的时候,添加cache层往往不是一个好主意的,可能因为cache的失效,导致应用的连锁反应失败,这样的情况可以看作一个”单点“。

没必要重复造轮子,也没有什么都从外部获取工具/代码/框架。有时从头开始做一个东西,可以锻炼团队,即使失败了。 在合适的时间以合适的成本切入是需要考量的,投资回报率是是需要考虑的。
这点需要”允许出错“的企业文化,或者”允许出错“的运维文化,传统的KPI可能对此形成不必要的桎梏。

12.Redis-sentinel解决方案

2013年11月22日 1,335 views 没有评论

Redis的高可用

目前具备工程实践性的方案是Redis-sentinel方案,以及由其衍生的其他变形。另一个强大的方案,Redis Cluster

 

Redis-sentinel解决方案,我们可以参考下面这个图(来自REDIS-SENTINEL TWEMPROXY AGENT)。
架构说明:
应用通过TwemProxy这个代理来访问后端的Redis实例,TwemProxy可以实现sharding的功能。
 为了解决TwemProxy的高可用,引入了Haproxy+VIP的架构。
Redis sentinel监控Redis主从,处理主从切换,在Master宕的情况下,可以把它的一个从库提升为主,并修改其他从库指向新的主库。
虽然Redis sentinel可以很完美的处理主从切换,但仍然需要通知TwemProxy新的主库信息,所以引入了一个REDIS-TWEMPROXY AGENT组件,它会订阅Redis sentinel信息,在主库发生改变后,通知TwemProxy把流量指向新的主库。
Diagram
组件说明:
Haproxy: 高稳定的代理服务,提[……]

Read more

分类: 互联网技术 标签:

11.redis cluster

2013年11月22日 1,501 views 没有评论

Redis ClusterRedis 3.0以上提供的一个高可用方案。

1、截止目前,Redis的使用还是要承担一定风险的。看配置文件的说明。

# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# WARNING EXPERIMENTAL: Redis Cluster is considered to be stable code, however
# in order to mark it as “mature” we need to wait for a non trivial percentage
# of users to deploy it in production.
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

2、目前备份机制还不完善。那么需要在每个节点都进行备份,包括主节点,还需要备份下nodes.conf。

&nbs[……]

Read more

分类: 互联网技术 标签:

10.redis常用命令

2013年11月22日 1,127 views 没有评论

redis-cli使用
redis-cli -h 10.xx.xx.xx -p 6379

赋值相关
set server:name db110
get server:name
del server:name
SETNX :不存在这个key的时候才赋值.

SET connections 10
INCR connections => 11
INCR connections => 12
DEL connections
INCR connections => 1

过期指令
SET resource:lock “Redis Demo”
EXPIRE resource:lock 120
TTL resource:lock => 使用TTL命令验证key还可以存在多久,返回值:如果-1 ,表示永不过期,如果-2,表示不存在这个key

LIST操作 A list is a series of ordered values
RPUSH, LPUSH, LLEN, LRANGE, LPOP, and RPOP
RPUSH 在列表末[……]

Read more

分类: 互联网技术 标签:

9.redis监控和慢查询检查

2013年10月22日 1,851 views 没有评论

内存监控:不能超过物理内存的80-90%
used_memory
used_memory_peak
超过分配的最大内存的85%就报警

OS磁盘IO监控
是否使用到了SI/SO

 

Persistence
rdb_changes_since_last_save   从上次保存以来有多少变更,意即崩溃可能丢失的数据量.
rdb_last_bgsave_time_sec  快照备份dump一次耗费的时间(秒)
Replication

master_link_status:up(正常) down(不正常)
master_link_down_since_seconds:1356900595xxxxxx : Number of seconds since the link is down (如果主从复制中断,会有这个附加信息出现)

Fork Performance
latest_fork_usec      : Duration of the latest fork operation in microseconds.
慢查询[……]

Read more

分类: 互联网技术 标签:

8.redis故障恢复

2013年10月22日 1,097 views 没有评论
宕机后,直接启动redis server即可.会把数据文件load进内存,如果持久化方式为aof,需要应用完aof文件(可能很耗时).

 

如果遇到主机宕机的情况,需要将备机切换为主机,可以使用redis-cli连接备机,输入SLAVEOF NO ONE命令即可将备机切换为主机。
切换主从示例:
1. 在原来的从库上
redis-cli> SLAVEOF NO ONE
2. 确认
3. 待主库起来后,在主库上执行
redis-cli > SLAVEOF slave_ip slave_port
4.确认. 检查复制是否完成,日志文件中显示“Append only file successfully rewritten.”
如果需要切换回来,继续下面的步骤.
 待客户端全部迁移到主机后,使用slaveof no one命令修改主机复制选项
重启redis从库.(此时配置文件仍是从库)
以上注意配置文件和实际复制关系一致.

 

如果aof文件损坏,需修复aof文件.参考:What should I[……]

Read more

分类: 互联网技术 标签:

7.redis性能诊断

2013年10月22日 1,326 views 没有评论

需留意rewrite aof文件耗费的内存,可能突然增加双倍的内存。

taskset、cgroup、numactl等技术的应用可能增加维护难度,大部分情况不建议使用,除非你很需要且很熟悉它们。另,绑定cpu节点是可行的,但千万不要绑定到某个核(core)。Redis的fork后台进程的操作非常耗CPU,如bgsave 或者 AOF 重写。

一般情况下,内存数据库的处理/计算应该很快的(亚微妙级别),理论上应该很快返回结果(微妙级别),如果碰到延时较久,比如几秒,往往是出了性能问题。我们这里说的延时指的是 从客户端发布一个命令到查询结果返回给客户端所耗费的总时间。以下仅讨论物理机部署的Redis,如果Redis部署在虚拟机上,性能可能差得多。

延时

可以使用如下命令测试延时(毫秒)

redis-cli --latency -h `host` -p `port`    

 

固有延时(intrinsic latency)

2.8.7以后redis-cli可以用来衡量固有延时,固有延时指得是我们的redis的基础环境(操作系统)所导致的延时,[……]

Read more

分类: 互联网技术 标签: