分类 Linux系统运维 下的文章

Mysql 数据库自动备份Shell脚本

#!/bin/bash
#Shell Command For Backup MySQL Database Everyday Automatically By Crontab

USER=root
PASSWORD="123456"
DATABASE="test"
HOSTNAME="192.168.156.61"

WEBMASTER=test@qq.com

BACKUP_DIR=/home/firefoxbug/mysql_back/ #备份文件存储路径
LOGFILE=/home/firefoxbug/mysql_back/data_backup.log #日记文件路径
DATE=`date '+%Y%m%d-%H%M'` #日期格式(作为文件名)
DUMPFILE=$DATE.sql #备份文件名
ARCHIVE=$DATE.sql.tgz #压缩文件名
OPTIONS="-h$HOSTNAME -u$USER -p$PASSWORD $DATABASE"
#mysqldump -help

#判断备份文件存储目录是否存在,否则创建该目录
if [ ! -d $BACKUP_DIR ] ;
then
        mkdir -p "$BACKUP_DIR"
fi

#开始备份之前,将备份信息头写入日记文件
echo " " >> $LOGFILE
echo " " >> $LOGFILE
echo "———————————————–" >> $LOGFILE
echo "BACKUP DATE:" $(date +"%y-%m-%d %H:%M:%S") >> $LOGFILE
echo "———————————————– " >> $LOGFILE

#切换至备份目录
cd $BACKUP_DIR
#使用mysqldump 命令备份制定数据库,并以格式化的时间戳命名备份文件
mysqldump $OPTIONS > $DUMPFILE
#判断数据库备份是否成功
if [[ $? == 0 ]]; then
	#创建备份文件的压缩包
	tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1
	#输入备份成功的消息到日记文件
	echo “[$ARCHIVE] Backup Successful!” >> $LOGFILE
	#删除原始备份文件,只需保 留数据库备份文件的压缩包即可
	rm -f $DUMPFILE
else
	echo “Database Backup Fail!” >> $LOGFILE
fi
#输出备份过程结束的提醒消息
echo “Backup Process Done”


放到crontable里面!十分钟执行一次
crontab -e
*/10 * * * * /tmp/auto_log.sh >/dev/null  2>&1

inotifywait实现目录监控

传统的rsync+crontab同步数据和实际会有差异,而inotify则基本可以达到实时的效果,当文件有任何变动,就会触发inotify。
inotify 是一个 Linux 内核特性,它监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如删除、读、写和卸载操作等。inotify安装完成之后会有两个命令,
inotifywait 和 inotifywatch。inotifywait用于等待文件或者文件集上的一个特定事件,可以监控任何文件或者目录位置,并且可以递归地监控整个目录树;inotifywatch 用于收集被监控的文件系统统计数据,包括每个inotify事件发生多少次等信息。

- 阅读剩余部分 -

LBNAMED--DNS轮询实现负载均衡

传统的DNS轮询主要实现是在DNS服务器上,做一个CNAME,然后把CNAME解析到不同的IP上,这样就

能基本基于DNS的负载均衡,但是一旦有一台分配到的IP挂了,DNS不会管,还是会返回给客户挂的IP,而

且对于流量的分配也不是很智能,上次看到LBNAMED,折腾了几天,但是没能实现我想要的功能。

LBNAMED(Load Balancing Named)按照网上的说法它能智能的进行DNS轮询,对于轮询列表主机的健

康状态检测,以及负载均衡分配都做了。下面主要说下原理,

  1. 客户端要去访问 www.firefoxbug,net,客户端的DNS修改成我们自己的DNS。
  2. 在我们的DNS Server 会把 www.firefoxbug.net CNAME 成 www.best.firefoxbug.net
  3. DNS服务器会把向LBNAMED Server 发出请求查询 www.best.firefoxbug.net的A记录
  4. LBNAMED Server收到请求后会列出本地www.best.firefoxbug.net的服务器池
  5. LBNAMED Server上的poller根据服务器池的健康状况,通过算法返回给DNS服务器一个最优IP
  6. DNS返回给客户端最优的IP

在服务器池列表上安装的主要是lbcd,这个专门用于向lbnamed主机发送健康状态,LBNAMED服务器安装

的是lbnamed(包含poller检测程序)和Stanford-DNSserver(这是一个库)。下面是基本安装过程

[cc lang="c"]
wget http://archives.eyrie.org/software/system/lbcd-3.4.0.tar.gz
tar -zxvf lbcd-3.4.0.tar.gz
cd lbcd-3.4.0
./configure
make;make install
lbcd #start
lbcd -s #stop

wget http://www.stanford.edu/~riepel/lbnamed/Stanford-DNSserver/Stanford-DNSserver.tar.gz
tar -zxvf Stanford-DNSserver.tar.gz
cd Stanford-DNSserver-1.2.0/
perl Makefile.PL
make
make test
make install

