低科技圣经

Filed under: 生活工作 | No Comments »
Posted on

在忙碌的都市中已经习惯这样生活,我们一直被这样教育着:“要跟上时代的步伐,要让生活变得充实。”

远离都市,会让你变得空虚,难道真的是空虚吗?只是那颗 焦躁不安的心,并没有沉淀下来,去享受原始的安宁。

有时候怀念那种原始,又希望原始中,能有现代化的东西相伴。

  低科技圣经

  《Better Off:Flipping the Switch on Technology》

  作者艾瑞克·布兰迪(Eric Brende)原本在麻省理工学院攻读“科学、技术与社会”。五年前的一天,他关上电脑,突然问了自己一个问题,“我上瘾了吗?”不是对药物,而是对技术。这位虔诚的天主教徒开始怀疑,文明社会层出不穷的高科技,到底有多少是人们真正需要的?那些节省劳动力的高科技设备,真的减轻工作吗?还是让我们变得更累?到底是技术改善人的生活,还是现代人在拿自己的生命去适应机器?人和机器之间到底应该保持什么样的关系?

  为了回答这些问题,他带着新婚妻子玛丽,从高科技的大本营MIT搬到一个原始的阿门宗派社区,那里没有文明社会最基本的动力——电。他们在那里住了18个月,没有电视、电脑,没有空调、暖气,但夏天有凉风,冬天烧壁炉,他们几乎不开汽车,也没有洗衣机,连肥皂都是自己动手做的。他妻子喜欢用手洗衣,这是一项不错的有氧运动。他们自己种南瓜,看着第一个孩子出生。他们发现,这种近乎原始人的生活是一种解脱,而不是束缚,在城市里疯狂赚钱大把消费的快感远远比不上这里自食其力,以低收入支付低开销所获得的闲适感和愉悦感。现代技术不断创造新的虚假需求——对燃油、空间、金钱和时间,但让人们遗忘了更重要的精神追求,对于家庭,对于社会,甚至思考本身。现在艾瑞克·布兰迪住在圣·路易斯的一幢简朴公寓里,维持城市里最低的技术需求,靠造肥皂和拉旅游人力车维持生机。

  技术极简主义

  一个叫迈克·马恩的软件工程师,30岁,德州人,有两台笔记本电脑,两台台式电脑,8个电子邮箱,3个不同版本的Outlook,还在各大门户散落着多个冲突的日程表。有一天,他终于无法忍受这种邋遢的数字生活,咬咬牙卖掉了一台笔记本电脑和两台台式电脑,注销了7个E-mail邮箱,只保留了Gmail账号,取消了邮箱里所有无用的订阅杂志,把书签都存在 del.icio.us上,所的日程安排统统归到Yahoo的在线日程表上。他甚至卸掉了Word程序,转用Dos系统下的文本文件,蓝色背景下输入灰色字符,没有任何窗口,甚至不需要鼠标,速度奇快,从不死机。

  简化复杂的数字生活,提倡技术的“极简主义”原则,重新启用低科技,在如今的极客圈内颇为流行。2003年年底,一个叫丹尼·布赖恩的技术专栏作家给70个“变态工作狂”写信(大部分为软件工程师),问他们为什么能保持这么高的工作效率?结果他发现,这些人的工作方法都相当“低科技”——没有PDA,没有日程规划软件,只是在写字板上写下自己一天要做的事情,或者给自己发一封邮件,提醒自己一天要注意的事情,还有人干脆在桌上贴一张黄色的小报事贴。一年后,丹尼·布赖恩在麻省理工学院的一次新兴技术展会上做了一次非常轰动的演讲,“我们的生活已经被乱七八糟的高新科技搞得越来越复杂,是提倡低科技的时候了”。但他并不全盘否定新技术,所谓低科技,只是崇尚“简单”和“舒服”。

  高科技的本意是提高工作效率,但讽刺的是,IT精英们往往最容易被周围环境所干扰。一些我们认为能大大提高工作效率的东西,最终往往证明最浪费时间。两年前,一家美国公司禁止员工使用E-mail,因为它比面对面谈话,或者打电话要费时费力得多,据称这一举措能让那家公司每年节省2000万美元。其实,只要你坐在一台计算机前,就不可避免干扰和分心,尤其在网络上,层层链接就像无底洞一样让你没完没了地点下去。本来你只打算花10分钟时间写一封邮件,但一个小时后,你发现自己什么都没做,只打开了七八个莫名其妙的窗口,还有几个MSN聊天窗口在闪烁着一些无关紧要的闲话。

  复古设计的情绪

  2003年阿迪达斯的三叶草重上鞋架时,鞋底镶嵌微型芯片的智能跑鞋阿迪达斯1号已经在实验室测试完毕了。苹果的袖珍桌面音箱iPod Hi-Fi标价349美元时,木头外壳的电子管音响却开始悄悄在发烧友中流行。模拟技术到数字技术的转变曾经被当作90年代全球商业格局变化的内因,电加热座椅,倒车雷达,感性式空调,汽车制造商在最近10年间疯狂地往汽车4个轮子上装电子部件,而电子产品本身在延续18个月升级一次的摩尔定律,以及8个月酝酿一种新潮流的手机设计方针,已经让全球年轻一代对所谓的新潮和时尚刺激不再有反应,复古反而成了小众口味的大趋势。

  一个叫尼古拉斯·若普的英国青年早就玩起了科技复古,他的Pokia被《纽约时报》家庭版策划人阿斯鲁·萨拉斯视作复古情绪的新电子玩具。不仅仅是因为Pokia取了一个挑逗诺基亚的名字,尼古拉斯·若普利用各种老旧电话的听筒,将其连接到各种新款手机之上,黑色的电话线耷拉在外套口袋边缘,看起来就如同20年前朋克腰间的狗链一样。之所以他用P替代诺基亚开头的N,正是寓意着低科技含量版的Nokia,从耳机与话筒分离的古董电话到二战中盟军的无线电台,各种传统电话听筒都被他重新改装,30美元起价一套Pokia。他接受《纽约时报》家庭版采访时解释道:“我用手机也已经有将近10年了,它们变得越来越小,功能越来越多,但设计却在倒退。那种简单、耐用、专注、单一的设计思想已经迷失了。”很多数字技术时代的复古技术,正是希望找回简单的感觉。这恰恰与罗马俱乐部那本著名的《增长的极限》相吻合,人口、工业发展、粮食、不可再生的自然资源和污染,这五项罗马俱乐部在1968年成立时的研究指标,早已经不再仅仅是寻找人类出路的衡量坐标,纠正现有问题的新态度、新政策和新制度彻底被用在了产品设计上,复古设计暗含的可持续发展情绪被人为放大了。

