September 29, 2011
如何查看linux版本
"如何得知自己正在使用的linux是什么版本呢,下面的几种方法将给你带来答案!\n查看内核版本命令: ** 1) [root@q1test01 ~]# cat /proc/version **\nLinux version 2.6.9-22.ELsmp (bhcompile@crowe.devel.redhat.com) (gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)) #1 SMP Mon Sep 19 18:00:54 EDT 2005\n** 2) [root@q1test01 ~]# uname -a **\nLinux q1test01 2.6.9-22.ELsmp #1 SMP Mon Sep 19 18:00:54 EDT 2005 x86_64 x86_64 x86_64 GNU/Linux\n** 3) [root@q1test01 ~]# uname -r **\n2.6.9-22.ELsmp\n查看linux版本: 登录到服务器执行 lsb_release -a ,即可列出所有版本信息,例如: ** [root@q1test01 ~]# …"
September 27, 2011
五步优化你的MongoDB
"下面PPT和视频的作者是MongoDB的开发工程师 Jared Rosoff,他从下面几个方面对MongoDB的几个优化点进行了讲解和描述。这些优化实际上也适用于很多其它的数据库。\n1.查询优化 确认你的查询是否充分利用到了索引,用explain命令查看一下查询执行的情况,添加必要的索引,避免扫表操作。\n2.搞清你的热数据大小 可能你的数据集非常大,但是这并不那么重要,重要的是你的热数据集有多大,你经常访问的数据有多大(包括经常访问的数据和所有索引数据)。使用MongoDB,你最好保证你的热数据在你机器的内存大小之下,保证内存能容纳所有热数据。\n3.选择正确的文件系统 MongoDB的数据文件是采用的预分配模式,并且在Replication里面,Master和Replica Sets的非Arbiter节点都是会预先创建足够的空文件用以存储操作日志。这些文件分配操作在一些文件系统上可能会非常慢,导致进程被Block。所 以我们应该选择那些空间分配快速的文件系统。这里的结论是尽量不要用ext3,用ext4或者xfs。\n4.选择合适的硬盘 这里的选择包括了对磁盘RAID的选择,也包括了磁盘 …"
September 27, 2011
Redis系统性介绍
"虽然Redis已经很火了,相信还是有很多同学对Redis只是有所听闻或者了解并不全面,下面是一个比较系统的Redis介绍,对Redis的特性及各种数据类型及操作进行了介绍。是一个很不错的Redis入门教程。\n1.介绍 1.1 Redis是什么 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis提供了一些丰富的数据结构,包括 lists, sets, ordered sets 以及 hashes ,当然还有和Memcached一样的 strings结构.Redis当然还包括了对这些数据结构的丰富操作。\n1.2 Redis的优点 性能极高 – Redis能支持超过 100K+ 每秒的读写频率。 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。 丰富的特性 – Redis …"
September 26, 2011
show slave status\G中的Read_Master_Log_Pos和Relay_Log_Pos的(大小)关系
"Just to clarify, there are three sets of file/position coordinates in SHOW SLAVE STATUS:\nThe position, ON THE MASTER, from which the I/O thread is reading: Master_Log_File/Read_Master_Log_Pos. —–相对于主库,从库读取主库的二进制日志的位置,是IO线程\nThe position, IN THE RELAY LOGS, at which the SQL thread is executing: Relay_Log_File/Relay_Log_Pos —-相对于从库,是从库的sql线程执行到的位置\nThe position, ON THE MASTER, at which the SQL thread is executing: Relay_Master_Log_File/Exec_Master_Log_Pos —-相对于主库,是从库的sql线程执行到的位置\nNumbers 2) and 3) …"
September 26, 2011
如何在windows下用bat脚本定时备份mysql
"作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究。\n并不是所有MySQL都运行在Linux下,windows下也需要做例行备份,下面是用bat脚本做自动化备份的例子,大家可以参考下。\nrem rem C:\\Program Files\\WinRAR 需要放到 path 下,才能调用rar cli工具 rem rem 跳转到工作目录下 f: cd f:\\DBBAK rem 设置变量:备份文件名 SET BAK_FILE=MY_DBBAK_%date:~0,-4%.sql rem 设置变量:日志文件名 SET LOG_FILE=MY_DBBAK.log rem 记录日志 echo \u0026#34;%date%\u0026#34; \u0026gt;\u0026gt; %LOG_FILE% rem 开始做备份 mysqldump --default-character-set=utf8 -hlocalhost -uroot -R --triggers --single-transaction -B mydb \u0026gt; %BAK_FILE% rem …"
September 26, 2011
mysql主从复制原理
"Replication 线程 Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们称之 Slave)。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端。\n要实现 MySQL 的 Replication ,首先必须打开 Master 端的Binary Log(mysql-bin.xxxxxx)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全 顺序的执行日志中所记录的各种操作。打开 MySQL 的 Binary Log 可以通过在启动 MySQL Server 的过程中使用 “—log-bin” 参数选项,或者在 my.cnf 配置文件中的 mysqld 参数组([mysqld]标识后的参数部分)增加 “log-bin” 参数项。\nMySQL 复制的基本过程如下:\nSlave 上面的IO线程连 …"
September 15, 2011
[git] Git 高级:Git Reset, Checkout, Diff, Stash
"Git Reset 有时候,你可能想要撤销 Git 操作。通常,git reset 就是你需要的命令。但是,使用 git reset 可能会非常复杂,取决于你的撤销操作。如果本文没有提到你需要的,查看 git reset 官方文档。\n假设,你正在进行一个项目,想要取消所有的改变,返回到最近一次的提交,命令如下:\n$ git reset --hard HEAD –hard flag 将指定提交(上例中,HEAD)中的任意内容放入工作目录和缓存区内。因为 HEAD 是最近一次提交,所以我们没有做任何改变。运行 git status,会看到提示没有需要提交的。\n还有其它一些 git reset 使用的 flag。假设你想要回滚你的项目到多个提交之前,但是想要保存没有提交的改变,尝试下面的:\n$ git reset --soft 3ce072c72d948abfa 当然,替换为你自己需要的 hash。–soft flag 将保存你的改变在工作目录和缓存区。换句话来说,最新的提交将会是你选择的提交。\n还有很多情况,你可以使用 git reset。如果你认为需要这个名利概念的功能,查看文档。 …"
September 14, 2011
Nginx作为反向代理时传递客户端IP
"因为架构的需要采用多级 Nginx 反向代理,但是后端的程序获取到的客户端 IP 都是前端 Nginx 的 IP,问题的根源在于后端的 Nginx 在 HTTP Header 中取客户端 IP 时没有取对正确的值。同样适用于前端是 Squid 或者其他反向代理的情况。(通用的解决方案是直接取服务器的变量 HTTP_X_FORWARDED_FOR 的值即可取出客户端的真实ip地址)\n首先前端的 Nginx 要做转发客户端 IP 的配置:\nlocation / {\nproxy_pass http://localhost:8000;# Forward the user’s IP address to Rails\nproxy_set_header X-Real-IP $remote_addr;\nneeded for HTTPS proxy_set_header X_FORWARDED_PROTO https; proxy_set_header X-Forwarded-For $remote_addr;\nproxy_set_header X-Forwarded-For …"
September 13, 2011
(linux)nfs配置教程[原创]
"转载请注明文本来源:\n网络文件系统(NFS,Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。\n操作环境为:Centos6.0\n一、NFS服务端设置(192.168.0.100) 1.安装并启用相应的服务,将防火墙关闭\n#yum -y install nfs* portmap #启动端口映射 #service portmap start #启动NFS 服务,此时NFS 会激活守护进程,然后就开始监听 Client 端的请求 #service nfs start #关闭防火墙 #service iptables stop 在这里可以对nfs进行一下验证\n#mount -t nfs 192.168.0.100:/data/nfs /mnt/nfs #本地验证 #touch /mnt/nfs/server.txt #ls /mnt/nfs #ls /data/nfs 如果/mnt/nfs和/data/nfs两个目录里的内容一样的话,则说 …"
September 12, 2011
php-fpm日志里出现[WARNING] fpm_children_bury()信息的解决办法
"最近接手nginx+php的WEB环境维护,发现PHP-cgiCPU很好,也造成负载很高,于是在网上找了些资料,并且针对自己的错误,将问题收集再次,并且网上还给了解决方案,所以放在这里留作以后查询\nan 11 08:54:01.164292 [NOTICE] fpm_children_make(), line 352: child 10088 (pool default) started\nJan 11 08:54:01.164325 [WARNING] fpm_children_bury(), line 215: child 7985 (pool default) exited on signal 15 SIGTERM after 63.778601 seconds from start\nJan 11 08:54:01.165485 [NOTICE] fpm_children_make(), line 352: child 10089 (pool default) started\nJan 11 08:54:01.165514 [WARNING] fpm_children_bury(), …"