wget http://www.stanford.edu/~riepel/lbnamed/lbnamed-2.3.2.tar.gz
tar -zxvf lbnamed-2.3.2.tar.gz
mv lbnamed-2.3.2 /usr/local/lbnamed
cd /usr/local/lbnamed
cp poller /usr/sbin/
[/cc]

在 /usr/local/lbnamed 目录下是主要的配置文件,

lbnamed.conf 是服务器池,lbnamed是主要的配置文件,详细的查看

http://blog.csdn.net/x5yw/article/details/1729101

iftop安装笔记

磊哥推荐了我一款流量带宽推荐的软件,iftop,我用了,还是不错的。下面是安装过程。

yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel

wget http://www.ex-parrot.com/pdw/iftop/download/iftop-1.0pre2.tar.gz
tar -zxvf iftop-1.0pre2.tar.gz
cd iftop-1.0pre2
./configure
make && make install

- 阅读剩余部分 -

linux 守护进程编程

守护进程简介


守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印进程lqd等(这里的结尾字母d就是Daemon的意思)。
由于在Linux中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端就称为这些进程的控制终端,当控制终端被关闭时,相应的进程都会自动关闭。但是守护进程却能够突破这种限制,它从被执行开始运转,直到整个系统关闭时才退出。如果想让某个进程不因为用户或终端或其他地变化而受到影响,那么就必须把这个进程变成一个守护进程。

- 阅读剩余部分 -

bind 服务器搭建

Linux上DNS上服务器只要是BIND,是伯克利大学开发的。下面是主要的安装以及配置,

yum install bind*

bind安装好之后主要的daemon是named,一般情况下会自动安装好bind-chroot,chroot的存在主要就是为了保护系统的安全性,就算bind被黑了,黑客也只能在chroot的目录里面活动,有点vsftpd里的味道,但是不相同。

- 阅读剩余部分 -

大型网站架构演变和知识体系–<转>

from http://www.blogjava.net/BlueDavy/archive/2008/09/03/226749.html

 

 

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么一个网站需要那么复杂的技术,于是有了写这篇文章的想法,在这篇文章中 将阐述一个普通的网站发展成大型网站过程中的一种较为典型的架构演变历程和所需掌握的知识体系,希望能给想从事互联网行业的同学一点初步的概念 ,文中的不对之处也请各位多给点建议,让本文真正起到抛砖引玉的效果。

架构演变第一步:物理分离webserver和数据库
最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候 已经是托管了一台主机,并且有一定的带宽了,这个时候由于网站具备了一定的特色,吸引了部分人访问,逐渐你发现系统的压力越来越高,响应速度越来越慢,而这个时候比较明显的是数据库和应用互相影响,应用出问题了,数据库也很容易出现问题,而数据库出问题的时候,应用也容易出问题,于是进入了第一步演变阶段:将应用和数据库从物理上分离,变成了两台机器,这个时候技术上没有什么新的要求,但你发现确实起到效果了,系统又恢复到以前的响应速度了,并且支撑住了更高的流量,并且不会因为数据库和应用形成互相的影响。

看看这一步完成后系统的图示:


这一步涉及到了这些知识体系:

- 阅读剩余部分 -

通过NAT实现虚拟服务器(VS/NAT)--<转>

转自  http://zh.linuxvirtualserver.org/node/26

由于IPv4中IP地址空间的日益紧张和安全方面的原因,很多网络使用保留IP地址(10.0.0.0/255.0.0.0、172.16.0.0/255.128.0.0和192.168.0.0/255.255.0.0)[64, 65, 66]。这些地址不在Internet上使用,而是专门为内部网络预留的。当内部网络中的主机要访问Internet或被Internet访问时,就需要采用网络地址转换(Network Address Translation, 以下简称NAT),将内部地址转化为Internets上可用的外部地址。NAT的工作原理是报文头(目标地址、源地址和端口等)被正确改写后,客户相信它们连接一个IP地址,而不同IP地址的服务器组也认为它们是与客户直接相连的。由此,可以用NAT方法将不同IP地址的并行网络服务变成在一个IP地址上的一个虚拟服务。

- 阅读剩余部分 -

通过直接路由实现虚拟服务器(VS/DR)--<转>

转自   http://zh.linuxvirtualserver.org/node/28

跟VS/TUN方法相同,VS/DR利用大多数Internet服务的非对称特点,负载调度器中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提高整个集群系统的吞吐量。该方法与IBM的NetDispatcher产品中使用的方法类似,但IBM的NetDispatcher是非常昂贵的商品化产品,我们也不知道它内部所使用的机制,其中有些是IBM的专利。

- 阅读剩余部分 -

通过IP隧道实现虚拟服务器(VS/TUN)--<转>

转自 http://zh.linuxvirtualserver.org/node/27