定时备份网站、数据的shell脚本

Filed under: 服务器&PC | No Comments »
Posted on

加入crontab -e后,每天早上5定时,开始开始执行备份脚本。
#0 5 * * * /bak/bak.sh

以下是bak.sh 备份脚本,只保留最近7天的备份
假设 网站目录为: /var/www/d5s/, 备份目录为: /bak/


#!/bin/bash
cd /var/www/
/bin/tar -czf /bak/$(date +%F)_d5s.tar.gz d5s
/bin/rm -f /bak/$(date +%F –date=’7 days ago’)_d5s.tar.gz

/usr/bin/mysqldump –opt -uusername -ppassword your_data > /bak/$(date +%F)_d5s.sql
/bin/rm -f /bak/$(date +%F –date=’7 days ago’)_d5s.sql

利用Tokyo Tyrant构建兼容Memcached协议、支持故障转移、高并发的分布式key-value持久存储系统

Filed under: 数据库 | No Comments »
Posted on

转自:http://blog.s135.com/read.php/362.htm

这么牛X的数据库,为什么没人广泛采用呢?

估计

1、大部分人 不了解这东西;

2、项目管理层的人也许了解,但不敢尝试。

希望能有机会用到这样的好东西。

Tokyo Cabinet 是日本人 平林幹雄 开发的一款 DBM 数据库,该数据库读写非常快,哈希模式写入100万条数据只需0.643秒,读取100万条数据只需0.773秒,是 Berkeley DB 等 DBM 的几倍。

