Jun 14 2013

MYSQL 主从同步文档的大坑

Category: 技术ssmax @ 15:15:42

http://dev.mysql.com/doc/refman/5.1/en/replication-rules-db-options.html

mysql 主从同步的参数

replicate-do-db   指定同步某个DB

如果大家有一个需求,只同步某一些DB,就需要用

replicate-do-db=dbA

replicate-do-db=dbB

ok,这里还很明确,但是如果大家又想不同步dbA里面某个表。。文档里面的坑就出现了

按照文档的意思,如果 db level中没有匹配到,就会转入table level的匹配。ok,按照文档,我配置成这样:

replicate-do-db=dbB
replicate-ignore-table=dbA.question
replicate-wild-do-table=dbA.%

结果,dbA就全部不会同步了。。。但是根据文档中的示意图,理论上是可以的啊

其实坑就在这里了,如果存在 replicate-do-db, 最后如果不是excute的结果,是不会进入 table level的判断的。

所以要达到我们的需求,就需要这样配置:

replicate-do-db=dbA

replicate-do-db=dbB
replicate-ignore-table=dbA.question
replicate-wild-do-table=dbA.%

看官看到这里必定会问,为什么要用 replicate-wild-do-table 多此一举呢?如果没有了这一句,一切不是都很清晰吗。。。

问题就是 replicate-do-db 只会同步 USE DB 之后的语句,并不会同步直接DB.table 非指定DB域的语句,所以很多时候,还是要加上 replicate-wild-do-table, 会稳妥一点。

好了,我们都以为 replicate-do-db 和 replicate-wild-do-table 可以一起用,其实。。。这里的坑更变态。

根据刚才的规则,如果存在 replicate-do-db,语句必须在db级是execute的,才会进入 table级别的判断。。。所以,这里的

replicate-wild-do-table 压根就达不到大家预料的效果,比如大家USE dbC之后,再更新dbA中的数据,发现在

replicate-do-db=dbA

replicate-wild-do-table=dbA.%

这样的配置中,根本达不到想要的效果,大家USE dbC之后,再更新dbA中的数据,结果还是没有同步到从,所以最后,MYSQL的文档写了一句:

To make it easier to determine what effect an option set will have, it is recommended that you avoid mixing “do”and “ignore” options, or wildcard and nonwildcard options. An example of the latter that may have unintended effects is the use of --replicate-do-db and --replicate-wild-do-table together, where --replicate-wild-do-table uses a pattern for the database name that matches the name given for --replicate-do-db.

尽量不要混合使用,除非你已经测试过了。。。


May 25 2013

测试时区

Category: 乱up当秘笈ssmax @ 15:01:33

测试时区!!


May 25 2013

这个网站竟然都会被攻击。。。

Category: 乱up当秘笈ssmax @ 13:17:18

我自己的博客都被人可以评论攻击,真是无聊啊。

每天上10万次post comment,一次都没有成功,还是孜孜不倦的在重试。真实佩服啊。

直接在squid加了一些策略,先屏蔽了评论,等找出ip规律一次过搞掉吧。


May 17 2013

系统负载命令备忘

Category: 技术ssmax @ 19:25:45

sysstat 查看系统负载,里面有cpu占用和中断,上下文切换等信息

iostat 查看io负载,主要是读写次数速度cpu占用等

sar 比较强大的命令,啥都可以看,我一般用来看中断,sar -I XALL -d 3 10

或者从 /proc/interrupts 看

 

今天重新打开了服务器上面的irqbalance, 不知道从什么时候开始我就把这个服务给k掉了。

网卡比较繁忙,不知道是不是这里引起服务器负载过高,先观察下。


Oct 29 2012

ps 备忘

Category: 技术ssmax @ 21:22:30

       To see every process on the system using standard syntax:
          ps -e
          ps -ef
          ps -eF
          ps -ely

       To see every process on the system using BSD syntax:
          ps ax
          ps axu

       To print a process tree:
          ps -ejH
          ps axjf

       To get info about threads:
          ps -eLf
          ps axms