在VS/NAT的集群系统中,请求和响应的数据报文都需要通过负载调度器,当真实服务器的数目在10台和20台之间时,负载调度器将成为整个集群系统的新瓶颈。大多数Internet服务都有这样的特点:请求报文较短而响应报文往往包含大量的数据。如果能将请求和响应分开处理,即在负载调度器中只负责调度请求而响应直接返回给客户,将极大地提高整个集群系统的吞吐量。

- 阅读剩余部分 -

ARP problem in VS/TUN and VS/DR

In the VS/TUN and VS/DR clusters, the Virtual IP (VIP) addresses are shared by both the load balancer and real servers, because they all configure the VIP address on one of their interfaces. In some configurations that real servers are on the same network that the load balancer accepts request packets, if real servers answers arp request for the VIP, there will be race condition, no winner. Packets for the VIP may be sent to the load balancer at one time, to a real server at another time, to another real server at another time, and so on. Then, connections will be broken, everything will be in a mess, and the whole LVS cluster won't work. Therefore, in the VS/TUN and VS/DR cluster, we must guarantee that only the load balancer answers arp request for the VIP to accept incoming packets for virtual service, and the real servers(in the same network of load balancer) don't answer arp request for the VIP but can process packets destined for the VIP locally.

Linux kernel 2.0.xx doesn't do arp response on loopback alias and tunneling interfaces, it is good for the LVS cluster. However, Linux kernel 2.2.xx does all arp responses of all its IP addresses except the loopback addresses (127.0.0.0/255.0.0.0) and multicast addresses. So, you will probably have problem in VS/TUN or VS/DR cluster of real servers running kernel 2.2.xx with instructions provided in other pages. After kernel 2.2.14, there is the "hidden" flag available to make interfaces hidden from ARP broadcast, thank Julian Anastasov and Alexey Kuznetsov for adding this nice ARP policy in the standard kernel!

from http://www.linuxvirtualserver.org/docs/arp.html

logstash+ElasticSearch+Kibana VS Splunk

最近帮磊哥移植一套开源的日志管理软件,为了就是替代原来牛B的但是昂贵的Splunk. Splunk是一个功能强大的日志管理工具,它不仅可以用多种方式来添加日志,生产图形化报表,最厉害的是它的搜索功能 - 被称为“Google for IT”。Splunk有免费和收费版,最主要的差别在于每天的索引容量大小(索引是搜索功能的基础),免费版每天最大为500M。在使用免费版时,如果在30天之内,有7天的索引数据量超过500M,那么就不可以再搜索了.

我熟悉了几天logstash,然后用ElasticSearch进行搜索,最后用Kibana来作为漂亮的三方界面,总体上不错!果然是开源的力量.整个搭建的过程比较复杂,东西比较多,有java,有ruby,有python一些列的.先介绍下三个开源项目

Logstash


is very useful and versatile. It's made of JRuby (Java+Ruby). You can specify inputs and outputs as well as filters. It supports various input types. One of them is "Linux Syslog". Which means, you do not have to install logging agent on every server increasing the overall load of the server. Your default rsyslog client will do just fine. Then comes the filtering part, after taking input, you can filter out logs within Logstash itself. It's awesome but it didn't serve any purpose for me as I wanted to index every log. Next is the output part, Logstash can output logs on standard output (why would anyone want that). But as with input, it supports multiple output types too. One of them is Elasticsearch.

Elasticsearch


is a Java based log indexer. You can search through Elasticsearch indices using Lucene search syntax for more complicated query. But, simple wildcard search works too.

Kibana


It provides the web frontend for Elasticsearch, written on Java Script and PHP, requires only one line to be edited for this to work out off the box.

下面是logstash跑出来的效果,具体的搭建还是以后有时间介绍了.Kibana查看端口默认是5601

通过ElasticSearch进行查询

logstash查看端口是9292

Nginx 权限问题

这两天把何少移植了一个站点,移植上去的时候发现请求URL的时候,界面什么都没有返回,连个报错页面

都没有,折腾了两天才知道。是因为文件权限问题,要把文件所有者和所属组都弄到nginx!诶!太粗心了。

 

phpmyadmin 导入大数据库文件

不久前搭建LNMP成功之后,导入数据库文件,提示文件内容太大。

修改了 php.ini 里面的

upload_max_filesize = 30M

post_max_size = 40M

还是没有用。可以通过如下方式解决:

修改phpmyadmin 下面的 config.inc.php 文件

$cfg['UploadDir'] = ‘  ’ ;
$cfg['SaveDir'] = ‘  ’;

修改:

$cfg['UploadDir'] = 'upload';
$cfg['SaveDir'] = 'save';

在 phpmyadmin 下面建立 upload 和 save 目录, 在客户端把数据库文件通过ftp传到服务器上的 upload

目录,然后通过 phpmyadmin 登入进去,导入数据库的时候,就会出现一个上传本地数据库文件的选项。

这时候就能成功导入了!