点击在新窗口中浏览此图片


Tokyo Tyrant 是由同一作者开发的 Tokyo Cabinet 数据库网络接口。它拥有Memcached兼容协议,也可以通过HTTP协议进行数据交换。

Tokyo Tyrant 加上 Tokyo Cabinet,构成了一款支持高并发的分布式持久存储系统,对任何原有Memcached客户端来讲,可以将Tokyo Tyrant看成是一个Memcached,但是,它的数据是可以持久存储的。这一点,跟新浪的Memcachedb性质一样。

相比Memcachedb而言,Tokyo Tyrant具有以下优势:

1、故障转移:Tokyo Tyrant支持双机互为主辅模式,主辅库均可读写,而Memcachedb目前支持类似MySQL主辅库同步的方式实现读写分离,支持“主服务器可读写、辅助服务器只读”模式。

点击在新窗口中浏览此图片

这里使用 $memcache->addServer 而不是 $memcache->connect 去连接 Tokyo Tyrant 服务器,是因为当 Memcache 客户端使用 addServer 服务器池时,是根据“crc32(key) % current_server_num”哈希算法将 key 哈希到不同的服务器的,PHP、C 和 python 的客户端都是如此的算法。Memcache 客户端的 addserver 具有故障转移机制,当 addserver 了2台 Memcached 服务器,而其中1台宕机了,那么 current_server_num 会由原先的2变成1。

引用 memcached 官方网站和 PHP 手册中的两段话:

引用

http://www.danga.com/memcached/
If a host goes down, the API re-maps that dead host’s requests onto the servers that are available.

http://cn.php.net/manual/zh/function.Memcache-addServer.php
Failover may occur at any stage in any of the methods, as long as other servers are available the request the user won’t notice. Any kind of socket or Memcached server level errors (except out-of-memory) may trigger the failover. Normal client errors such as adding an existing key will not trigger a failover.


2、日志文件体积小:Tokyo Tyrant用于主辅同步的日志文件比较小,大约是数据库文件的1.3倍,而Memcachedb的同步日志文件非常大,如果不定期清理,很容易将磁盘写满。


3、超大数据量下表现出色:

点击在新窗口中浏览此图片

但是,Tokyo Tyrant 也有缺点:在32位操作系统下,作为 Tokyo Tyrant 后端存储的 Tokyo Cabinet 数据库单个文件不能超过2G,而64位操作系统则不受这一限制。所以,如果使用 Tokyo Tyrant,推荐在64位CPU、操作系统上安装运行。


一、安装
1、首先编译安装tokyocabinet数据库

wget http://blog.s135.com/soft/linux/memcached/tokyocabinet-1.3.1.tar.gz
tar zxvf tokyocabinet-1.3.1.tar.gz
cd tokyocabinet-1.3.1/
./configure
make
make install
cd ../

2、然后编译安装tokyotyrant

wget http://blog.s135.com/soft/linux/memcached/tokyotyrant-1.0.0.tar.gz
tar zxvf tokyotyrant-1.0.0.tar.gz
cd tokyotyrant-1.0.0/
./configure
make
make install
cd ../


二、配置
1、创建tokyotyrant数据文件存放目录

mkdir -p /ttserver/

2、启动tokyotyrant的主进程(ttserver)
(1)、单机模式

ulimit -SHn 51200
ttserver -host 127.0.0.1 -port 11211 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 1 -rts /ttserver/ttserver.rts /ttserver/database.tch

(2)、双机互为主辅模式
服务器192.168.1.91:

ulimit -SHn 51200
ttserver -host 192.168.1.91 -port 11211 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 91 -mhost 192.168.1.92 -mport 11211 -rts /ttserver/ttserver.rts /ttserver/database.tch

服务器192.168.1.92:

ulimit -SHn 51200
ttserver -host 192.168.1.92 -port 11211 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 92 -mhost 192.168.1.91 -mport 11211 -rts /ttserver/ttserver.rts /ttserver/database.tch