Sep 27 2012

Bug改好了。。。

Category: 技术ssmax @ 16:10:49
  • mod_caucho: linux timeout issue millis vs sec in read timeout (#5203, rep by ssmax)
  • http: sendfile needs to open file using O_RDONLY (#5202, rep by ssmax)

恩,中午的烧排骨真不错。


Aug 31 2012

找bug的日子。。。

Category: 技术ssmax @ 20:07:43

最近几天很郁闷,给何总搞了台新的resin,但是一直出问题,纠结了2个星期,终于都被我找出来了。。。

给官方提了两个bug

http://bugs.caucho.com/view.php?id=5202
http://bugs.caucho.com/view.php?id=5203

写程序越来越不注意细节了,每个请求都经过这段代码,都没有好好的检查。唉。


Jul 20 2012

Google Chrome 允许使用过期插件

Category: 技术ssmax @ 17:19:05

今天更新了一下chrome,发现旧的flash插件一直弹出提示,说已经过期,但是由于项目需要,必须 10.3 的flash版本来测试,又不想每次都要点运行一次。。。

找了一下,发现加上命令行参数:
–allow-outdated-plugins

就可以允许使用了。

下面是全部命令行参数的列表:
http://peter.sh/experiments/chromium-command-line-switches/

 


Apr 19 2012

突然发现一个骨灰级的老人也离开公司了

Category: 乱up当秘笈ssmax @ 17:58:43

今天无聊看下通讯录,突然发现一个骨灰级的老人已经离职了,工号是007的,遥想当年,是他把我招进来的,不知不觉我在这里也已经有8年了。。。


Mar 02 2012

高负载的rsyslog设置

Category: 技术ssmax @ 12:49:30

准备做一个较高负载的rsyslog udp接收服务器,今天配置了一下,不知道能不能顶住,先记录下来

</pre>
$PrivDropToGroup nobody
$PrivDropToUser nobody

$EscapeControlCharactersOnReceive off

$OMFileAsyncWriting on
$OMFileFlushOnTXEnd off
$OMFileFlushInterval 30
$OMFileIOBufferSize 64k

$template MyFileFormat,"%timegenerated:::date-rfc3339% %fromhost-ip% %rawmsg%\n"
$template DynFile,"/home/rsyslog/test.%$now%.%$hour%.%$minute%.log"

$Ruleset remote10514
$RulesetParser rsyslog.rfc3164
*.*                       -?DynFile;MyFileFormat
& ~

# UDP Syslog Server:
$ModLoad imudp.so  # provides UDP syslog reception
$InputUDPServerBindRuleset remote10514
$UDPServerRun 10514 # start a UDP syslog server at standard port 514
$UDPServerTimeRequery 1000

&nbsp;

$ModLoad ommysql.so

$template JustSQL,"insert into qn_report_log (create_time, ip, message) values ('%timegenerated:::date-mysql%', '%fromhost-ip%', '%rawmsg%')",SQL

$Ruleset remote10515
$RulesetParser rsyslog.rfc3164
*.*                       : ommysql:dbhost,dbname,dbuser,dbpass;JustSQL
& ~

$InputUDPServerBindRuleset remote10515
$UDPServerRun 10515 # start a UDP syslog server at standard port 514
$UDPServerTimeRequery 1000
<pre>

两种输出,不同负载

DynFile 按分钟输出,负载较高

mysql的输出是另外一个应用,负载较低,如果被影响的话就另外开一个实例来启动

基本rsyslog的基础功能都用了一遍。。。

启动脚本记得关掉dns解释

/home/rsyslog/sbin/rsyslogd -x -4 -f /home/rsyslog/etc/rsyslog.conf -i /home/rsyslog/rsyslogd.pid


« Previous PageNext Page »