(3)、参数说明
ttserver [-host name] [-port num] [-thnum num] [-tout num] [-dmn] [-pid path] [-log path] [-ld|-le] [-ulog path] [-ulim num] [-uas] [-sid num] [-mhost name] [-mport num] [-rts path] [dbname]

-host name : 指定需要绑定的服务器域名或IP地址。默认绑定这台服务器上的所有IP地址。
-port num : 指定需要绑定的端口号。默认端口号为1978
-thnum num : 指定线程数。默认为8个线程。
-tout num : 指定每个会话的超时时间(单位为秒)。默认永不超时。
-dmn : 以守护进程方式运行。
-pid path : 输出进程ID到指定文件(这里指定文件名)。
-log path : 输出日志信息到指定文件(这里指定文件名)。
-ld : 在日志文件中还记录DEBUG调试信息。
-le : 在日志文件中仅记录错误信息。
-ulog path : 指定同步日志文件存放路径(这里指定目录名)。
-ulim num : 指定每个同步日志文件的大小(例如128m)。
-uas : 使用异步IO记录更新日志(使用此项会减少磁盘IO消耗,但是数据会先放在内存中,不会立即写入磁盘,如果重启服务器或ttserver进程被kill掉,将导致部分数据丢失。一般情况下不建议使用)。
-sid num : 指定服务器ID号(当使用主辅模式时,每台ttserver需要不同的ID号)
-mhost name : 指定主辅同步模式下,主服务器的域名或IP地址。
-mport num : 指定主辅同步模式下,主服务器的端口号。
-rts path : 指定用来存放同步时间戳的文件名。

如果使用的是哈希数据库,可以指定参数“#bnum=xxx”来提高性能。它可以指定bucket存储桶的数量。例如指定“#bnum=1000000”,就可以将最新最热的100万条记录缓存在内存中:

ttserver -host 127.0.0.1 -port 11211 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 1 -rts /ttserver/ttserver.rts /ttserver/database.tch#bnum=1000000

如果大量的客户端访问ttserver,请确保文件描述符够用。许多服务器的默认文件描述符为1024,可以在启动ttserver前使用ulimit命令提高这项值。例如:

ulimit -SHn 51200

3、停止tokyotyrant(ttserver)

ps -ef | grep ttserver

找到ttserver的进程号并kill,例如:

kill -TERM 2159


三、调用
1、任何Memcached客户端均可直接调用tokyotyrant。

2、还可以通过HTTP方式调用,下面以Linux的curl命令为例,介绍如何操作tokyotyrant:
(1)、写数据,将数据“value”写入到“key”中:

curl -X PUT http://127.0.0.1:11211/key -d “value”

(2)、读数据,读取“key”中数据:

curl http://127.0.0.1:11211/key

(3)、删数据,删除“key”:

curl -X DELETE http://127.0.0.1:11211/key

MYSQL 主从服务器配置

Filed under: 数据库 | 2 Comments »
Posted on

mysql服务器的主从配置,本来是一件很简单的事情,无奈不是从零开始,总是在别人已经安装好的mysql服务器之上 ,这就会牵扯到,mysql的版本,启动文件,等一些问题。

不过没关系,先问清楚两点

1、mysql配置文件my.cnf的位置

2、如何启动、停止mysql,找好启动文件

假设有两台机器,已经安装好了mysql(尽量同版本,且两台机器同一网络,可以ping通)

有朋友说:“从服务器,不能低于主服务器的版本”,不过我是低于的,没有出现问题。

主机A: 192.168.1.100

从机B:192.168.1.101

可以有多台从机

1、先登录主机 A

mysql>GRANT REPLICATION SLAVE ON *.* TO ‘backup’@’192.168.1.101‘ IDENTIFIED BY ‘123456’;

赋予从机权限,有多台丛机,就执行多次

2、 打开主机A的my.cnf,输入

server-id               = 1    #主机标示,整数
log_bin                 = /var/log/mysql/mysql-bin.log   #确保此文件可写
read-only       =0  #主机,读写都可以
binlog-do-db    =test   #需要备份数据,多个写多行
binlog-ignore-db=mysql #不需要备份的数据库,多个写多行

3、打开从机B的my.cnf,输入

server-id               = 2
log_bin                 = /var/log/mysql/mysql-bin.log
master-host     =192.168.1.100
master-user     =backup
master-pass     =123456
master-port     =3306
master-connect-retry=60 #如果从服务器发现主服务器断掉,重新连接的时间差(秒)
replicate-do-db =test #只复制某个库
replicate-ignore-db=mysql #不复制某个库

4、同步数据库

有多种方法,我说最笨的一种,先mysqldump导出主机A的数据test为 test.sql

然后在,从机B上建立数据库test,mysql导入 test.sql到test库中

5、先重启主机A的mysql,再重启从机B的mysql

6、验证

在主机A中,mysql>show master status\G;

在从机B中,mysql>show slave status\G;

能看到大致这些内容

File: mysql-bin.000001
Position: 1374
Binlog_Do_DB: test
Binlog_Ignore_DB: mysql

可以在主机A中,做一些INSERT, UPDATE, DELETE 操作,看看主机B中,是否已经被修改
以下是一些其他朋友写的,我也做了参考

http://www.ningoo.net/html/2007/mysql_replication_configuration.html

http://leftleg.hzpub.com/post/645/

http://blog.zhangjianfeng.com/article/705

让老插件在firefox3.x上正常运行的简易方法

Filed under: 服务器&PC | No Comments »
Posted on

虽然firefox3出来有一段时间了,但是它的一些插件并没有跟上更新,尤其是鼠标手势,没这个,简直是干什么都不爽。

以下方法,试用了,好像没发现任何问题。

打开firefox3.0
在地址栏输入  about:config   回车
这时firefox会有一个风险确认提示,点击继续执行按钮。

在界面上 点击鼠标右键 新建一个布尔值 boolean
名称为 extensions.checkCompatibility
值为 false
确认

现在重新启动firefox,你会发现之前在3.0下被禁用的 extensions 重新生效了

转自:http://www.lupaworld.com/43/viewspace_61075.html

MYSQL 事务 笔记

Filed under: 数据库 | 3 Comments »
Posted on

 由于项目设计里面,牵扯到了金钱的转移,于是就要用到MYSQL的事务处理,来保证一组处理结果的正确性

用了事务,就不可避免的要牺牲一部分速度,来保证数据的正确性。

只有InnoDB支持事务

事务 ACID Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)

1、事务的原子性
一组事务,要么成功;要么撤回。

2、稳定性
有非法数据(外键约束之类),事务撤回。

3、隔离性
事务独立运行。
一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。
事务的100%隔离,需要牺牲速度。

4、可靠性
软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。
可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里。
开启事务
 START TRANSACTION 或 BEGIN

提交事务(关闭事务)
 COMMIT

放弃事务(关闭事务)
 ROLLBACK

折返点
 SAVEPOINT adqoo_1
 ROLLBACK TO SAVEPOINT adqoo_1
 发生在折返点 adqoo_1 之前的事务被提交,之后的被忽略

事务的终止

设置“自动提交”模式
 SET AUTOCOMMIT = 0
 每条SQL都是同一个事务的不同命令,之间由 COMMIT 或 ROLLBACK隔开
 掉线后,没有 COMMIT 的事务都被放弃

事务锁定模式

系统默认: 不需要等待某事务结束,可直接查询到结果,但不能再进行修改、删除。
缺点:查询到的结果,可能是已经过期的。
优点:不需要等待某事务结束,可直接查询到结果。

需要用以下模式来设定锁定模式

1、SELECT …… LOCK IN SHARE MODE(共享锁)
查询到的数据,就是数据库在这一时刻的数据(其他已commit事务的结果,已经反应到这里了)
SELECT 必须等待,某个事务结束后才能执行

2、SELECT …… FOR UPDATE(排它锁)
例如 SELECT * FROM tablename WHERE id<200
那么id<200的数据,被查询到的数据,都将不能再进行修改、删除、SELECT …… LOCK IN SHARE MODE操作
一直到此事务结束

共享锁 和 排它锁 的区别:在于是否阻断其他客户发出的 SELECT …… LOCK IN SHARE MODE命令

3、INSERT / UPDATE / DELETE
所有关联数据都会被锁定,加上排它锁

4、防插入锁
例如 SELECT * FROM tablename WHERE id>200
那么id>200的记录无法被插入

5、死锁
自动识别死锁
先进来的进程被执行,后来的进程收到出错消息,并按ROLLBACK方式回滚
innodb_lock_wait_timeout = n 来设置最长等待时间,默认是50秒

事务隔离模式

SET [SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL
READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE
1、不带SESSION、GLOBAL的SET命令
 只对下一个事务有效
2、SET SESSION
 为当前会话设置隔离模式
3、SET GLOBAL
 为以后新建的所有MYSQL连接设置隔离模式(当前连接不包括在内)

隔离模式

   READ UNCOMMITTED
 不隔离SELECT
 其他事务未完成的修改(未COMMIT),其结果也考虑在内

   READ COMMITTED
 把其他事务的 COMMIT 修改考虑在内
 同一个事务中,同一 SELECT 可能返回不同结果

   REPEATABLE READ(默认)
 不把其他事务的修改考虑在内,无论其他事务是否用COMMIT命令提交过
 同一个事务中,同一 SELECT 返回同一结果(前提是本事务,不修改)

   SERIALIZABLE
 和REPEATABLE READ类似,给所有的SELECT都加上了 共享锁

出错处理
 根据出错信息,执行相应的处理

MySQL DBA 管理 常用 命令

Filed under: 数据库 | No Comments »
Posted on

虽然自己不是DBA,但是作为一个程序员,多多少少,应该了解一些数据库方面的东西,并不能只关心程序,不考虑数据库,看到一篇文章,就先转过来,也许以后自己哪天会用到。

查看mysql的某个选项
show variables like ‘%VAR_NAME%’;
select @@VAR_NAME;

    在Linux下管理MySQL数据库的时候总有一些很紧急的情况,发现数据库突然变得压力很大了,那么作为一个DBA,也许需要一些常用的手段或者说命令去分析问题出现在哪里,然后解决:

数据库突然产生压力时查看正在查询的SQL:(如果这里内容太多表示并发执行的SQL过多,或许数据库堵塞了,会越来越慢,正常情况下这里应该很少有东西的,也就是连接都在Sleep状态)
/usr/local/mysql/bin/mysql -uroot -ppassword databaseName  -e “show full processlist” | grep -v Sleep

正在运行的SQL太多了,看不过来,那需要排序了,看持续执行时间最长的那些SQL:
/usr/local/mysql/bin/mysql -uroot -ppassword databaseName  -e “show full processlist” | grep -v Sleep | sort -k6rn >sort.tmp

如果发现IOWait很高,请查看临时表的生成情况,特别是disk tmp table:
/usr/local/mysql/bin/mysql -uroot -ppassword databaseName  -e “show global status like ‘%tmp%’”

通过这样一些办法可以查看数据库都在忙什么,那些忙的SQL又具体在哪一个步骤上卡住了,是在创建磁盘临时文件、Sending Data、statistics?依照不同的原因来解决问题

—————————————————————
关于Mysql Replication日常管理,重做,问题分析时常用的办法:

重做Slave,或者Master变化等等,需要将Slave与新的Master同步:
change master to master_host=IP,master_user=’replication userName’,master
_password=’replication Passwrod’,master_log_file=’log-bin.000001′,master_log_pos=0;

导出数据成SQL文本,慎用,根据你的DB大小会锁表,导致堵塞其他访问:
nohup /usr/local/mysql/bin/mysqldump –database DATABASEName -uUserName -pPassWord –lock-all-tables -F >DATA20070519.sql &
-F后会刷新Master Log这样配合上面的Change Master可以让Slave进行同步

只导出数据库的结构(没有任何内容)
/usr/local/mysql/bin/mysqldump -d DATABASEName -uUserName -pPassWord >DATA20070519.structure

只导出数据库的数据(没有创建表结构的语句等等)
/usr/local/mysql/bin/mysqldump -t DATABASEName -uUserName -pPassWord >DATA20070519.data

同步的时候出现问题(或者其他问题)了,根据同步出现问题的位置(偏移量),查看Binlog的具体内容
/usr/local/mysql/bin/mysqlbinlog binlogFileName –start-position=偏移量
呵呵,我们碰到过Master执行的SQL到了Slave会报语法错误,够诡异吧!不过就是这样查到了原因:如果通过存储过程将bit的内容改为1就会出现这样的问题,后来将bit改为tinyint(1)就好了

授权给某一台Slave拥有复制的权限:
grant replication slave on *.* to 用户名@IP identified by ‘密码’;

查看Slave状态:
Show slave status \G
查看Master状态:
Show master status;
重置Slave(慎用)
reset slave;
Slave出现问题了,先跳过这一条语句(请确认所要跳过的具体内容不会影响后面的同步,确认方法查看Binlog文件):
set global sql_slave_skip_counter=1; (记得先暂停Slave:stop slave; 然后重启Slave:start slave;)

———————————————–
纯粹Linux相关的:
tcpdump -A “dst port 3306″ 查看3306端口的通信具体内容 :)  

转自:http://mrtips.blog.hexun.com/5904126_d.html

Google Ajax Library API

Filed under: 交互设计 | No Comments »
Posted on

不知道现在还有多少网站是自己从头开始写js的,至少我现在已经离不开jquery了,在做一个网站之前,必定要先引入js类库–jquery

如果大家都从一个地方载入js类库,那么载入速度将会快很多,伟大的google已经帮我们想到了 Google Ajax Library API

看看 “某人的栖息地” 写的教程说明:http://www.ooso.net/index.php/archives/404

呼吁各位使用这些 jQuery、prototype、script.aculo.us、MooTools、dojo 类库的朋友,都自己从 Google Ajax Library API 下载吧

意大利,你平的不冤

Filed under: 生活工作 | No Comments »
Posted on

很久没有这么晚熬夜看球了,今晚看了罗马尼亚 VS 意大利 的小组赛,感觉一个字,值!

意大利小组赛0:3负于荷兰后,这一战再不赢,出线的希望就很小了。

精彩场景,每分钟都有,个人感觉,意大利控球时间也长,组织进攻也多,但总缺少临门一脚的机会;而罗马尼亚机会虽少,但每次射门都是致命的,幸亏意大利有门神布冯。这样的罗马尼亚,任何其他队,都不可小视。

C组 荷兰、罗马尼亚、法国、意大利

因为亨利,喜欢法国

因为02年世界杯,不见荷兰,喜欢荷兰

因为罗马尼亚像顽强的黑马,喜欢罗马尼亚

因为06年意大利夺冠,也希望意大利能继世界杯后,再捧欧洲杯

少了哪个都是一份遗憾。

这是02点左右,我的想法:
今晚另一场比赛预测:法国VS荷兰 = 2:1
看好法国、看好荷兰
C组排名:荷兰、法国、罗马尼亚、意大利

但现在我想说:冠军属于荷兰、也许法国该休息了,亨利该休息了。

转载 – PHP编程规范

Filed under: 理论 | No Comments »
Posted on

一直以来我都是以php函数的风格来写php,所有变量,函数,类都使用小写,单词之间以下划线隔开,一直比较排斥驼峰式的代码规范,个人觉得在大小写字母之间的书写代码,很麻烦,而且PHP自己的函数都是小写,为什么我不用这种格式呢?

良好的代码书写习惯 + 良好的注释习惯 + PhpDocumentor = 程序说明书

一个团队,必须有整齐的代码书写习惯,如果再配上统一的IDE开发环境,详细的任务编码流程,完善的代码测试(如:SimpleTest),那么整个团队的开发效率将会有很大的提高。

如果你的IDE是Eclipse,那么你可以很方便的进行代码测试,使用SimpleTest参考http://www.guogoul.com/2008/05/19/simpletest_1/

详情查看 »

分页: Prev 1 2 3 4 5 6 7 8 ...12 13 14 Next
1,987 垃圾评论
截获自
Akismet