<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>永汇博客</title>
	<atom:link href="http://blog.tianbaoyong.com/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.tianbaoyong.com</link>
	<description>永汇人气，永汇资源！永汇博客。</description>
	<lastBuildDate>Fri, 01 Jul 2011 05:56:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>安装和卸载Windows服务</title>
		<link>http://blog.tianbaoyong.com/defaultcat/install-and-uninstall-windows-service.html</link>
		<comments>http://blog.tianbaoyong.com/defaultcat/install-and-uninstall-windows-service.html#comments</comments>
		<pubDate>Fri, 01 Jul 2011 05:56:53 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[默认日志]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/defaultcat/install-and-uninstall-windows-service.html</guid>
		<description><![CDATA[在windows下安装了nginx, 郁闷是发现它没有以服务方式运行, 也就是说当用户注销后,程序 会终止.因此需要将nginx作为服务运行. 假设nginx安装在c:\nginx\下: 1.下载微软服务注册工具srvany.exe, instsrv.exe, 存放到c:\nginx\目录下 http://eastedu.bl-changjiang.com/UploadFiles/2006-5/511179043.rar 2.安装NGINX服务, 将命令行切换到c:\nginx\,执行下列命令 instsrv NGINX c:\nginx\srvany.exe 复制代码 3.在c:\nginx\下,编辑一个nginx.reg文件 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NGINX\Parameters] &#34;Application&#34;=&#34;C:\\nginx\\nginx.exe&#34; &#34;AppParameters&#34;=&#34;&#34; &#34;AppDirectory&#34;=&#34;C:\\nginx\\&#34; 复制代码 5.让服务与程序关联起来, 命令行执行 regedit /s nginx.reg 复制代码 6.编辑启动nginx脚本start-nginx.bat(关闭脚本不用变), 让程序以服务方式运行 @ECHO OFF net stop nginx net start nginx EXIT 复制代码]]></description>
			<content:encoded><![CDATA[<p>在windows下安装了nginx, 郁闷是发现它没有以服务方式运行, 也就是说当用户注销后,程序   <br />会终止.因此需要将nginx作为服务运行.</p>
<p>  <span id="more-648"></span>
<p>假设nginx安装在c:\nginx\下:</p>
<p>1.下载微软服务注册工具srvany.exe, instsrv.exe, 存放到c:\nginx\目录下   <br /><a href="http://eastedu.bl-changjiang.com/UploadFiles/2006-5/511179043.rar">http://eastedu.bl-changjiang.com/UploadFiles/2006-5/511179043.rar</a></p>
<p>2.安装NGINX服务, 将命令行切换到c:\nginx\,执行下列命令   <br />instsrv NGINX c:\nginx\srvany.exe    <br />复制代码</p>
<p>3.在c:\nginx\下,编辑一个nginx.reg文件   <br />Windows Registry Editor Version 5.00</p>
<p>[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NGINX\Parameters]</p>
<p>&quot;Application&quot;=&quot;C:\\nginx\\nginx.exe&quot;</p>
<p>&quot;AppParameters&quot;=&quot;&quot;</p>
<p>&quot;AppDirectory&quot;=&quot;C:\\nginx\\&quot;   <br />复制代码</p>
<p>5.让服务与程序关联起来, 命令行执行   <br />regedit /s nginx.reg    <br />复制代码</p>
<p>6.编辑启动nginx脚本start-nginx.bat(关闭脚本不用变), 让程序以服务方式运行   <br />@ECHO OFF</p>
<p>net stop nginx</p>
<p>net start nginx</p>
<p>EXIT   <br />复制代码</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/defaultcat/install-and-uninstall-windows-service.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu+apache+svn配置备忘</title>
		<link>http://blog.tianbaoyong.com/ittechposts/ubuntu-apache-svn-configuration-notes.html</link>
		<comments>http://blog.tianbaoyong.com/ittechposts/ubuntu-apache-svn-configuration-notes.html#comments</comments>
		<pubDate>Fri, 01 Jul 2011 05:33:21 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[思考总结]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/ittechposts/ubuntu-apache-svn-configuration-notes.html</guid>
		<description><![CDATA[此配置按照ubuntu登录用户为administrator，项目名为hwjn配置，如需配置其他项目，修改替换即可。userName = administrator projectName = hwjn sudo apt-get install subversion sudo apt-get install libapache2-svn sudo addgroup subversion sudo usermod -G subversion -a www-data sudo usermod -G subversion -a administrator sudo mkdir /home/svn cd /home/svn sudo svnadmin create hwjn sudo chown -R administrator:subversion hwjn sudo chmod -R g+rws hwjn echo '&#60;Location /svn/hwjn&#62; DAV svn SVNPath /home/svn/hwjn [...]]]></description>
			<content:encoded><![CDATA[<p>此配置按照ubuntu登录用户为administrator，项目名为hwjn配置，如需配置其他项目，修改替换即可。userName = administrator     <br />projectName = hwjn</p>
<p>  <span id="more-647"></span>
<pre class="csharpcode">sudo apt-get install subversion
sudo apt-get install lib<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/apache" title="查看 apache 的全部文章" target="_blank">apache</a></span>2-<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/svn" title="查看 svn 的全部文章" target="_blank">svn</a></span>

sudo addgroup subversion
sudo usermod -G subversion -a www-data
sudo usermod -G subversion -a administrator

sudo mkdir /home/<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/svn" title="查看 svn 的全部文章" target="_blank">svn</a></span>
cd /home/<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/svn" title="查看 svn 的全部文章" target="_blank">svn</a></span>
sudo svnadmin create hwjn
sudo chown -R administrator:subversion hwjn
sudo chmod -R g+rws hwjn

echo <span class="str">'&lt;Location /svn/hwjn&gt;
DAV svn
SVNPath /home/svn/hwjn
AuthType Basic
AuthName &quot;pro1 Subversion Repository&quot;
AuthUserFile /home/svn/hwjn/conf/passwd
AuthzSVNAccessFile /home/svn/hwjn/conf/authz
Require valid-user
&lt;/Location&gt;'</span> | sudo tee -a /etc/<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/apache" title="查看 apache 的全部文章" target="_blank">apache</a></span>2/apache2.conf

htpasswd -cb /home/svn/hwjn/conf/passwd super super
htpasswd -b /home/svn/hwjn/conf/passwd admin admin

echo <span class="str">&quot;[/]
super = rw
admin = rw&quot;</span> | tee -a /home/svn/hwjn/conf/authz

操作需要重启apache：
sudo service apache2 restart
sudo chmod -R g+rws hwjn

创建目录结构：sh -c | cat list.txt

svn import -m <span class="str">&quot; &quot;</span> /home/administrator/pro file:///home/svn/hwjn

在线修改密码：
sudo mkdir -p /home/www/hwjn/

echo <span class="str">'
Alias /hwjn/ &quot;/home/www/hwjn/&quot;
&lt;Directory &quot;/home/www/hwjn/&quot;&gt;
    AuthType Basic
    AuthName &quot;svntools repository&quot;
    AuthUserFile /home/svn/hwjn/conf/passwd
    Require valid-user
&lt;/Directory&gt;
'</span> | tee -a /etc/apache2/apache2.conf

sudo chown -R administrator:subversion /home/svn/hwjn
sudo chmod -R g+rws /home/svn/hwjn

操作需要重启apache：
sudo service apache2 restart

echo <span class="str">'
&lt;?
$auth_user = $_SERVER[&quot;PHP_AUTH_USER&quot;];
$auth_pass = $_SERVER[&quot;PHP_AUTH_PW&quot;];
?&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Change SVN Password&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;?
if ($_REQUEST[&quot;action&quot;] != &quot;modify&quot;) {
?&gt;
&lt;script language = &quot;javaScript&quot;&gt;&lt;!--
function check_and_submit(myform) {
    var oldpass = myform.oldpass.value;
    var newpass = myform.newpass.value;
    var repeatpass = myform.repeatpass.value;
    if (oldpass == &quot;&quot;) {
        alert(&quot;Old password is empty!&quot;);
        myform.oldpass.focus();
    }
    else if (newpass == &quot;&quot;) {
        alert(&quot;New password is empty!&quot;);
        myform.newpass.focus();
    }
    else if (repeatpass == &quot;&quot; || repeatpass != newpass) {
        alert(&quot;Repeat password is empty or not same as new password!&quot;);
        myform.repeatpass.focus();
    }
    else
        myform.submit();
}
// --&gt;&lt;/script&gt;
&lt;form method=&quot;post&quot;&gt;
&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;modify&quot;/&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;User Name&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;?=$auth_user?&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Old Password&lt;/td&gt;
&lt;td&gt;&lt;input type=&quot;password&quot; size=20 name=oldpass&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;New Password&lt;/td&gt;
&lt;td&gt;&lt;input type=&quot;password&quot; size=20 name=newpass&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Repeat Password&lt;/td&gt;
&lt;td&gt;&lt;input type=&quot;password&quot; size=20 name=repeatpass&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=2&gt;
&lt;input type=&quot;button&quot; value=&quot;Change&quot; onclick=&quot;check_and_submit(this.form)&quot;&gt;
&lt;input type=&quot;reset&quot; value=&quot;Reset&quot;&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/form&gt;
&lt;?
} else {
$old_pass = $_REQUEST[&quot;oldpass&quot;];
$new_pass = $_REQUEST[&quot;newpass&quot;];
if ($old_pass != $auth_pass)
    $msg = &quot;Old password is wrong!&quot;;
else
{
    # change here
    $cmd = &quot;htpasswd -b /home/svn/hwjn/conf/passwd $auth_user $new_pass&quot;;
    system($cmd, $res);
    if ($res == 0)
        $msg = &quot;Change password for [$auth_user] succeed! Please login again.&quot;;
    else
        $msg = &quot;Change password for [$auth_user] failed! Please contact server administrator.&quot;;
}
?&gt;
&lt;script language=&quot;javaScript&quot;&gt;&lt;!--
alert(&quot;&lt;?=$msg?&gt;&quot;);
window.location.href=&quot;&lt;?=$_SERVER[&quot;PHP_SELF&quot;]?&gt;&quot;
// --&gt;&lt;/script&gt;}
&lt;?
}
?&gt;
&lt;/body&gt;
&lt;/html&gt;'</span> | tee -a /home/www/hwjn/index.php</pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/ittechposts/ubuntu-apache-svn-configuration-notes.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache2.2和Tomcat 6.0.18的整合</title>
		<link>http://blog.tianbaoyong.com/systemconfig/apache2-2-and-the-integration-of-tomcat-6-0-18.html</link>
		<comments>http://blog.tianbaoyong.com/systemconfig/apache2-2-and-the-integration-of-tomcat-6-0-18.html#comments</comments>
		<pubDate>Wed, 08 Jun 2011 08:27:07 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[系统管理]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[整合]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/systemconfig/apache2-2-and-the-integration-of-tomcat-6-0-18.html</guid>
		<description><![CDATA[1、下载安装apache2.2和tomcat6 2、http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.31/下载mod_jk-1.2.31-httpd-2.2.3.so 3、将mod_jk-1.2.31-httpd-2.2.3.so文件拷贝到apache的modules目录，改名为mod_jk2.so 4、在apache的config文件中添加如下行： &#160;&#160;&#160; LoadModule jk_module modules/mod_jk2.so &#160;&#160;&#160; JkWorkersFile conf/workers.properties &#160;&#160;&#160; JkLogFile &#34;mod_jk2.log&#34; &#160;&#160;&#160; JkLogLevel info 5、配置虚拟主机：在配置文件的末尾添加 NameVirtualHost *:80 &#160;&#160;&#160; &#60;VirtualHost *:80&#62; &#160;&#160;&#160;&#160;&#160;&#160;&#160; DocumentRoot &#34;C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/wapGPS&#34; &#160;&#160;&#160;&#160;&#160;&#160;&#160; DirectoryIndex index.html index.htm login.jsp &#160;&#160;&#160;&#160;&#160;&#160;&#160; ServerName www.unite.com &#160;&#160;&#160;&#160;&#160;&#160;&#160; ErrorLog &#34;logs/a.xingchetong.com-error.log&#34; &#160;&#160;&#160;&#160;&#160;&#160;&#160; CustomLog &#34;logs/a.xingchetong.com-access.log&#34; common &#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;Directory &#34;C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/wapGPS&#34;&#62;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Options Indexes [...]]]></description>
			<content:encoded><![CDATA[<p>1、下载安装<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/apache" title="查看 apache 的全部文章" target="_blank">apache</a></span>2.2和<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/tomcat" title="查看 tomcat 的全部文章" target="_blank">tomcat</a></span>6    <br />2、<a href="http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.31/下载mod_jk-1.2.31-httpd-2.2.3.so">http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.31/下载mod_jk-1.2.31-httpd-2.2.3.so</a>    <br />3、将mod_jk-1.2.31-httpd-2.2.3.so文件拷贝到<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/apache" title="查看 apache 的全部文章" target="_blank">apache</a></span>的modules目录，改名为mod_jk2.so    <br />4、在apache的config文件中添加如下行：    <br />&#160;&#160;&#160; LoadModule jk_module modules/mod_jk2.so    <br />&#160;&#160;&#160; JkWorkersFile conf/workers.properties    <br />&#160;&#160;&#160; JkLogFile &quot;mod_jk2.log&quot;    <br />&#160;&#160;&#160; JkLogLevel info</p>
<p>  <span id="more-646"></span>
<p>5、配置虚拟主机：在配置文件的末尾添加</p>
<p>NameVirtualHost *:80   <br />&#160;&#160;&#160; &lt;VirtualHost *:80&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; DocumentRoot &quot;C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/wapGPS&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; DirectoryIndex index.html index.htm login.jsp    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ServerName www.unite.com    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ErrorLog &quot;logs/a.xingchetong.com-error.log&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; CustomLog &quot;logs/a.xingchetong.com-access.log&quot; common    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;Directory &quot;C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/wapGPS&quot;&gt;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Options Indexes FollowSymLinks    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; AllowOverride None    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Order allow,deny    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Allow from all    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/Directory&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; JkMount&#160;&#160;&#160;&#160; &quot;/*Servlet*&quot;&#160;&#160;&#160;&#160; &quot;ajp13&quot;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; JkMount&#160;&#160;&#160;&#160; &quot;/*.jsp&quot;&#160;&#160;&#160;&#160; &quot;ajp13&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; JkMount&#160;&#160;&#160;&#160; &quot;/*.action&quot;&#160;&#160;&#160;&#160; &quot;ajp13&quot;    <br />&#160;&#160;&#160; &lt;/VirtualHost&gt;</p>
<p>6、配置<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/tomcat" title="查看 tomcat 的全部文章" target="_blank">tomcat</a></span>的虚拟主机   <br />&lt;Host name=&quot;www.unite.com&quot;&#160; appBase=&quot;webapps&quot;     <br />&#160;&#160;&#160;&#160;&#160;&#160; unpackWARs=&quot;true&quot; autoDeploy=&quot;true&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; xmlValidation=&quot;false&quot; xmlNamespaceAware=&quot;false&quot;&gt;    <br />&lt;Context path=&quot;&quot; reloadable=&quot;true&quot; docBase=&quot;wapGPS&quot;/&gt;    <br />&lt;/Host&gt;&#160;&#160;&#160; <br />&#160;&#160;&#160; &lt;/Host&gt;&#160;&#160;&#160; <br />7、在apache的conf目录下创建文件：workers.properties    <br />内容如下：    <br />workers.<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/tomcat" title="查看 tomcat 的全部文章" target="_blank">tomcat</a></span>_home=&quot;C:/Program Files/Apache Software Foundation/Tomcat 6.0&quot;     <br />&#160;&#160;&#160; workers.java_home=&quot;C:/Program Files/Java/jdk1.6.0_06/jre&quot;    <br />&#160;&#160;&#160; ps=\    <br />&#160;&#160;&#160; worker.list=ajp13     <br />&#160;&#160;&#160; worker.ajp13.port=8009     <br />&#160;&#160;&#160; worker.ajp13.host=localhost    <br />&#160;&#160;&#160; worker.ajp13.type=ajp13     <br />&#160;&#160;&#160; worker.ajp13.lbfactor=1     </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/systemconfig/apache2-2-and-the-integration-of-tomcat-6-0-18.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cacti配置监控Apache服务</title>
		<link>http://blog.tianbaoyong.com/systemconfig/cacti-apache-configuration-monitoring-service.html</link>
		<comments>http://blog.tianbaoyong.com/systemconfig/cacti-apache-configuration-monitoring-service.html#comments</comments>
		<pubDate>Tue, 12 Apr 2011 02:29:05 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[系统管理]]></category>
		<category><![CDATA[cacti apache]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/systemconfig/cacti-apache-configuration-monitoring-service.html</guid>
		<description><![CDATA[我们平时使用apache常常了解他的性能只能使用ps aux&#124;grep httpd&#124;wc -l查看有多少个进程,但处理了多少http的请求我们不清楚,进程是不是在工作,还是在等都不是很明白,要了解apache的性能,我们需要使用Apache Server Status的模块来详细了解apache工作的怎么样. 下载用于监控apache的php脚本和模板：点击下载 在上面的地址下载一个叫 ApacheStats08.zip的,中间有二个文件，一个处理脚本php的，另一个是xml的文件。其中的ss_apache_stats.php是脚本文件，它是一个php的文件，放到你的cacti/scripts/下面。接下来在cacti界面导入cacti_host_template_webserver_-_apache.xml这个文件。 配置apache，添加虚拟主机，如果不希望被外部用户访问，可以监听内部地址或127.0.0.1（这个只是在自己的机器上监控自己）。 Listen 127.0.0.1:80 载入模块： LoadModule status_module modules/mod_status.so 打开配置 ExtendedStatus On 建立虚拟主机（127.0.0.1，其他主机自己设定即可） &#60;VirtualHost 127.0.0.1:80&#62; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;location /server-status&#62; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; SetHandler server-status &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Order Deny,Allow &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Deny from all &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Allow from 127.0.0.1 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;/location&#62; &#160;&#160;&#160;&#160;&#160;&#160; &#60;/VirtualHost&#62; 重启apache服务 测试：http://127.0.0.1/server-status/ 如果出现如下类似结果说明配置成功，在cacti中添加主机或图形即可。]]></description>
			<content:encoded><![CDATA[<p>我们平时使用apache常常了解他的性能只能使用ps aux|grep httpd|wc -l查看有多少个进程,但处理了多少http的请求我们不清楚,进程是不是在工作,还是在等都不是很明白,要了解apache的性能,我们需要使用Apache Server Status的模块来详细了解apache工作的怎么样.</p>
<p>  <span id="more-645"></span>
<p>下载用于监控apache的php脚本和模板：<a href="http://forums.cacti.net/about25227.html&amp;highlight=apachestats">点击下载</a></p>
<p>在上面的地址下载一个叫 ApacheStats08.zip的,中间有二个文件，一个处理脚本php的，另一个是xml的文件。其中的ss_apache_stats.php是脚本文件，它是一个php的文件，放到你的cacti/scripts/下面。接下来在cacti界面导入cacti_host_template_webserver_-_apache.xml这个文件。</p>
<p>配置apache，添加虚拟主机，如果不希望被外部用户访问，可以监听内部地址或127.0.0.1（这个只是在自己的机器上监控自己）。</p>
<p>Listen 127.0.0.1:80</p>
<p>载入模块：</p>
<p>LoadModule status_module modules/mod_status.so</p>
<p>打开配置</p>
<p>ExtendedStatus On</p>
<p>建立虚拟主机（127.0.0.1，其他主机自己设定即可）</p>
<p>&lt;VirtualHost 127.0.0.1:80&gt;   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;location /server-status&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; SetHandler server-status     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Order Deny,Allow    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Deny from all    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Allow from 127.0.0.1    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/location&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160; &lt;/VirtualHost&gt;</p>
<p>重启apache服务</p>
<p>测试：<a href="http://127.0.0.1/server-status/">http://127.0.0.1/server-status/</a></p>
<p>如果出现如下类似结果说明配置成功，在cacti中添加主机或图形即可。</p>
<p><a href="http://blog.tianbaoyong.com/wp-content/uploads/2011/04/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.tianbaoyong.com/wp-content/uploads/2011/04/image_thumb.png" width="484" height="268" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/systemconfig/cacti-apache-configuration-monitoring-service.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mediawiki和Cacti从Windows迁移到Linux的注意事项</title>
		<link>http://blog.tianbaoyong.com/systemconfig/cacti-mediawiki-and-migrate-to-linux-from-windows-notes.html</link>
		<comments>http://blog.tianbaoyong.com/systemconfig/cacti-mediawiki-and-migrate-to-linux-from-windows-notes.html#comments</comments>
		<pubDate>Fri, 08 Apr 2011 08:43:07 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[系统管理]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/systemconfig/cacti-mediawiki-and-migrate-to-linux-from-windows-notes.html</guid>
		<description><![CDATA[Mediawiki的迁移非常简单，Linux平台和Windows平台没有什么区别，主要注意大小写和数据库配置即可。 Cacti的迁移就需要注意，配置路径要确认好。安装各种支持包时，需要加入新的源，具体步骤参考http://wiki.centos.org/AdditionalResources/Repositories/RPMForge#head-5aabf02717d5b6b12d47edbc5811404998926a1b即可。结合前面的博文http://blog.tianbaoyong.com/defaultcat/cacti-nagios-ntop-detailed-steps-to-install.html就可以了。]]></description>
			<content:encoded><![CDATA[<p>Mediawiki的迁移非常简单，Linux平台和Windows平台没有什么区别，主要注意大小写和数据库配置即可。</p>
<p>Cacti的迁移就需要注意，配置路径要确认好。安装各种支持包时，需要加入新的源，具体步骤参考<a title="http://wiki.centos.org/AdditionalResources/Repositories/RPMForge#head-5aabf02717d5b6b12d47edbc5811404998926a1b" href="http://wiki.centos.org/AdditionalResources/Repositories/RPMForge#head-5aabf02717d5b6b12d47edbc5811404998926a1b">http://wiki.centos.org/AdditionalResources/Repositories/RPMForge#head-5aabf02717d5b6b12d47edbc5811404998926a1b</a>即可。结合前面的博文<a title="http://blog.tianbaoyong.com/defaultcat/cacti-nagios-ntop-detailed-steps-to-install.html" href="http://blog.tianbaoyong.com/defaultcat/cacti-nagios-ntop-detailed-steps-to-install.html">http://blog.tianbaoyong.com/defaultcat/cacti-nagios-ntop-detailed-steps-to-install.html</a>就可以了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/systemconfig/cacti-mediawiki-and-migrate-to-linux-from-windows-notes.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS配置SNMPV3进行安全的监控</title>
		<link>http://blog.tianbaoyong.com/systemconfig/centos-safety-monitoring-configuration-snmpv3.html</link>
		<comments>http://blog.tianbaoyong.com/systemconfig/centos-safety-monitoring-configuration-snmpv3.html#comments</comments>
		<pubDate>Wed, 23 Mar 2011 14:54:47 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[系统管理]]></category>
		<category><![CDATA[snmp v3]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/systemconfig/centos-safety-monitoring-configuration-snmpv3.html</guid>
		<description><![CDATA[前提条件： 安装net-snmp net-snmp-utils net-snmp-devel 具体步骤： 1. 停止snmpd服务 service snmpd stop 2. 执行如下命令，按照提示输入用户名和密码，并确认密码 net-snmp-config &#8211;create-snmpv3-user 3. 启动snmpd服务 service snmpd start 4. 利用下面的命令测试。 snmpget -v 3 -u username -l authNoPriv -A &#34;password&#34; -X &#34;password&#34; 60.216.52.53 sysUpTime.0]]></description>
			<content:encoded><![CDATA[<p>前提条件：    <br />安装net-snmp net-snmp-utils net-snmp-devel    </p>
<p>具体步骤：    <br />1. 停止snmpd服务    <br />service snmpd stop    <br />2. 执行如下命令，按照提示输入用户名和密码，并确认密码     <br />net-snmp-config &#8211;create-snmpv3-user    <br />3. 启动snmpd服务    <br />service snmpd start    <br />4. 利用下面的命令测试。    <br />snmpget -v 3 -u username -l authNoPriv -A &quot;<span style="color: #8b0000">password</span>&quot; -X &quot;<span style="color: #8b0000">password</span>&quot; 60.216.52.53 sysUpTime.0</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/systemconfig/centos-safety-monitoring-configuration-snmpv3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle 11g R2 Linux X64 安装备忘</title>
		<link>http://blog.tianbaoyong.com/databsse/oracle-11g-r2-linux-x64-installation-notes.html</link>
		<comments>http://blog.tianbaoyong.com/databsse/oracle-11g-r2-linux-x64-installation-notes.html#comments</comments>
		<pubDate>Thu, 17 Mar 2011 09:03:03 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[数据库]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/databsse/oracle-11g-r2-linux-x64-installation-notes.html</guid>
		<description><![CDATA[#######################环境设置########################### 1、安装相关包 yum install \ gcc make binutils openmotif setarch libaio gcc&#160; glibc \ glibc-common glibc-headers glibc-devel \ compat-db compat-gcc-34&#160; compat-gcc-34-c++ compat-glibc \ compat-glibc-headers compat-libgcc-296 compat-libstdc++-33 \ compat-libstdc++-296 avahi-compat-libdns_sd \ java-1.4.2-gcj-compat-devel java-1.4.2-gcj-compat \ java-1.4.2-gcj-compat-src java-1.4.2-gcj-compat-javadoc \ java-1.4.2-gcj-compat-devel libaio-devel unixODBC \ unixODBC-devel pdksh perftest sysstat&#160; 2、修改内核参数 vi /etc/sysctl.conf , 在行末添加以下内容，在CentOs5.5上会看到 kernel.shmmax = 4294967295 kernel.shmall = 268435456 [...]]]></description>
			<content:encoded><![CDATA[<p>#######################环境设置###########################   <br />1、安装相关包    <br />yum install \    <br />gcc make binutils openmotif setarch libaio gcc&#160; glibc \    <br />glibc-common glibc-headers glibc-devel \    <br />compat-db compat-gcc-34&#160; compat-gcc-34-c++ compat-glibc \    <br />compat-glibc-headers compat-libgcc-296 compat-libstdc++-33 \    <br />compat-libstdc++-296 avahi-compat-libdns_sd \    <br />java-1.4.2-gcj-compat-devel java-1.4.2-gcj-compat \    <br />java-1.4.2-gcj-compat-src java-1.4.2-gcj-compat-javadoc \    <br />java-1.4.2-gcj-compat-devel libaio-devel unixODBC \    <br />unixODBC-devel pdksh perftest sysstat&#160; </p>
<p>  <span id="more-637"></span>
<p>2、修改内核参数 vi /etc/sysctl.conf , 在行末添加以下内容，在CentOs5.5上会看到   <br />kernel.shmmax = 4294967295    <br />kernel.shmall = 268435456    <br />这些参数已经存在并且默认启用了，    <br />需要将原kernel.shmmax与kernel.shmall参数注释掉。并在文件末尾添加以下内容：    <br />echo &quot;    <br />#use for oracle11g    <br />fs.file-max = 6815744    <br />fs.aio-max-nr = 1048576    <br />kernel.shmall = 2097152    <br />kernel.shmmax = 2147483648    <br />kernel.shmmni = 4096    <br />kernel.sem = 250 32000 100 128    <br />net.ipv4.ip_local_port_range = 9000 65500    <br />net.core.rmem_default = 4194304    <br />net.core.rmem_max = 4194304    <br />net.core.wmem_default = 262144    <br />net.core.wmem_max = 1048576 &quot; &gt;&gt; /etc/sysctl.conf</p>
<p>3.    <br />echo &quot;#use for oracle11g    <br />oracle soft nproc 2047    <br />oracle hard nproc 16384    <br />oracle soft nofile 1024    <br />oracle hard nofile 65536 &quot; &gt;&gt; /etc/security/limits.conf </p>
<p>&#160;</p>
<p>5.vi /etc/selinux/config 确保以下内容   <br />SELINUX=disabled    <br />关闭SELIINUX</p>
<p>6.   <br />echo &quot;     <br />if [ $USER = &quot;oracle&quot; ]; then    <br />if [ $SHELL = &quot;/bin/ksh&quot; ]; then    <br />ulimit -p 16384    <br />ulimit -n 65536    <br />else    <br />ulimit -u 16384 -n 65536    <br />fi    <br />fi&quot; &gt;&gt; /etc/profile</p>
<p>7.因为默认centos5.5不支持11.2,0.1,修改配置文件，使CentOs5.5 支持Oracle10g .    <br />vi /etc/redhat-release</p>
<p>echo &quot;#CentOS release 5.5 (Final)   <br />redhat-4 &quot; &gt; /etc/redhat-release</p>
<p>#############################安装过程################################   <br />1.用户    <br />groupadd oinstall     <br />groupadd dba    <br />groupadd oper    <br />useradd -m -g oinstall -G dba oracle    <br />passwd oracle</p>
<p>2、创建安装目录   <br />mkdir /oracle    <br />chown -R oracle:oinstall /oracle    <br />chmod -R 775 /oracle</p>
<p>3、将Oracle原始安装包文件放在/oracle目录下，再运行解压命令。   <br />[root@oracleserver-x64 oracle]#&#160; unzip&#160; linux.x64_11gr2_database_1of2.zip    <br />[root@oracleserver-x64 oracle]#&#160; unzip&#160; linux.x64_11gr2_database_2of2.zip&#160; </p>
<p>3.修改 Oracle 用户 .bash_profile   <br /># su &#8211; oracle    <br />$ vi ./.bash_profile&#160;&#160; (或 # vi /home/oracle/.bash_profile)    <br />在文件最后添加如下内容</p>
<p>echo &quot;umask 022   <br />export ORACLE_BASE=/oracle    <br />export ORACLE_HOME=$ORACLE_BASE/11g    <br />export ORACLE_SID=ora     <br />export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin    <br />export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib    <br />export LANG=C&quot; &gt;&gt; .bash_profile</p>
<p>//数据库实例的SID，此处为boson，在图形界面安装过程中要求输入SID与这里保持相同   <br />======================================================================================================================    <br />4.以root身份打开另一个终端窗口，&#8211;这步至关重要，不执行这步在以oracle用户运行 # ./runInstaller时会启动不了图型安装界面。    <br />[root@oracleserver-x64 ~]# xhost +    <br />access control disabled, clients can connect from any host    <br />[root@oracleserver-x64 ~]# xhost + localhost    <br />localhost being added to access control list    <br />[root@oracleserver-x64 ~]# su &#8211; oracle    <br />-bash: ulimit: max user processes: cannot modify limit: Operation not permitted    <br />[oracle@oracleserver-x64 ~]$ cd /oracle/database/    <br />[oracle@oracleserver-x64 database]$ ./runInstaller     <br />[oracle@oracleserver-x64 database]$ ./runInstaller     <br />Starting Oracle Universal Installer&#8230;</p>
<p>Checking Temp space: must be greater than 120 MB.&#160;&#160; Actual 43647 MB&#160;&#160;&#160; Passed   <br />Checking swap space: must be greater than 150 MB.&#160;&#160; Actual 4000 MB&#160;&#160;&#160; Passed    <br />Checking monitor: must be configured to display at least 256 colors.&#160;&#160;&#160; Actual 16777216&#160;&#160;&#160; Passed    <br />Preparing to launch Oracle Universal Installer from /tmp/OraInstall2010-12-03_10-26-58AM. Please wait &#8230;</p>
<p>将Oracle 11g R2加入到开机自启动</p>
<p>1. 修改dbstart与dbshut脚本：(修改后的文件内容在下面)   <br /># vi $ORACLE_HOME/bin/dbstart    <br />#ORACLE_HOME_LISTNER=$1    <br />ORACLE_HOME_LISTNER=$ORACLE_HOME    <br />#&#160; vi $ORACLE_HOME/bin/dbshut    <br />#ORACLE_HOME_LISTNER=$1    <br />ORACLE_HOME_LISTNER=$ORACLE_HOME</p>
<p>2. 修改/etc/oratab为如下格式：   <br /># vi /etc/oratab    <br />boson:/oracle/10g:N    <br />将N都改写成Y即可。</p>
<p>3. 编辑启动脚本，以实现开机自启动（修改后的源文件在下面）   <br /># vi /etc/rc.d/init.d/oracle    <br />下载脚本文件，不要在windows下编辑它，直接放到 /etc/rc.d/init.d/下即可。    <br />下载地址：<a href="http://u.sohu.com/download/2/12913809769017100547076">http://u.sohu.com/download/2/12913809769017100547076</a></p>
<p>4、修改所属组和用户   <br /># chown root.root oracle </p>
<p>5、修改访问权限   <br /># chmod 775 /etc/rc.d/init.d/oracle</p>
<p>6、添加服务到自动启动中   <br /># chkconfig –add oracle    <br /># chkconfig oracle on</p>
<p>7、执行命令，看是否可以启动成功   <br />[root@oracleserver init.d]# service oracle start</p>
<p>8、查看日志文件   <br /># tail -f /var/log/oracle</p>
<p>9、查看本地服务端口，看oracle是否有启动。   <br /># nmap -sT localhost</p>
<p>&#160;</p>
<p>#####################################/etc/rc.d/init.d/oracle的文件内容############################：</p>
<p>#!/bin/bash   <br />#    <br /># Copyright (C) 1998-2008 Oracle, Inc.&#160; All Rights Reserved.    <br />#    <br /># This script manages the services needed to run oracle&#160; software    <br /># Basic support for IRIX style chkconfig    <br /># chkconfig: 2345 99 01    <br /># description: ORACLE 10g Server</p>
<p>ORACLE_HOME=/oracle/11g   <br />ORACLE_BASE=/oracle    <br />ORACLE_SID=ora    <br />ORACLE_UNQNAME=ora    <br />PATH=$PATH:$ORACLE_HOME/bin    <br />LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib    <br />LANG=C    <br />export ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_UNQNAME PATH LD_LIBRARY_PATH LANG</p>
<p>if [ ! -f $ORACLE_HOME/bin/dbstart ]   <br />then    <br />echo &quot;ORACLE cannot start&quot;    <br />exit    <br />fi    <br />case &quot;$1&quot; in    <br />&#8216;start&#8217;)    <br />echo &quot;Starting Oracle Database&#8230;&quot;    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />date +&quot; %T %a %D : Starting Oracle Databasee as part of system up.&quot; &gt;&gt; /var/log/oracle    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />su &#8211; oracle -c &quot;$ORACLE_HOME/bin/dbstart&quot; &gt;&gt; /var/log/oracle    <br />echo &quot;Done.&quot;    <br />echo &quot;Starting Oracle EM Control &#8230; &quot;    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />date +&quot; %T %a %D : Starting Oracle EM Control as part of system up.&quot; &gt;&gt; /var/log/oracle    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />su &#8211; oracle -c &quot;$ORACLE_HOME/bin/emctl start dbconsole&quot; &gt;&gt; /var/log/oracle    <br />echo &quot;Done.&quot;    <br />echo &quot;&quot;    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />date +&quot; %T %a %D : Finished.&quot; &gt;&gt; /var/log/oracle    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />;;    <br />&#8216;stop&#8217;)    <br />echo &quot;Stoping Oracle Database&quot;    <br />su &#8211; oracle -c &quot;$ORACLE_HOME/bin/emctl stop dbconsole&quot; &gt;&gt; /var/log/oracle    <br />echo &quot;Stoping Oracle EM Control &#8230; &quot;    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />date +&quot; %T %a %D : Stoping Oracle EM Control as part of system down.&quot; &gt;&gt; /var/log/oracle    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />su &#8211; oracle -c &quot;$ORACLE_HOME/bin/dbshut&quot; &gt;&gt; /var/log/oracle    <br />echo &quot;Done.&quot;    <br />echo &quot;&quot;    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />date +&quot; %T %a %D : Finished.&quot; &gt;&gt; /var/log/oracle    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />;;    <br />restart)    <br />$0 stop    <br />$0 start    <br />;;    <br />*)    <br />echo &quot;Usage: oracle {start|stop|restart}&quot;    <br />exit 1    <br />esac</p>
<p>&#160;</p>
<p>##########################################dbstart内容##########################################</p>
<p>#!/bin/sh   <br />#    <br /># $Id: dbstart.sh 22-may-2008.05:05:45 arogers Exp $     <br /># Copyright (c) 1991, 2008, Oracle. All rights reserved.&#160; <br />#</p>
<p>###################################   <br />#     <br /># usage: dbstart $ORACLE_HOME    <br />#    <br /># This script is used to start ORACLE from /etc/rc(.local).    <br /># It should ONLY be executed as part of the system boot procedure.    <br />#    <br /># This script will start all databases listed in the oratab file    <br /># whose third field is a &quot;Y&quot;.&#160; If the third field is set to &quot;Y&quot; and    <br /># there is no ORACLE_SID for an entry (the first field is a *),    <br /># then this script will ignore that entry.    <br />#    <br /># This script requires that ASM ORACLE_SID&#8217;s start with a +, and     <br /># that non-ASM instance ORACLE_SID&#8217;s do not start with a +.    <br />#    <br /># If ASM instances are to be started with this script, it cannot    <br /># be used inside an rc*.d directory, and should be invoked from    <br /># rc.local only. Otherwise, the CSS service may not be available    <br /># yet, and this script will block init from completing the boot    <br /># cycle.    <br />#    <br /># If you want dbstart to auto-start a single-instance database that uses    <br /># an ASM server that is auto-started by CRS (this is the default behavior    <br /># for an ASM cluster), you must change the database&#8217;s ORATAB entry to use    <br /># a third field of &quot;W&quot; and the ASM&#8217;s ORATAB entry to use a third field of &quot;N&quot;.    <br /># These values specify that dbstart auto-starts the database only after    <br /># the ASM instance is up and running.    <br />#    <br /># Note:    <br /># Use ORACLE_TRACE=T for tracing this script.    <br />#    <br /># The progress log for each instance bringup plus Error and Warning message[s]    <br /># are logged in file $ORACLE_HOME/startup.log. The error messages related to     <br /># instance bringup are also logged to syslog (system log module).    <br /># The Listener log is located at $ORACLE_HOME_LISTNER/listener.log    <br />#     <br /># On all UNIX platforms except SOLARIS    <br /># ORATAB=/etc/oratab    <br />#    <br /># To configure, update ORATAB with Instances that need to be started up    <br />#&#160;&#160;&#160; Entries are of the form:    <br />#&#160;&#160;&#160; $ORACLE_SID:$ORACLE_HOME:&lt;N|Y|W&gt;:    <br />#&#160;&#160;&#160; An example entry:    <br />#&#160;&#160;&#160; main:/usr/lib/oracle/emagent_10g:Y    <br />#    <br /># Overall algorithm:    <br /># 1) Bring up all ASM instances with &#8216;Y&#8217; entry in status field in oratab entry    <br /># 2) Bring up all Database instances with &#8216;Y&#8217; entry in status field in    <br />#&#160;&#160;&#160; oratab entry    <br /># 3) If there are Database instances with &#8216;W&#8217; entry in status field    <br />#&#160;&#160;&#160; then    <br />#&#160;&#160;&#160;&#160;&#160; iterate over all ASM instances (irrespective of &#8216;Y&#8217; or &#8216;N&#8217;) AND    <br />#&#160;&#160;&#160;&#160;&#160; wait for all of them to be started    <br />#&#160;&#160;&#160; fi    <br /># 4) Bring up all Database instances with &#8216;W&#8217; entry in status field in    <br />#&#160;&#160;&#160; oratab entry    <br />#    <br />#####################################</p>
<p>LOGMSG=&quot;logger -puser.alert -s &quot;</p>
<p>trap &#8216;exit&#8217; 1 2 3</p>
<p># for script tracing   <br />case $ORACLE_TRACE in    <br />&#160; T) set -x ;;    <br />esac    <br />&#160;&#160;&#160; <br /># Set path if path not set (if called from /etc/rc)    <br />SAVE_PATH=/bin:/usr/bin:/etc:${PATH} ; export PATH    <br />SAVE_LLP=$LD_LIBRARY_PATH</p>
<p># First argument is used to bring up Oracle Net Listener   <br />#ORACLE_HOME_LISTNER=$1    <br />ORACLE_HOME_LISTNER=&#8217;/oracle/11g&#8217;    <br />if [ ! $ORACLE_HOME_LISTNER ] ; then    <br />&#160; echo &quot;ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener&quot;    <br />&#160; echo &quot;Usage: $0 ORACLE_HOME&quot;    <br />else    <br />&#160; LOG=$ORACLE_HOME_LISTNER/listener.log</p>
<p>&#160; # Set the ORACLE_HOME for the Oracle Net Listener, it gets reset to   <br />&#160; # a different ORACLE_HOME for each entry in the oratab.    <br />&#160; export ORACLE_HOME=$ORACLE_HOME_LISTNER</p>
<p>&#160; # Start Oracle Net Listener   <br />&#160; if [ -x $ORACLE_HOME_LISTNER/bin/tnslsnr ] ; then    <br />&#160;&#160;&#160; echo &quot;$0: Starting Oracle Net Listener&quot; &gt;&gt; $LOG 2&gt;&amp;1    <br />&#160;&#160;&#160; $ORACLE_HOME_LISTNER/bin/lsnrctl start &gt;&gt; $LOG 2&gt;&amp;1 &amp;    <br />&#160;&#160;&#160; VER10LIST=`$ORACLE_HOME_LISTNER/bin/lsnrctl version | grep &quot;LSNRCTL for &quot; | cut -d&#8217; &#8216; -f5 | cut -d&#8217;.&#8217; -f1`    <br />&#160;&#160;&#160; export VER10LIST    <br />&#160; else    <br />&#160;&#160;&#160; echo &quot;Failed to auto-start Oracle Net Listener using $ORACLE_HOME_LISTNER/bin/tnslsnr&quot;    <br />&#160; fi    <br />fi</p>
<p># Set this in accordance with the platform   <br />ORATAB=/etc/oratab    <br />if [ ! $ORATAB ] ; then    <br />&#160; echo &quot;$ORATAB not found&quot;    <br />&#160; exit 1;    <br />fi</p>
<p># Checks Version Mismatch between Listener and Database Instance.   <br /># A version 10 listener is required for an Oracle Database 10g database.    <br /># Previous versions of the listener are not supported for use with an Oracle    <br /># Database 10g database. However, it is possible to use a version 10 listener    <br /># with previous versions of the Oracle database.    <br />checkversionmismatch() {    <br />&#160; if [ $VER10LIST ] ; then    <br />&#160;&#160;&#160; VER10INST=`sqlplus -V | grep &quot;Release &quot; | cut -d&#8217; &#8216; -f3 | cut -d&#8217;.&#8217; -f1`    <br />&#160;&#160;&#160; if [ $VER10LIST -lt $VER10INST ] ; then    <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Listener version $VER10LIST NOT supported with Database version $VER10INST&quot;    <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Restart Oracle Net Listener using an alternate ORACLE_HOME_LISTNER:&quot;    <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;lsnrctl start&quot;    <br />&#160;&#160;&#160; fi    <br />&#160; fi    <br />}</p>
<p># Starts a Database Instance   <br />startinst() {    <br />&#160; # Called programs use same database ID    <br />&#160; export ORACLE_SID</p>
<p>&#160; # Put $ORACLE_HOME/bin into PATH and export.   <br />&#160; PATH=$ORACLE_HOME/bin:${SAVE_PATH} ; export PATH    <br />&#160; # add for bug # 652997    <br />&#160; LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${SAVE_LLP} ; export LD_LIBRARY_PATH    <br />&#160; PFILE=${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora    <br />&#160; SPFILE=${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora    <br />&#160; SPFILE1=${ORACLE_HOME}/dbs/spfile.ora</p>
<p>&#160; echo &quot;&quot;   <br />&#160; echo &quot;$0: Starting up database \&quot;$ORACLE_SID\&quot;&quot;    <br />&#160; date    <br />&#160; echo &quot;&quot;</p>
<p>&#160; checkversionmismatch</p>
<p>&#160; # See if it is a V6 or V7 database   <br />&#160; VERSION=undef    <br />&#160; if [ -f $ORACLE_HOME/bin/sqldba ] ; then    <br />&#160;&#160;&#160; SQLDBA=sqldba    <br />&#160;&#160;&#160; VERSION=`$ORACLE_HOME/bin/sqldba command=exit | awk &#8216;    <br />&#160;&#160;&#160;&#160;&#160; /SQL\*DBA: (Release|Version)/ {split($3, V, &quot;.&quot;) ;    <br />&#160;&#160;&#160;&#160;&#160; print V[1]}&#8217;`    <br />&#160;&#160;&#160; case $VERSION in    <br />&#160;&#160;&#160;&#160;&#160; &quot;6&quot;) ;;    <br />&#160;&#160;&#160;&#160;&#160; *) VERSION=&quot;internal&quot; ;;    <br />&#160;&#160;&#160; esac    <br />&#160; else    <br />&#160;&#160;&#160; if [ -f $ORACLE_HOME/bin/svrmgrl ] ; then    <br />&#160;&#160;&#160;&#160;&#160; SQLDBA=svrmgrl    <br />&#160;&#160;&#160;&#160;&#160; VERSION=&quot;internal&quot;    <br />&#160;&#160;&#160; else    <br />&#160;&#160;&#160;&#160;&#160; SQLDBA=&quot;sqlplus /nolog&quot;    <br />&#160;&#160;&#160; fi    <br />&#160; fi</p>
<p>&#160; STATUS=1   <br />&#160; if [ -f $ORACLE_HOME/dbs/sgadef${ORACLE_SID}.dbf ] ; then    <br />&#160;&#160;&#160; STATUS=&quot;-1&quot;    <br />&#160; fi    <br />&#160; if [ -f $ORACLE_HOME/dbs/sgadef${ORACLE_SID}.ora ] ; then    <br />&#160;&#160;&#160; STATUS=&quot;-1&quot;    <br />&#160; fi    <br />&#160; pmon=`ps -ef | grep -w &quot;ora_pmon_$ORACLE_SID&quot;&#160; | grep -v grep`    <br />&#160; if [ &quot;$pmon&quot; != &quot;&quot; ] ; then    <br />&#160;&#160;&#160; STATUS=&quot;-1&quot;    <br />&#160;&#160;&#160; $LOGMSG &quot;Warning: ${INST} \&quot;${ORACLE_SID}\&quot; already started.&quot;    <br />&#160; fi</p>
<p>&#160; if [ $STATUS -eq -1 ] ; then   <br />&#160;&#160;&#160; $LOGMSG &quot;Warning: ${INST} \&quot;${ORACLE_SID}\&quot; possibly left running when system went down (system crash?).&quot;    <br />&#160;&#160;&#160; $LOGMSG &quot;Action: Notify Database Administrator.&quot;    <br />&#160;&#160;&#160; case $VERSION in    <br />&#160;&#160;&#160;&#160;&#160; &quot;6&quot;)&#160; sqldba &quot;command=shutdown abort&quot; ;;    <br />&#160;&#160;&#160;&#160;&#160; &quot;internal&quot;)&#160; $SQLDBA $args &lt;&lt;EOF    <br />connect internal    <br />shutdown abort    <br />EOF    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;    <br />&#160;&#160;&#160;&#160;&#160; *)&#160; $SQLDBA $args &lt;&lt;EOF    <br />connect / as sysdba    <br />shutdown abort    <br />quit    <br />EOF    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;    <br />&#160;&#160;&#160; esac</p>
<p>&#160;&#160;&#160; if [ $? -eq 0 ] ; then   <br />&#160;&#160;&#160;&#160;&#160; STATUS=1    <br />&#160;&#160;&#160; else    <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Error: ${INST} \&quot;${ORACLE_SID}\&quot; NOT started.&quot;    <br />&#160;&#160;&#160; fi    <br />&#160; fi</p>
<p>&#160; if [ $STATUS -eq 1 ] ; then   <br />&#160;&#160;&#160; if [ -e $SPFILE -o -e $SPFILE1 -o -e $PFILE ] ; then    <br />&#160;&#160;&#160;&#160;&#160; case $VERSION in    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;6&quot;)&#160; sqldba command=startup ;;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;internal&quot;)&#160; $SQLDBA &lt;&lt;EOF     <br />connect internal    <br />startup    <br />EOF    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; *)&#160; $SQLDBA &lt;&lt;EOF     <br />connect / as sysdba    <br />startup    <br />quit    <br />EOF    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;    <br />&#160;&#160;&#160;&#160;&#160; esac</p>
<p>&#160;&#160;&#160;&#160;&#160; if [ $? -eq 0 ] ; then   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; echo &quot;&quot;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; echo &quot;$0: ${INST} \&quot;${ORACLE_SID}\&quot; warm started.&quot;     <br />&#160;&#160;&#160;&#160;&#160; else    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;&quot;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Error: ${INST} \&quot;${ORACLE_SID}\&quot; NOT started.&quot;     <br />&#160;&#160;&#160;&#160;&#160; fi    <br />&#160;&#160;&#160; else    <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;&quot;     <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;No init file found for ${INST} \&quot;${ORACLE_SID}\&quot;.&quot;     <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Error: ${INST} \&quot;${ORACLE_SID}\&quot; NOT started.&quot;     <br />&#160;&#160;&#160; fi    <br />&#160; fi    <br />}</p>
<p># Starts an ASM Instance   <br />startasminst() {    <br />&#160; # Called programs use same database ID    <br />&#160; export ORACLE_SID    <br />&#160; ORACLE_HOME=`echo $LINE | awk -F: &#8216;{print $2}&#8217; -`    <br />&#160; # Called scripts use same home directory    <br />&#160; export ORACLE_HOME</p>
<p>&#160; # For ASM instances, we have a dependency on the CSS service.   <br />&#160; # Wait here for it to become available before instance startup.</p>
<p>&#160; # Is the 10g install intact? Are all necessary binaries present?   <br />&#160; if [ ! -x $ORACLE_HOME/bin/crsctl ]; then    <br />&#160;&#160;&#160; $LOGMSG &quot;$ORACLE_HOME/bin/crsctl not found when attempting to start&quot;    <br />&#160;&#160;&#160; $LOGMSG &quot;&#160; ASM instance $ORACLE_SID.&quot;</p>
<p>&#160; else    <br />&#160;&#160;&#160; COUNT=0    <br />&#160;&#160;&#160; $ORACLE_HOME/bin/crsctl check css    <br />&#160;&#160;&#160; RC=$?    <br />&#160;&#160;&#160; while [ &quot;$RC&quot; != &quot;0&quot; ];    <br />&#160;&#160;&#160;&#160;&#160; do    <br />&#160;&#160;&#160;&#160;&#160; COUNT=`expr $COUNT + 1`    <br />&#160;&#160;&#160;&#160;&#160; if [ $COUNT = 15 ] ; then    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 15 tries with 20 sec interval =&gt; 5 minutes timeout    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Timed out waiting to start ASM instance $ORACLE_SID&quot;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;&#160; CSS service is NOT available.&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; exit $COUNT    <br />&#160;&#160;&#160;&#160;&#160; fi    <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Waiting for Oracle CSS service to be available before starting &quot;    <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot; ASM instance $ORACLE_SID. Wait $COUNT.&quot;    <br />&#160;&#160;&#160;&#160;&#160; sleep 20    <br />&#160;&#160;&#160;&#160;&#160; $ORACLE_HOME/bin/crsctl check css    <br />&#160;&#160;&#160;&#160;&#160; RC=$?    <br />&#160;&#160;&#160; done    <br />&#160; fi    <br />&#160; startinst    <br />}</p>
<p># Start of dbstartup script   <br />#    <br /># Loop for every entry in oratab file and and try to start    <br /># that ORACLE.    <br />#    <br /># ASM instances need to be started before &#8216;Database instances&#8217;    <br /># ASM instance is identified with &#8216;+&#8217; prefix in ORACLE_SID    <br /># Following loop brings up ASM instance[s]</p>
<p>cat $ORATAB | while read LINE   <br />do    <br />case $LINE in    <br />&#160; \#*)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #comment-line in oratab    <br />&#160; *)    <br />&#160; ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160; if [ &quot;$ORACLE_SID&quot; = '*' ] ; then    <br />&#160;&#160;&#160; # same as NULL SID &#8211; ignore this entry    <br />&#160;&#160;&#160; ORACLE_SID=&quot;&quot;    <br />&#160;&#160;&#160; continue    <br />&#160; fi    <br />&#160; # Proceed only if last field is &#8216;Y&#8217;.    <br />&#160; if [ &quot;`echo $LINE | awk -F: '{print $NF}' -`&quot; = &quot;Y&quot; ] ; then    <br />&#160;&#160;&#160; # If ASM instances    <br />&#160;&#160;&#160; if [ `echo $ORACLE_SID | cut -b 1` = '+' ]; then    <br />&#160;&#160;&#160;&#160;&#160; INST=&quot;ASM instance&quot;    <br />&#160;&#160;&#160;&#160;&#160; ORACLE_HOME=`echo $LINE | awk -F: &#8216;{print $2}&#8217; -`    <br />&#160;&#160;&#160;&#160;&#160; # Called scripts use same home directory    <br />&#160;&#160;&#160;&#160;&#160; export ORACLE_HOME    <br />&#160;&#160;&#160;&#160;&#160; # file for logging script&#8217;s output    <br />&#160;&#160;&#160;&#160;&#160; LOG=$ORACLE_HOME/startup.log    <br />&#160;&#160;&#160;&#160;&#160; touch $LOG    <br />&#160;&#160;&#160;&#160;&#160; chmod a+r $LOG    <br />&#160;&#160;&#160;&#160;&#160; echo &quot;Processing $INST \&quot;$ORACLE_SID\&quot;: log file $ORACLE_HOME/startup.log&quot;    <br />&#160;&#160;&#160;&#160;&#160; startasminst &gt;&gt; $LOG 2&gt;&amp;1    <br />&#160;&#160;&#160; fi    <br />&#160; fi    <br />&#160; ;;    <br />esac    <br />done</p>
<p># exit if there was any trouble bringing up ASM instance[s]   <br />if [ &quot;$?&quot; != &quot;0&quot; ] ; then    <br />&#160; exit 2    <br />fi</p>
<p>#   <br /># Following loop brings up &#8216;Database instances&#8217;    <br />#    <br />cat $ORATAB | while read LINE    <br />do    <br />case $LINE in    <br />&#160; \#*)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #comment-line in oratab    <br />&#160; *)    <br />&#160; ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160; if [ &quot;$ORACLE_SID&quot; = '*' ] ; then    <br />&#160;&#160;&#160; # same as NULL SID &#8211; ignore this entry    <br />&#160;&#160;&#160; ORACLE_SID=&quot;&quot;    <br />&#160;&#160;&#160; continue    <br />&#160; fi    <br />&#160; # Proceed only if last field is &#8216;Y&#8217;.    <br />&#160; if [ &quot;`echo $LINE | awk -F: '{print $NF}' -`&quot; = &quot;Y&quot; ] ; then    <br />&#160;&#160;&#160; # If non-ASM instances    <br />&#160;&#160;&#160; if [ `echo $ORACLE_SID | cut -b 1` != '+' ]; then    <br />&#160;&#160;&#160;&#160;&#160; INST=&quot;Database instance&quot;    <br />&#160;&#160;&#160;&#160;&#160; ORACLE_HOME=`echo $LINE | awk -F: &#8216;{print $2}&#8217; -`    <br />&#160;&#160;&#160;&#160;&#160; # Called scripts use same home directory    <br />&#160;&#160;&#160;&#160;&#160; export ORACLE_HOME    <br />&#160;&#160;&#160;&#160;&#160; # file for logging script&#8217;s output    <br />&#160;&#160;&#160;&#160;&#160; LOG=$ORACLE_HOME/startup.log    <br />&#160;&#160;&#160;&#160;&#160; touch $LOG    <br />&#160;&#160;&#160;&#160;&#160; chmod a+r $LOG    <br />&#160;&#160;&#160;&#160;&#160; echo &quot;Processing $INST \&quot;$ORACLE_SID\&quot;: log file $ORACLE_HOME/startup.log&quot;    <br />&#160;&#160;&#160;&#160;&#160; startinst &gt;&gt; $LOG 2&gt;&amp;1    <br />&#160;&#160;&#160; fi    <br />&#160; fi    <br />&#160; ;;    <br />esac    <br />done</p>
<p>#   <br /># Following loop brings up &#8216;Database instances&#8217; that have wait state &#8216;W&#8217;    <br />#    <br />cat $ORATAB | while read LINE    <br />do    <br />case $LINE in    <br />&#160; \#*)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #comment-line in oratab    <br />&#160; *)    <br />&#160; ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160; if [ &quot;$ORACLE_SID&quot; = '*' ] ; then    <br />&#160;&#160;&#160; # same as NULL SID &#8211; ignore this entry    <br />&#160;&#160;&#160; ORACLE_SID=&quot;&quot;    <br />&#160;&#160;&#160; continue    <br />&#160; fi    <br />&#160; # Proceed only if last field is &#8216;W&#8217;.    <br />&#160; if [ &quot;`echo $LINE | awk -F: '{print $NF}' -`&quot; = &quot;W&quot; ] ; then    <br />&#160;&#160;&#160; W_ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160;&#160;&#160; # DB instances with &#8216;W&#8217; (wait state) have a dependency on ASM instances via CRS.    <br />&#160;&#160;&#160; # Wait here for &#8216;all&#8217; ASM instances to become available.    <br />&#160;&#160;&#160; cat $ORATAB | while read LINE    <br />&#160;&#160;&#160; do    <br />&#160;&#160;&#160; case $LINE in    <br />&#160;&#160;&#160;&#160;&#160; \#*)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #comment-line in oratab    <br />&#160;&#160;&#160;&#160;&#160; *)    <br />&#160;&#160;&#160;&#160;&#160; ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160;&#160;&#160;&#160;&#160; if [ &quot;$ORACLE_SID&quot; = '*' ] ; then    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; # same as NULL SID &#8211; ignore this entry    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ORACLE_SID=&quot;&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; continue    <br />&#160;&#160;&#160;&#160;&#160; fi    <br />&#160;&#160;&#160;&#160;&#160; if [ `echo $ORACLE_SID | cut -b 1` = '+' ]; then    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; INST=&quot;ASM instance&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ORACLE_HOME=`echo $LINE | awk -F: &#8216;{print $2}&#8217; -`    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; if [ -x $ORACLE_HOME/bin/srvctl ] ; then    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; COUNT=0    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; NODE=`olsnodes -l`    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; RNODE=`srvctl status asm -n $NODE | grep &quot;$ORACLE_SID is running&quot;`    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; RC=$?    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; while [ &quot;$RC&quot; != &quot;0&quot; ]; # wait until this comes up!    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; do    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; COUNT=$((COUNT+1))    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if [ $COUNT = 5 ] ; then    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 5 tries with 60 sec interval =&gt; 5 minutes timeout    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Error: Timed out waiting on CRS to start ASM instance $ORACLE_SID&quot;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; exit $COUNT    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; fi    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Waiting for Oracle CRS service to start ASM instance $ORACLE_SID&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Wait $COUNT.&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; sleep 60    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; RNODE=`srvctl status asm -n $NODE | grep &quot;$ORACLE_SID is running&quot;`    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; RC=$?    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; done    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; else    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Error: \&quot;${W_ORACLE_SID}\&quot; has dependency on ASM instance \&quot;${ORACLE_SID}\&quot;&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Error: Need $ORACLE_HOME/bin/srvctl to check this dependency&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; fi    <br />&#160;&#160;&#160;&#160;&#160; fi&#160;&#160;&#160;&#160; # asm instance    <br />&#160;&#160;&#160;&#160;&#160; ;;    <br />&#160;&#160;&#160; esac    <br />&#160;&#160;&#160; done # innner while    <br />&#160; fi    <br />&#160; ;;    <br />esac    <br />done # outer while</p>
<p># by now all the ASM instances have come up and we can proceed to bring up   <br /># DB instance with &#8216;W&#8217; wait status</p>
<p>cat $ORATAB | while read LINE   <br />do    <br />case $LINE in    <br />&#160; \#*)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #comment-line in oratab    <br />&#160; *)    <br />&#160; ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160; if [ &quot;$ORACLE_SID&quot; = '*' ] ; then    <br />&#160;&#160;&#160; # same as NULL SID &#8211; ignore this entry    <br />&#160;&#160;&#160; ORACLE_SID=&quot;&quot;    <br />&#160;&#160;&#160; continue    <br />&#160; fi    <br />&#160; # Proceed only if last field is &#8216;W&#8217;.    <br />&#160; if [ &quot;`echo $LINE | awk -F: '{print $NF}' -`&quot; = &quot;W&quot; ] ; then    <br />&#160;&#160;&#160; INST=&quot;Database instance&quot;    <br />&#160;&#160;&#160; if [ `echo $ORACLE_SID | cut -b 1` = '+' ]; then    <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Error: ${INST} \&quot;${ORACLE_SID}\&quot; NOT started&quot;    <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Error: incorrect usage: &#8216;W&#8217; not allowed for ASM instances&quot;    <br />&#160;&#160;&#160;&#160;&#160; continue    <br />&#160;&#160;&#160; fi    <br />&#160;&#160;&#160; ORACLE_HOME=`echo $LINE | awk -F: &#8216;{print $2}&#8217; -`    <br />&#160;&#160;&#160; # Called scripts use same home directory    <br />&#160;&#160;&#160; export ORACLE_HOME    <br />&#160;&#160;&#160; # file for logging script&#8217;s output    <br />&#160;&#160;&#160; LOG=$ORACLE_HOME/startup.log    <br />&#160;&#160;&#160; touch $LOG    <br />&#160;&#160;&#160; chmod a+r $LOG    <br />&#160;&#160;&#160; echo &quot;Processing $INST \&quot;$ORACLE_SID\&quot;: log file $ORACLE_HOME/startup.log&quot;    <br />&#160;&#160;&#160; startinst &gt;&gt; $LOG 2&gt;&amp;1    <br />&#160; fi    <br />&#160; ;;    <br />esac    <br />done</p>
<p>&#160;</p>
<p>##########################################dbshut内容##########################################</p>
<p>#!/bin/sh   <br />#    <br /># $Id: dbshut.sh 22-may-2008.05:19:31 arogers Exp $    <br /># Copyright (c) 1991, 2008, Oracle. All rights reserved.&#160; <br />#</p>
<p>###################################   <br />#     <br /># usage: dbshut $ORACLE_HOME    <br />#    <br /># This script is used to shutdown ORACLE from /etc/rc(.local).    <br /># It should ONLY be executed as part of the system boot procedure.    <br />#    <br /># This script will shutdown all databases listed in the oratab file    <br /># whose third field is a &quot;Y&quot; or &quot;W&quot;.&#160; If the third field is set to &quot;Y&quot; and    <br /># there is no ORACLE_SID for an entry (the first field is a *),    <br /># then this script will ignore that entry.    <br />#    <br /># This script requires that ASM ORACLE_SID&#8217;s start with a +, and     <br /># that non-ASM instance ORACLE_SID&#8217;s do not start with a +.    <br />#    <br /># Note:    <br /># Use ORACLE_TRACE=T for tracing this script.    <br /># Oracle Net Listener is also shutdown using this script.    <br />#    <br /># The progress log for each instance shutdown is logged in file     <br /># $ORACLE_HOME/shutdown.log.    <br />#    <br /># On all UNIX platforms except SOLARIS    <br /># ORATAB=/etc/oratab    <br />#    <br /># To configure, update ORATAB with Instances that need to be shutdown    <br />#&#160;&#160;&#160; Entries are of the form:    <br />#&#160;&#160;&#160; $ORACLE_SID:$ORACLE_HOME:&lt;N|Y&gt;:    <br />#&#160;&#160;&#160; An example entry:    <br />#&#160;&#160;&#160; main:/usr/lib/oracle/emagent_10g:Y    <br />#    <br />#####################################</p>
<p>trap &#8216;exit&#8217; 1 2 3   <br />case $ORACLE_TRACE in    <br />&#160; T) set -x ;;    <br />esac</p>
<p># Set path if path not set (if called from /etc/rc)   <br />SAVE_PATH=/bin:/usr/bin:/etc:${PATH} ; export PATH    <br />SAVE_LLP=$LD_LIBRARY_PATH</p>
<p># The&#160; this to bring down Oracle Net Listener   <br />ORACLE_HOME_LISTNER=&#8217;/oracle/11g&#8217;    <br />if [ ! $ORACLE_HOME_LISTNER ] ; then    <br />&#160; echo &quot;ORACLE_HOME_LISTNER is not SET, unable to auto-stop Oracle Net Listener&quot;    <br />&#160; echo &quot;Usage: $0 ORACLE_HOME&quot;    <br />else    <br />&#160; LOG=$ORACLE_HOME_LISTNER/listener.log</p>
<p>&#160; # Set the ORACLE_HOME for the Oracle Net Listener, it gets reset to   <br />&#160; # a different ORACLE_HOME for each entry in the oratab.    <br />&#160; export ORACLE_HOME=$ORACLE_HOME_LISTNER</p>
<p>&#160; # Stop Oracle Net Listener   <br />&#160; if [ -f $ORACLE_HOME_LISTNER/bin/tnslsnr ] ; then    <br />&#160;&#160;&#160; echo &quot;$0: Stoping Oracle Net Listener&quot; &gt;&gt; $LOG 2&gt;&amp;1    <br />&#160;&#160;&#160; $ORACLE_HOME_LISTNER/bin/lsnrctl stop &gt;&gt; $LOG 2&gt;&amp;1 &amp;    <br />&#160; else    <br />&#160;&#160;&#160; echo &quot;Failed to auto-stop Oracle Net Listener using $ORACLE_HOME_LISTNER/bin/tnslsnr&quot;    <br />&#160; fi    <br />fi</p>
<p># Set this in accordance with the platform   <br />ORATAB=/etc/oratab    <br />if [ ! $ORATAB ] ; then    <br />&#160; echo &quot;$ORATAB not found&quot;    <br />&#160; exit 1;    <br />fi</p>
<p># Stops an instance   <br />stopinst() {    <br />&#160; ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160; if [ &quot;$ORACLE_SID&quot; = '*' ] ; then    <br />&#160;&#160;&#160; ORACLE_SID=&quot;&quot;    <br />&#160; fi    <br /># Called programs use same database ID    <br />&#160; export ORACLE_SID    <br />&#160; ORACLE_HOME=`echo $LINE | awk -F: &#8216;{print $2}&#8217; -`    <br /># Called scripts use same home directory    <br />&#160; export ORACLE_HOME    <br /># Put $ORACLE_HOME/bin into PATH and export.    <br />&#160; PATH=$ORACLE_HOME/bin:${SAVE_PATH} ; export PATH    <br /># add for bug 652997    <br />&#160; LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${SAVE_LLP} ; export LD_LIBRARY_PATH    <br />&#160; PFILE=${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora</p>
<p># See if it is a V6 or V7 database   <br />&#160; VERSION=undef    <br />&#160; if [ -f $ORACLE_HOME/bin/sqldba ] ; then    <br />&#160;&#160;&#160; SQLDBA=sqldba    <br />&#160;&#160;&#160; VERSION=`$ORACLE_HOME/bin/sqldba command=exit | awk &#8216;    <br />&#160;&#160;&#160;&#160;&#160; /SQL\*DBA: (Release|Version)/ {split($3, V, &quot;.&quot;) ;    <br />&#160;&#160;&#160;&#160;&#160; print V[1]}&#8217;`    <br />&#160;&#160;&#160; case $VERSION in    <br />&#160;&#160;&#160;&#160;&#160; &quot;6&quot;) ;;    <br />&#160;&#160;&#160;&#160;&#160; *) VERSION=&quot;internal&quot; ;;    <br />&#160;&#160;&#160; esac    <br />&#160; else    <br />&#160;&#160;&#160; if [ -f $ORACLE_HOME/bin/svrmgrl ] ; then    <br />&#160;&#160;&#160;&#160;&#160; SQLDBA=svrmgrl    <br />&#160;&#160;&#160;&#160;&#160; VERSION=&quot;internal&quot;    <br />&#160;&#160;&#160; else    <br />&#160;&#160;&#160;&#160;&#160; SQLDBA=&quot;sqlplus /nolog&quot;    <br />&#160;&#160;&#160; fi    <br />&#160; fi</p>
<p>&#160; case $VERSION in   <br />&#160;&#160;&#160; &quot;6&quot;)&#160; sqldba command=shutdown ;;    <br />&#160;&#160;&#160; &quot;internal&quot;)&#160; $SQLDBA &lt;&lt;EOF    <br />connect internal    <br />shutdown immediate    <br />EOF    <br />&#160;&#160;&#160;&#160; ;;    <br />&#160;&#160;&#160;&#160; *)&#160; $SQLDBA &lt;&lt;EOF    <br />connect / as sysdba    <br />shutdown immediate    <br />quit    <br />EOF    <br />&#160;&#160;&#160;&#160; ;;    <br />&#160; esac</p>
<p>&#160; if test $? -eq 0 ; then   <br />&#160;&#160;&#160; echo &quot;${INST} \&quot;${ORACLE_SID}\&quot; shut down.&quot;    <br />&#160; else    <br />&#160;&#160;&#160; echo &quot;${INST} \&quot;${ORACLE_SID}\&quot; not shut down.&quot;    <br />&#160; fi    <br />}</p>
<p>#   <br /># Loop for every entry in oratab file and and try to shut down    <br /># that ORACLE    <br />#    <br /># Following loop shuts down &#8216;Database Instance[s]&#8216; with &#8216;Y&#8217; entry</p>
<p>cat $ORATAB | while read LINE   <br />do    <br />&#160; case $LINE in    <br />&#160; \#*)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #comment-line in oratab    <br />&#160; *)    <br />&#160; ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160; if [ &quot;$ORACLE_SID&quot; = '*' ] ; then    <br />&#160;&#160;&#160;&#160;&#160; # NULL SID &#8211; ignore    <br />&#160;&#160;&#160;&#160;&#160; ORACLE_SID=&quot;&quot;    <br />&#160;&#160;&#160;&#160;&#160; continue    <br />&#160; fi    <br />&#160; # Proceed only if last field is &#8216;Y&#8217; or &#8216;W&#8217;    <br />&#160; if [ &quot;`echo $LINE | awk -F: '{print $NF}' -`&quot; = &quot;Y&quot; ] ; then    <br />&#160;&#160;&#160; if [ `echo $ORACLE_SID | cut -b 1` != '+' ]; then    <br />&#160;&#160;&#160;&#160;&#160; INST=&quot;Database instance&quot;    <br />&#160;&#160;&#160;&#160;&#160; ORACLE_HOME=`echo $LINE | awk -F: &#8216;{print $2}&#8217; -`    <br />&#160;&#160;&#160;&#160;&#160; LOG=$ORACLE_HOME/shutdown.log    <br />&#160;&#160;&#160;&#160;&#160; echo &quot;Processing $INST \&quot;$ORACLE_SID\&quot;: log file $LOG&quot;    <br />&#160;&#160;&#160;&#160;&#160; stopinst &gt;&gt; $LOG 2&gt;&amp;1    <br />&#160;&#160;&#160; fi    <br />&#160; fi    <br />&#160; ;;    <br />&#160; esac    <br />done</p>
<p>#   <br /># Following loop shuts down &#8216;Database Instance[s]&#8216; with &#8216;W&#8217; entry    <br />#    <br />cat $ORATAB | while read LINE    <br />do    <br />&#160; case $LINE in    <br />&#160; \#*)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #comment-line in oratab    <br />&#160; *)    <br />&#160; ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160; if [ &quot;$ORACLE_SID&quot; = '*' ] ; then    <br />&#160;&#160;&#160;&#160;&#160; # NULL SID &#8211; ignore    <br />&#160;&#160;&#160;&#160;&#160; ORACLE_SID=&quot;&quot;    <br />&#160;&#160;&#160;&#160;&#160; continue    <br />&#160; fi    <br />&#160; # Proceed only if last field is &#8216;Y&#8217; or &#8216;W&#8217;    <br />&#160; if [ &quot;`echo $LINE | awk -F: '{print $NF}' -`&quot; = &quot;W&quot; ] ; then    <br />&#160;&#160;&#160; if [ `echo $ORACLE_SID | cut -b 1` != '+' ]; then    <br />&#160;&#160;&#160;&#160;&#160; INST=&quot;Database instance&quot;    <br />&#160;&#160;&#160;&#160;&#160; ORACLE_HOME=`echo $LINE | awk -F: &#8216;{print $2}&#8217; -`    <br />&#160;&#160;&#160;&#160;&#160; LOG=$ORACLE_HOME/shutdown.log    <br />&#160;&#160;&#160;&#160;&#160; echo &quot;Processing $INST \&quot;$ORACLE_SID\&quot;: log file $LOG&quot;    <br />&#160;&#160;&#160;&#160;&#160; stopinst &gt;&gt; $LOG 2&gt;&amp;1    <br />&#160;&#160;&#160; fi    <br />&#160; fi    <br />&#160; ;;    <br />&#160; esac    <br />done</p>
<p>#   <br /># Following loop shuts down &#8216;ASM Instance[s]&#8216;    <br />#</p>
<p>cat $ORATAB | while read LINE   <br />do    <br />&#160; case $LINE in    <br />&#160;&#160;&#160; \#*)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #comment-line in oratab    <br />&#160;&#160;&#160; *)    <br />&#160;&#160;&#160; ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160;&#160;&#160; if [ &quot;$ORACLE_SID&quot; = '*' ] ; then    <br />&#160;&#160;&#160;&#160;&#160; # NULL SID &#8211; ignore    <br />&#160;&#160;&#160;&#160;&#160; ORACLE_SID=&quot;&quot;    <br />&#160;&#160;&#160;&#160;&#160; continue    <br />&#160;&#160;&#160; fi    <br />&#160;&#160;&#160; # Proceed only if last field is &#8216;Y&#8217;.    <br />&#160;&#160;&#160; # Entries whose last field is not Y or N are not DB entry, ignore them.    <br />&#160;&#160;&#160; if [ &quot;`echo $LINE | awk -F: '{print $NF}' -`&quot; = &quot;Y&quot; ] ; then    <br />&#160;&#160;&#160;&#160;&#160; if [ `echo $ORACLE_SID | cut -b 1` = '+' ]; then    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; INST=&quot;ASM instance&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ORACLE_HOME=`echo $LINE | awk -F: &#8216;{print $2}&#8217; -`    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; LOG=$ORACLE_HOME/shutdown.log    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; echo &quot;Processing $INST \&quot;$ORACLE_SID\&quot;: log file $LOG&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; stopinst &gt;&gt; $LOG 2&gt;&amp;1    <br />&#160;&#160;&#160;&#160;&#160; fi    <br />&#160;&#160;&#160; fi    <br />&#160; ;;    <br />&#160; esac    <br />done</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/databsse/oracle-11g-r2-linux-x64-installation-notes.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux基于iptables的简单防火墙设置模板</title>
		<link>http://blog.tianbaoyong.com/systemconfig/linux-based-iptables-firewall-settings-simple-template.html</link>
		<comments>http://blog.tianbaoyong.com/systemconfig/linux-based-iptables-firewall-settings-simple-template.html#comments</comments>
		<pubDate>Tue, 15 Mar 2011 02:33:33 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[系统管理]]></category>
		<category><![CDATA[DNAT]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[MAC]]></category>
		<category><![CDATA[SNAT]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/systemconfig/linux-based-iptables-firewall-settings-simple-template.html</guid>
		<description><![CDATA[#!/bin/bash # 此脚本根据鸟哥私房菜脚本修改而成 # 设置相关参数，认真阅读说明，慎重填写 &#160; #服务器的公网接口设备名，如果是拨号上网，也可能是 ppp0 &#160; EXTIF=&#34;eth0&#34; &#160; #连接内部网络的网卡设备名，如果没有则留空（INIF=&#34;&#34;）则内网资源无法访问&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160; INIF=&#34;eth1&#34;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160; #内部主机或网段，如果留空，则内网主机不能根据IP授权上网。如果有多个主机或网段，用空格隔开， &#160; #多网段：如INNET=&#34;192.168.1.0/24 192.168.100.0/24&#34; &#160; #多主机：如INNET=&#34;172.16.15.126 172.16.15.105&#34;&#160; &#160; &#160; INNET=&#34;172.16.150.101&#34;&#160;&#160;&#160; &#160; export EXTIF INIF INNET &#160; # 第一部份，本机的基本防火墙设置！ # 1. 核心路由： &#160; # 开启预防TCP Flooding 的 DoS 攻击，这设置很浪费资源，慎重！！ &#160; echo &#34;1&#34; &#62; /proc/sys/net/ipv4/tcp_syncookies &#160; # 取消 ping 广播的回应； &#160; echo [...]]]></description>
			<content:encoded><![CDATA[<p>#!/bin/bash   <br /># 此脚本根据鸟哥私房菜脚本修改而成    <br /># 设置相关参数，认真阅读说明，慎重填写</p>
<p>  <span id="more-635"></span>
<p>&#160; #服务器的公网接口设备名，如果是拨号上网，也可能是 ppp0    <br />&#160; EXTIF=&quot;eth0&quot;</p>
<p>&#160; #连接内部网络的网卡设备名，如果没有则留空（INIF=&quot;&quot;）则内网资源无法访问&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160; INIF=&quot;eth1&quot;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p>
<p>&#160; #内部主机或网段，如果留空，则内网主机不能根据IP授权上网。如果有多个主机或网段，用空格隔开，   <br />&#160; #多网段：如INNET=&quot;192.168.1.0/24 192.168.100.0/24&quot;    <br />&#160; #多主机：如INNET=&quot;172.16.15.126 172.16.15.105&quot;&#160; <br />&#160; <br />&#160; INNET=&quot;172.16.150.101&quot;&#160;&#160;&#160; </p>
<p>&#160; export EXTIF INIF INNET   <br />&#160; <br /># 第一部份，本机的基本防火墙设置！</p>
<p># 1. 核心路由：   <br />&#160; # 开启预防TCP Flooding 的 DoS 攻击，这设置很浪费资源，慎重！！    <br />&#160; echo &quot;1&quot; &gt; /proc/sys/net/ipv4/tcp_syncookies    <br />&#160; # 取消 ping 广播的回应；    <br />&#160; echo &quot;1&quot; &gt; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts    <br />&#160; # 开启逆向路径过滤    <br />&#160; for i in /proc/sys/net/ipv4/conf/*/rp_filter; do    <br />&#160;&#160;&#160; echo &quot;1&quot; &gt; $i    <br />&#160; done    <br />&#160; # 对错误的包进行日志记录    <br />&#160; # record some problems packets.    <br />&#160; #for i in /proc/sys/net/ipv4/conf/*/log_martians; do    <br />&#160; #&#160;&#160;&#160; echo &quot;1&quot; &gt; $i    <br />&#160; #done    <br />&#160; # 取消来源路由；    <br />&#160; for i in /proc/sys/net/ipv4/conf/*/accept_source_route; do    <br />&#160;&#160;&#160; echo &quot;0&quot; &gt; $i    <br />&#160; done     <br />&#160; # 取消重新宣告路径的功能。    <br />&#160; for i in /proc/sys/net/ipv4/conf/*/accept_redirects; do    <br />&#160;&#160;&#160; echo &quot;0&quot; &gt; $i    <br />&#160; done     <br />&#160; # 取消传送送重新宣告路径的功能。    <br />&#160; for i in /proc/sys/net/ipv4/conf/*/send_redirects; do    <br />&#160;&#160;&#160; echo &quot;0&quot; &gt; $i    <br />&#160; done    <br /># 2. 清除规则、预定义策略，开放 lo 相关设定    <br />&#160; PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin; export PATH    <br />&#160; <span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/iptables" title="查看 iptables 的全部文章" target="_blank">iptables</a></span> -F    <br />&#160; <span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/iptables" title="查看 iptables 的全部文章" target="_blank">iptables</a></span> -X    <br />&#160; iptables -Z    <br />&#160; iptables -P INPUT&#160;&#160; DROP    <br />&#160; iptables -P OUTPUT&#160; ACCEPT    <br />&#160; iptables -P FORWARD ACCEPT    <br />&#160; iptables -A INPUT -i lo -j ACCEPT    <br />&#160; iptables -A INPUT -m state &#8211;state RELATED,ESTABLISHED -j ACCEPT    <br /># 4. 允许某些类型的 ICMP 封包近入    <br />&#160; AICMP=&quot;0 3 3/4 4 11 12 14 16 18&quot;    <br />&#160; for tyicmp in $AICMP     <br />&#160; do     <br />&#160;&#160;&#160; iptables -A INPUT -i $EXTIF -p icmp &#8211;icmp-type $tyicmp -j ACCEPT    <br />&#160; done    <br /># 5. 允许本机的公网地址的某些服务开放(Example)    <br /># iptables -A INPUT -p TCP -i $EXTIF &#8211;dport&#160; 公网端口&#160; &#8211;sport 1024:65534 -j ACCEPT    <br /># 允许主机的<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/mac" title="查看 MAC 的全部文章" target="_blank">MAC</a></span>检查    <br /># iptables -A FORWARD -s 内网主机地址 -m mac ! &#8211;mac-source 内网主机<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/mac" title="查看 MAC 的全部文章" target="_blank">MAC</a></span> -j DROP</p>
<p># 第二部份，针对内网主机的防火墙设置！！   <br /># 1. 载入模块    <br />modprobe ip_tables    <br />modprobe iptable_nat    <br />modprobe ip_nat_ftp    <br />modprobe ip_nat_irc    <br />modprobe ip_conntrack    <br />modprobe ip_conntrack_ftp    <br />modprobe ip_conntrack_irc    <br /># 2. 清除NAT规则    <br />iptables -F -t nat    <br />iptables -X -t nat    <br />iptables -Z -t nat    <br />iptables -t nat -P PREROUTING&#160; ACCEPT    <br />iptables -t nat -P POSTROUTING ACCEPT    <br />iptables -t nat -P OUTPUT&#160;&#160;&#160;&#160;&#160; ACCEPT    <br /># 3. 开启路由功能    <br />&#160; #允许对内部网络的资源进行访问    <br />&#160; if [ &quot;$INIF&quot; != &quot;&quot; ]; then    <br />&#160;&#160;&#160;&#160;&#160; iptables -A INPUT -i $INIF -j ACCEPT    <br />&#160;&#160;&#160;&#160;&#160; echo &quot;1&quot; &gt; /proc/sys/net/ipv4/ip_forward    <br />&#160; #允许指定网段或主机通过NAT接入Internet    <br />&#160;&#160;&#160;&#160;&#160; if [ &quot;$INNET&quot; != &quot;&quot; ]; then     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; for innet in $INNET    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; do    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; iptables -t nat -A POSTROUTING -s $innet -o $EXTIF -j MASQUERADE    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; done    <br />&#160;&#160;&#160;&#160;&#160; fi    <br />&#160; fi    <br /># 4. 发布内网主机服务的设置    <br />#第一种写法    <br /># iptables -t nat -A PREROUTING -d 公网地址 -p tcp -m tcp &#8211;dport 公网端口 -j <span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/dnat" title="查看 DNAT 的全部文章" target="_blank">DNAT</a></span> &#8211;to-destination 内网地址:内网端口     <br /># iptables -t nat -A POSTROUTING -s 内网网段（172.16.150.96/27） -d 内网地址 -p tcp -m tcp &#8211;dport 内网端口 -j <span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/snat" title="查看 SNAT 的全部文章" target="_blank">SNAT</a></span> &#8211;to-source NAT内网地址     <br />#第二种写法     <br />#iptables -t nat -A PREROUTING&#160; -d 公网地址&#160;&#160;&#160;&#160;&#160;&#160; -p tcp &#8211;dport 公网端口&#160;&#160;&#160;&#160; -j <span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/dnat" title="查看 DNAT 的全部文章" target="_blank">DNAT</a></span> &#8211;to 内网地址:内网端口    <br />#iptables -t nat -A POSTROUTING -d 内网地址&#160;&#160;&#160;&#160; -p tcp &#8211;dport 内网端口&#160;&#160;&#160;&#160; -j <span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/snat" title="查看 SNAT 的全部文章" target="_blank">SNAT</a></span> &#8211;to NAT内网地址</p>
<p>/etc/init.d/iptables save   </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/systemconfig/linux-based-iptables-firewall-settings-simple-template.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MYSQL集群的备份与恢复</title>
		<link>http://blog.tianbaoyong.com/defaultcat/mysql-backup-and-recovery-cluster-2.html</link>
		<comments>http://blog.tianbaoyong.com/defaultcat/mysql-backup-and-recovery-cluster-2.html#comments</comments>
		<pubDate>Thu, 10 Mar 2011 12:49:12 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[默认日志]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/defaultcat/mysql-backup-and-recovery-cluster-2.html</guid>
		<description><![CDATA[1、在管理节点上进行备份。 ndb_mgm&#62; start backup 5 Waiting for completed, this may take several minutes Node 2: Backup 5 started from node 1 Node 2: Backup 5 started from node 1 completed StartGCP: 90139 StopGCP: 90142 #Records: 2063 #LogRecords: 0 Data: 51468 bytes Log: 0 bytes 2:测试 （1） 关闭ndbd节点 ndb_mgm&#62; shutdown Node 3: Cluster shutdown initiated Node [...]]]></description>
			<content:encoded><![CDATA[<p>1、在管理节点上进行备份。   <br />ndb_mgm&gt; start backup 5    <br />Waiting for completed, this may take several minutes    <br />Node 2: Backup 5 started from node 1    <br />Node 2: Backup 5 started from node 1 completed    <br />StartGCP: 90139 StopGCP: 90142    <br />#Records: 2063 #LogRecords: 0    <br />Data: 51468 bytes Log: 0 bytes</p>
<p>  <span id="more-633"></span>
<p>2:测试    <br />（1）    <br />关闭ndbd节点    <br />ndb_mgm&gt; shutdown    <br />Node 3: Cluster shutdown initiated    <br />Node 2: Cluster shutdown initiated    <br />Node 3: Node shutdown completed.    <br />2 NDB Cluster node(s) have shutdown.    <br />Disconnecting to allow management server to shutdown.    <br />Node 2: Node shutdown completed.    <br />（2)重启节点    <br />ndb_mgmd -f /var/lib/mysql-cluster/config.ini    <br />ndbd &#8211;initial(清除里以前的数据)    <br />mysql&gt; show tables;    <br />Empty set (0.02 sec)    <br />3:恢复    <br />在NDBD节点上进行恢复。（每个节点都得执行一次，因为数据分散在两个节点上）    <br />在MASTER上备份的时候要加 -m 开关。    <br />在SLAVE上要加-d 而且不要-m开关。    <br />（1)第一个节点    <br />ndb_restore -n2 -b5 -r -m &#8211;backup_path=/var/lib/mysql-clusterbak/BACKUP/BACKUP-5/    <br />Nodeid = 2    <br />Backup Id = 5    <br />backup path = /var/lib/mysql-clusterbak/BACKUP/BACKUP-5/    <br />Opening file &#8216;/var/lib/mysql-clusterbak/BACKUP/BACKUP-5/BACKUP-5.2.ctl&#8217;    <br />Backup version in files: ndb-6.3.11 ndb version: mysql-5.1.32 ndb-7.0.5    <br />Stop GCP of Backup: 0    <br />Connected to ndb!!    <br />(2)第二个节点    <br />ndb_restore -n3 -b5 -r -d &#8211;backup_path=/var/lib/mysql-clusterbak/BACKUP/BACKUP-5/    <br />(2)查看    <br />mysql&gt; show tables;    <br />+&#8212;&#8212;&#8212;&#8212;&#8212;-+    <br />| Tables_in_test |    <br />+&#8212;&#8212;&#8212;&#8212;&#8212;-+    <br />| ctest&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; |     <br />| example&#160;&#160;&#160;&#160;&#160;&#160;&#160; |     <br />其中    <br />-n, &#8211;nodeid=#&#160;&#160;&#160;&#160;&#160; Backup files from node with id    <br />-b, &#8211;backupid=#&#160;&#160;&#160; Backup id    <br />-r, &#8211;restore_data Restore table data/logs into NDB Cluster using NDBAPI    <br />-m, &#8211;restore_meta Restore meta data into NDB Cluster using NDBAPI    <br />-d, &#8211;no-restore-disk-objects     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Dont restore disk objects (tablespace/logfilegroups etc)    <br />[root@bogon BACKUP-5]# ll    <br />total 44    <br />-rw-r&#8211;r&#8211; 1 root root 26912 May 18 20:23 BACKUP-5-0.2.Data    <br />-rw-r&#8211;r&#8211; 1 root root 10356 May 18 20:23 BACKUP-5.2.ctl (5,是backupid，2是nodeid)    <br />-rw-r&#8211;r&#8211; 1 root root&#160;&#160;&#160; 52 May 18 20:23 BACKUP-5.2.log</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/defaultcat/mysql-backup-and-recovery-cluster-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>配置MySQL数据库的高可用性和负载均衡</title>
		<link>http://blog.tianbaoyong.com/systemconfig/configure-mysql-database-for-high-availability-and-load-balancing.html</link>
		<comments>http://blog.tianbaoyong.com/systemconfig/configure-mysql-database-for-high-availability-and-load-balancing.html#comments</comments>
		<pubDate>Thu, 10 Mar 2011 03:08:49 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[系统管理]]></category>
		<category><![CDATA[BL]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[HA]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/systemconfig/configure-mysql-database-for-high-availability-and-load-balancing.html</guid>
		<description><![CDATA[MySQL集群是一种分布式设计，目标是要达到没有任何单点故障点。因此，任何组成部分都应该拥有自己的内存和磁盘。通过这种冗余设计，MySQL声称数据的可用度可以达到99。999%。 LVS由前端的负载均衡器(Load Balancer，LB)和后端的真实服务器(Real Server，RS)群组成。RS间可通过局域网或广域网连接。LVS的这种结构对用户是透明的，用户只能看见一台作为LB的虚拟服务器(Virtual Server)，而看不到提供服务的RS群。 MySQL Cluster原理图 HA+BL原理图 &#160; MySQL Cluster配置 &#160; 实验环境：1、操作系统：CentOS 5.5 64bit 2、软件：http://mysql.stu.edu.tw/Downloads/MySQL-Cluster-7.1/mysql-cluster-gpl-7.1.10-linux-x86_64-glibc23.tar.gz3、环境要求：关闭防火墙和SELinux4、机器IP及担任角色&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; MGMId&#160;&#160;&#160; DataId&#160;&#160;&#160; SQLId&#160;&#160;&#160; 172.16.150.124&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 21&#160;&#160;&#160; 172.16.150.121&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 22&#160;&#160;&#160; 172.16.150.118&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 11&#160;&#160;&#160;&#160;&#160;&#160;&#160; 23&#160;&#160;&#160; 172.16.150.117&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 12&#160;&#160;&#160;&#160;&#160;&#160;&#160; 24 需要执行的命令如下： &#160; # 124-MGM-SQL ############################################################## tar -zxvf mysql-cluster-gpl-7.1.10-linux-x86_64-glibc23.tar.gz mv mysql-cluster-gpl-7.1.10-linux-x86_64-glibc23 /usr/local/mysql echo "PATH=$PATH:/usr/local/mysql/bin" &#62;&#62; ~/.bash_profile source ~/.bash_profile #MGM Node Config mkdir -p /usr/local/mysql/ndbdata mkdir [...]]]></description>
			<content:encoded><![CDATA[<p><span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/mysql" title="查看 MySQL 的全部文章" target="_blank">MySQL</a></span>集群是一种分布式设计，目标是要达到没有任何单点故障点。因此，任何组成部分都应该拥有自己的内存和磁盘。通过这种冗余设计，<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/mysql" title="查看 MySQL 的全部文章" target="_blank">MySQL</a></span>声称数据的可用度可以达到99。999%。</p>
<p>LVS由前端的负载均衡器(Load Balancer，LB)和后端的真实服务器(Real Server，RS)群组成。RS间可通过局域网或广域网连接。LVS的这种结构对用户是透明的，用户只能看见一台作为LB的虚拟服务器(Virtual Server)，而看不到提供服务的RS群。</p>
<p> <span id="more-631"></span>
<p><a href="http://blog.tianbaoyong.com/wp-content/uploads/2011/03/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.tianbaoyong.com/wp-content/uploads/2011/03/image_thumb.png" width="613" height="392"></a>
<p>MySQL Cluster原理图</p>
<p><a href="http://blog.tianbaoyong.com/wp-content/uploads/2011/03/image1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.tianbaoyong.com/wp-content/uploads/2011/03/image_thumb1.png" width="613" height="642"></a></p>
<p><span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/ha" title="查看 HA 的全部文章" target="_blank">HA</a></span>+<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/bl" title="查看 BL 的全部文章" target="_blank">BL</a></span>原理图</p>
<p>&nbsp;</p>
<h2>MySQL Cluster配置</h2>
<p>&nbsp;</p>
<p>实验环境：<br />1、操作系统：CentOS 5.5 64bit <br />2、软件：<a href="http://mysql.stu.edu.tw/Downloads/MySQL-Cluster-7.1/mysql-cluster-gpl-7.1.10-linux-x86_64-glibc23.tar.gz">http://mysql.stu.edu.tw/Downloads/MySQL-Cluster-7.1/mysql-cluster-gpl-7.1.10-linux-x86_64-glibc23.tar.gz</a><br />3、环境要求：关闭防火墙和SELinux<br />4、机器IP及担任角色<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MGMId&nbsp;&nbsp;&nbsp; DataId&nbsp;&nbsp;&nbsp; SQLId<br />&nbsp;&nbsp;&nbsp; 172.16.150.124&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 21<br />&nbsp;&nbsp;&nbsp; 172.16.150.121&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 22<br />&nbsp;&nbsp;&nbsp; 172.16.150.118&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 23<br />&nbsp;&nbsp;&nbsp; 172.16.150.117&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 24</p>
<p>需要执行的命令如下：</p>
<p>&nbsp;</p>
<pre class="csharpcode"><span class="rem"># 124-MGM-SQL    ##############################################################    </span>

tar -zxvf mysql-<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/cluster" title="查看 cluster 的全部文章" target="_blank">cluster</a></span>-gpl-7.1.10-linux-x86_64-glibc23.tar.gz
mv mysql-<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/cluster" title="查看 cluster 的全部文章" target="_blank">cluster</a></span>-gpl-7.1.10-linux-x86_64-glibc23 /usr/<span class="kwrd">local</span>/mysql
echo <span class="str">"PATH=$PATH:/usr/local/mysql/bin"</span> &gt;&gt; ~/.bash_profile
source ~/.bash_profile
<span class="rem">#MGM Node Config</span>
mkdir -p /usr/<span class="kwrd">local</span>/mysql/ndbdata
mkdir /var/lib/mysql-<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/cluster" title="查看 cluster 的全部文章" target="_blank">cluster</a></span>
mkdir /usr/<span class="kwrd">local</span>/mysql/cluster-conf
echo <span class="str">"
[NDB_MGMD DEFAULT]
PortNumber=1186
DataDir=/var/lib/mysql-cluster
ArbitrationRank=1
# Management nodes
[NDB_MGMD]
nodeid = 1
Hostname = 172.16.150.124
[NDB_MGMD]
nodeid = 2
Hostname = 172.16.150.121
# Storage nodes
[NDBD DEFAULT]
DataDir=/var/lib/mysql-cluster
[NDBD]
nodeid=11
Hostname=172.16.150.118
[NDBD]
nodeid=12
Hostname=172.16.150.117
#SQL Nodes
[MYSQLD]
nodeid=21
Hostname=172.16.150.124
[MYSQLD]
nodeid=22
Hostname=172.16.150.121
[MYSQLD]
nodeid=23
Hostname=172.16.150.118
[MYSQLD]
nodeid=24
Hostname=172.16.150.117
"</span>&gt; /usr/<span class="kwrd">local</span>/mysql/cluster-conf/config.ini
<span class="rem">#SQL Node Config</span>
groupadd mysql
useradd -g mysql mysql
chown -R mysql:mysql /usr/<span class="kwrd">local</span>/mysql
cp /usr/<span class="kwrd">local</span>/mysql/support-files/my-large.cnf /etc/my.cnf
cd /usr/<span class="kwrd">local</span>/mysql
scripts/mysql_install_db --user=mysql
cp /usr/<span class="kwrd">local</span>/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 35 mysqld on
echo <span class="str">"
[mysqld]
skip-name-resolve
lower_case_table_names=1
ndbcluster
#connectstring: primary,secondary management nodes
ndb-connectstring=172.16.150.124,172.16.150.121
#Data Node Config
[mysql_cluster]
ndb-connectstring=21,172.16.150.124,172.16.150.121
"</span> &gt;&gt; /etc/my.cnf
echo <span class="str">"/usr/local/mysql/bin/ndb_mgmd -f  /usr/local/mysql/cluster-conf/config.ini "</span>
&gt;&gt; /etc/rc.d/rc.<span class="kwrd">local</span>

<span class="rem"># 121-MGM-SQL    ##############################################################    </span>

tar -zxvf mysql-cluster-gpl-7.1.10-linux-x86_64-glibc23.tar.gz
mv mysql-cluster-gpl-7.1.10-linux-x86_64-glibc23 /usr/<span class="kwrd">local</span>/mysql
echo <span class="str">"PATH=$PATH:/usr/local/mysql/bin"</span> &gt;&gt; ~/.bash_profile
source ~/.bash_profile
<span class="rem">#MGM Node Config</span>
mkdir -p /usr/<span class="kwrd">local</span>/mysql/ndbdata
mkdir /var/lib/mysql-cluster
mkdir /usr/<span class="kwrd">local</span>/mysql/cluster-conf
echo <span class="str">"
[NDB_MGMD DEFAULT]
PortNumber=1186
DataDir=/var/lib/mysql-cluster
ArbitrationRank=1
# Management nodes
[NDB_MGMD]
nodeid = 1
Hostname = 172.16.150.124
[NDB_MGMD]
nodeid = 2
Hostname = 172.16.150.121
# Storage nodes
[NDBD DEFAULT]
DataDir=/var/lib/mysql-cluster
[NDBD]
nodeid=11
Hostname=172.16.150.118
[NDBD]
nodeid=12
Hostname=172.16.150.117
#SQL Nodes
[MYSQLD]
nodeid=21
Hostname=172.16.150.124
[MYSQLD]
nodeid=22
Hostname=172.16.150.121
[MYSQLD]
nodeid=23
Hostname=172.16.150.118
[MYSQLD]
nodeid=24
Hostname=172.16.150.117
"</span>&gt; /usr/<span class="kwrd">local</span>/mysql/cluster-conf/config.ini
<span class="rem">#SQL Node Config</span>
groupadd mysql
useradd -g mysql mysql
chown -R mysql:mysql /usr/<span class="kwrd">local</span>/mysql
cp /usr/<span class="kwrd">local</span>/mysql/support-files/my-large.cnf /etc/my.cnf
cd /usr/<span class="kwrd">local</span>/mysql
scripts/mysql_install_db --user=mysql
cp /usr/<span class="kwrd">local</span>/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 35 mysqld on
echo <span class="str">"
[mysqld]
skip-name-resolve
lower_case_table_names=1
ndbcluster
#connectstring: primary,secondary management nodes
ndb-connectstring=172.16.150.124,172.16.150.121
#Data Node Config
[mysql_cluster]
ndb-connectstring=22,172.16.150.124,172.16.150.121
"</span> &gt;&gt; /etc/my.cnf
echo <span class="str">"/usr/local/mysql/bin/ndb_mgmd -f  /usr/local/mysql/cluster-conf/config.ini "</span>
&gt;&gt; /etc/rc.d/rc.<span class="kwrd">local</span>

<span class="rem"># 118-NDB-SQL    ##############################################################    </span>

tar -zxvf mysql-cluster-gpl-7.1.10-linux-x86_64-glibc23.tar.gz
mv mysql-cluster-gpl-7.1.10-linux-x86_64-glibc23 /usr/<span class="kwrd">local</span>/mysql
echo <span class="str">"PATH=$PATH:/usr/local/mysql/bin"</span> &gt;&gt; ~/.bash_profile
source ~/.bash_profile
mkdir /var/lib/mysql-cluster
<span class="rem">#SQL Node Config</span>
groupadd mysql
useradd -g mysql mysql
chown -R mysql:mysql /usr/<span class="kwrd">local</span>/mysql
cp /usr/<span class="kwrd">local</span>/mysql/support-files/my-large.cnf /etc/my.cnf
cd /usr/<span class="kwrd">local</span>/mysql
scripts/mysql_install_db --user=mysql
cp /usr/<span class="kwrd">local</span>/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 35 mysqld on
echo <span class="str">"
[mysqld]
skip-name-resolve
lower_case_table_names=1
ndbcluster
#connectstring: primary,secondary management nodes
ndb-connectstring=172.16.150.124,172.16.150.121
#Data Node Config
[mysql_cluster]
ndb-connectstring=23,172.16.150.124,172.16.150.121
"</span> &gt;&gt; /etc/my.cnf
echo <span class="str">"/usr/local/mysql/bin/ndbd"</span>
&gt;&gt; /etc/rc.d/rc.<span class="kwrd">local</span>

<span class="rem"># 117-NDB-SQL    ##############################################################    </span>

tar -zxvf mysql-cluster-gpl-7.1.10-linux-x86_64-glibc23.tar.gz
mv mysql-cluster-gpl-7.1.10-linux-x86_64-glibc23 /usr/<span class="kwrd">local</span>/mysql
source ~/.bash_profile
mkdir /var/lib/mysql-cluster
<span class="rem">#SQL Node Config</span>
echo <span class="str">"PATH=$PATH:/usr/local/mysql/bin"</span> &gt;&gt; ~/.bash_profile
groupadd mysql
useradd -g mysql mysql
chown -R mysql:mysql /usr/<span class="kwrd">local</span>/mysql
cp /usr/<span class="kwrd">local</span>/mysql/support-files/my-large.cnf /etc/my.cnf
cd /usr/<span class="kwrd">local</span>/mysql
scripts/mysql_install_db --user=mysql
cp /usr/<span class="kwrd">local</span>/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 35 mysqld on
echo <span class="str">"
[mysqld]
skip-name-resolve
lower_case_table_names=1
ndbcluster
#connectstring: primary,secondary management nodes
ndb-connectstring=172.16.150.124,172.16.150.121
#Data Node Config
[mysql_cluster]
ndb-connectstring=24,172.16.150.124,172.16.150.121
"</span> &gt;&gt; /etc/my.cnf
echo <span class="str">"/usr/local/mysql/bin/ndbd"</span>
&gt;&gt; /etc/rc.d/rc.local</pre>
<p><style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
</p>
<p>阶段测试</p>
<pre class="csharpcode">在MySQL-M计算机上执行：ndb_mgm -e show
        [root@MySQL-M ~]# ndb_mgm -e show
        Connected to Management Server at: 172.16.150.124:1186
        Cluster Configuration
        ---------------------
        [ndbd(NDB)]    2 node(s)
        id=11    @172.16.150.118  (mysql-5.1.51 ndb-7.1.10, Nodegroup: 0, Master)
        id=12    @172.16.150.117  (mysql-5.1.51 ndb-7.1.10, Nodegroup: 0)

        [ndb_mgmd(MGM)]    2 node(s)
        id=1    @172.16.150.124  (mysql-5.1.51 ndb-7.1.10)
        id=2    @172.16.150.121  (mysql-5.1.51 ndb-7.1.10)

        [mysqld(API)]    4 node(s)
        id=21    @172.16.150.124  (mysql-5.1.51 ndb-7.1.10)
        id=22    @172.16.150.121  (mysql-5.1.51 ndb-7.1.10)
        id=23    @172.16.150.118  (mysql-5.1.51 ndb-7.1.10)
        id=24    @172.16.150.117  (mysql-5.1.51 ndb-7.1.10)
在MySQL-S计算机上执行：ndb_mgm -e show
        [root@MySQL-S ~]# ndb_mgm -e show
        Connected to Management Server at: 172.16.150.124:1186
        Cluster Configuration
        ---------------------
        [ndbd(NDB)]    2 node(s)
        id=11    @172.16.150.118  (mysql-5.1.51 ndb-7.1.10, Nodegroup: 0, Master)
        id=12    @172.16.150.117  (mysql-5.1.51 ndb-7.1.10, Nodegroup: 0)

        [ndb_mgmd(MGM)]    2 node(s)
        id=1    @172.16.150.124  (mysql-5.1.51 ndb-7.1.10)
        id=2    @172.16.150.121  (mysql-5.1.51 ndb-7.1.10)

        [mysqld(API)]    4 node(s)
        id=21    @172.16.150.124  (mysql-5.1.51 ndb-7.1.10)
        id=22    @172.16.150.121  (mysql-5.1.51 ndb-7.1.10)
        id=23    @172.16.150.118  (mysql-5.1.51 ndb-7.1.10)
        id=24    @172.16.150.117  (mysql-5.1.51 ndb-7.1.10)
关闭Cluster-SQL或MySQL-SQL2上面的ndbd进程：
    ps -aux | grep ndbd
        [root@Cluster-SQL ~]# ps aux | grep ndbd
        root      3490  0.0  0.1  35884   804 ?        Ss   09:57   0:00 /usr/local/mysql/bin/ndbd
        root      3491  0.3 64.3 417912 328244 ?       Sl   09:57   0:05 /usr/local/mysql/bin/ndbd
        root      3693  0.0  0.1  61144   728 pts/0    S+   10:28   0:00 grep ndbd
    kill 3490
    kill 3491
再次确认MySQL-M或者MySQL-S上面的Cluster的状态
        [root@MySQL-M ~]# ndb_mgm -e show
        Connected to Management Server at: 172.16.150.124:1186
        Cluster Configuration
        ---------------------
        [ndbd(NDB)]    2 node(s)
        id=11 (not connected, accepting connect from 172.16.150.118)
        id=12    @172.16.150.117  (mysql-5.1.51 ndb-7.1.10, Nodegroup: 0, Master)

        [ndb_mgmd(MGM)]    2 node(s)
        id=1    @172.16.150.124  (mysql-5.1.51 ndb-7.1.10)
        id=2    @172.16.150.121  (mysql-5.1.51 ndb-7.1.10)

        [mysqld(API)]    4 node(s)
        id=21    @172.16.150.124  (mysql-5.1.51 ndb-7.1.10)
        id=22    @172.16.150.121  (mysql-5.1.51 ndb-7.1.10)
        id=23    @172.16.150.118  (mysql-5.1.51 ndb-7.1.10)
        id=24    @172.16.150.117  (mysql-5.1.51 ndb-7.1.10)
启动上述关闭的ndbd服务
    /usr/local/mysql/bin/ndbd
再次确认MySQL-M或者MySQL-S上面的Cluster的状态
        [root@MySQL-M ~]# ndb_mgm -e show
        Connected to Management Server at: 172.16.150.124:1186
        Cluster Configuration
        ---------------------
        [ndbd(NDB)]    2 node(s)
        id=11    @172.16.150.118  (mysql-5.1.51 ndb-7.1.10, starting, Nodegroup: 0)
        id=12    @172.16.150.117  (mysql-5.1.51 ndb-7.1.10, Nodegroup: 0, Master)

        [ndb_mgmd(MGM)]    2 node(s)
        id=1    @172.16.150.124  (mysql-5.1.51 ndb-7.1.10)
        id=2    @172.16.150.121  (mysql-5.1.51 ndb-7.1.10)

        [mysqld(API)]    4 node(s)
        id=21    @172.16.150.124  (mysql-5.1.51 ndb-7.1.10)
        id=22    @172.16.150.121  (mysql-5.1.51 ndb-7.1.10)
        id=23    @172.16.150.118  (mysql-5.1.51 ndb-7.1.10)
        id=24    @172.16.150.117  (mysql-5.1.51 ndb-7.1.10)</pre>
<pre class="csharpcode">在SQL节点[172.16.150.124]执行</pre>
<pre class="csharpcode">&nbsp;</pre>
<pre class="csharpcode">mysql&gt; <span class="kwrd">create</span> <span class="kwrd">database</span> world;
Query OK, 1 <span class="kwrd">row</span> affected (0.09 sec)

mysql&gt; <span class="kwrd">use</span> world;
<span class="kwrd">Database</span> changed

mysql&gt; <span class="kwrd">CREATE</span> <span class="kwrd">TA<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/bl" title="查看 BL 的全部文章" target="_blank">BL</a></span>E</span> `City` (
 -&gt; `ID` <span class="kwrd">int</span>(11) <span class="kwrd">NOT</span> <span class="kwrd">NULL</span> auto_increment,
 -&gt; `Name` <span class="kwrd">char</span>(35) <span class="kwrd">NOT</span> <span class="kwrd">NULL</span> <span class="kwrd">default</span> <span class="str">''</span>,
 -&gt; `CountryCode` <span class="kwrd">char</span>(3) <span class="kwrd">NOT</span> <span class="kwrd">NULL</span> <span class="kwrd">default</span> <span class="str">''</span>,
 -&gt; `District` <span class="kwrd">char</span>(20) <span class="kwrd">NOT</span> <span class="kwrd">NULL</span> <span class="kwrd">default</span> <span class="str">''</span>,
 -&gt; `Population` <span class="kwrd">int</span>(11) <span class="kwrd">NOT</span> <span class="kwrd">NULL</span> <span class="kwrd">default</span> <span class="str">'0'</span>,
 -&gt; <span class="kwrd">PRIMARY</span> <span class="kwrd">KEY</span> (`ID`)
 -&gt; ) ENGINE=NDBCLUSTER <span class="kwrd">DEFAULT</span> C<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/ha" title="查看 HA 的全部文章" target="_blank">HA</a></span>RSET=utf8;
Query OK, 0 <span class="kwrd">rows</span> affected (0.93 sec)

mysql&gt; INSERT <span class="kwrd">INTO</span> `City` <span class="kwrd">VALUES</span> (1,<span class="str">'Kabul'</span>,<span class="str">'AFG'</span>,<span class="str">'Kabol'</span>,1780000);
Query OK, 1 <span class="kwrd">row</span> affected (0.00 sec)

mysql&gt; INSERT <span class="kwrd">INTO</span> `City` <span class="kwrd">VALUES</span> (2,<span class="str">'Qandahar'</span>,<span class="str">'AFG'</span>,<span class="str">'Qandahar'</span>,237500);
Query OK, 1 <span class="kwrd">row</span> affected (0.00 sec)

mysql&gt; INSERT <span class="kwrd">INTO</span> `City` <span class="kwrd">VALUES</span> (3,<span class="str">'Herat'</span>,<span class="str">'AFG'</span>,<span class="str">'Herat'</span>,186800);
Query OK, 1 <span class="kwrd">row</span> affected (0.00 sec)

mysql&gt; <span class="kwrd">select</span> * <span class="kwrd">from</span> City;
+----+----------+-------------+----------+------------+
| ID | Name | CountryCode | District | Population |
+----+----------+-------------+----------+------------+
| 3 | Herat | AFG | Herat | 186800 |
| 1 | Kabul | AFG | Kabol | 1780000 |
| 2 | Qandahar | AFG | Qandahar | 237500 |
+----+----------+-------------+----------+------------+
3 <span class="kwrd">rows</span> <span class="kwrd">in</span> <span class="kwrd">set</span> (0.00 sec)

[root@candyshop mysql]# ./bin/mysql -u root
Welcome <span class="kwrd">to</span> the MySQL monitor. Commands <span class="kwrd">end</span> <span class="kwrd">with</span> ; <span class="kwrd">or</span> \g.
Your MySQL <span class="kwrd">connection</span> id <span class="kwrd">is</span> 2
Server version: 5.1.30-ndb-6.3.20-cluster-gpl MySQL Cluster Server (GPL)

Type <span class="str">'help;'</span> <span class="kwrd">or</span> <span class="str">'\h'</span> <span class="kwrd">for</span> help. Type <span class="str">'\c'</span> <span class="kwrd">to</span> clear the buffer.

mysql&gt; show databases;
+--------------------+
| <span class="kwrd">Database</span> |
+--------------------+
| information_schema |
| mysql |
| test |
| world |
+--------------------+
4 <span class="kwrd">rows</span> <span class="kwrd">in</span> <span class="kwrd">set</span> (0.00 sec)

mysql&gt; <span class="kwrd">select</span> * <span class="kwrd">from</span> world.City;
+----+----------+-------------+----------+------------+
| ID | Name | CountryCode | District | Population |
+----+----------+-------------+----------+------------+
| 1 | Kabul | AFG | Kabol | 1780000 |
| 2 | Qandahar | AFG | Qandahar | 237500 |
| 3 | Herat | AFG | Herat | 186800 |
+----+----------+-------------+----------+------------+
3 <span class="kwrd">rows</span> <span class="kwrd">in</span> <span class="kwrd">set</span> (0.07 sec)</pre>
<p><style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
</p>
<p>发现之前在另外一个SQL节点[172.16.150.124]创建的数据库也出现在节点[172.16.150.121]上面了。<br />这样整个安装和测试都完结了。<br />在sql节点创建的数据会保存在数据节点上，所以一个mysql宕机了不影响数据的存储。</p>
<p>&nbsp;</p>
<h2>高可用性和负载均衡环境配置</h2>
<p>服务器环境配置：<br />原MySQL集群环境：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 主机名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rule&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MGMId&nbsp;&nbsp;&nbsp; DataId&nbsp;&nbsp;&nbsp; SQLId<br />172.16.150.124&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MySQL-M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DM+AR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 21<br />172.16.150.121&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MySQL-S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DS+AR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 22<br />172.16.150.118&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cluster-SQL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 23<br />172.16.150.117&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MySQL-SQL2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 24<br />说明：<br />Access Route = AR<br />Director(master) = DM<br />Director(standby) = DS</p>
<pre class="csharpcode">
<span class="rem">####################在MySQL-M和MySQL-S两台计算机上分别执行如下命令：###############</span>
modprobe ip_vs_dh
modprobe ip_vs_ftp
modprobe ip_vs
modprobe ip_vs_lblc
modprobe ip_vs_lblcr
modprobe ip_vs_lc
modprobe ip_vs_nq
modprobe ip_vs_rr
modprobe ip_vs_sed
modprobe ip_vs_sh
modprobe ip_vs_wlc
modprobe ip_vs_wrr

echo <span class="str">"ip_vs_dh
ip_vs_ftp
ip_vs
ip_vs_lblc
ip_vs_lblcr
ip_vs_lc
ip_vs_nq
ip_vs_rr
ip_vs_sed
ip_vs_sh
ip_vs_wlc
ip_vs_wrr "</span> &gt;&gt; /etc/modules

vi /etc/sysctl.conf
net.ipv4.ip_forward = 0
改为：
net.ipv4.ip_forward = 1

/sbin/sysctl -p

在MySQL-M和MySQL-S分别安装软件。
yum clean all
yum install heartbeat
yum install heartbeat  （重新安装一下）
yum install heartbeat-ldirectord
yum inyustall ipvsadm

在MySQL-M和MySQL-S分别设置，两台机器设置相同。
vi /etc/ha.d/ha.cf
logfacility local0
bcast eth1
mcast eth1 225.0.0.1 694 1 0
auto_failback off
node MySQL-M
node MySQL-S
respawn root /usr/lib64/heartbeat/ipfail
apiauth ipfail gid=root uid=root

在MySQL-M和MySQL-S分别设置，两台机器设置相同。
vi /etc/ha.d/haresources
MySQL-M \
ldirectord::ldirectord.cf \
LVSSyncDaemonSwap::master \
IPaddr2::172.16.150.116/27/eth0/172.16.150.127

在MySQL-M和MySQL-S分别设置，两台机器设置相同。
vi /etc/ha.d/authkeys
auth 3
3 md5 514a49f83820e34c877ff48770e48ea7

在MySQL-M和MySQL-S分别设置，两台机器设置相同。
vi /etc/ha.d/ldirectord.cf
checktimeout=3
checkinterval=10
autoreload=yes
quiescent=no
virtual = 172.16.150.116:3306
    real=172.16.150.124:3306 gate
    real=172.16.150.121:3306 gate
    real=172.16.150.118:3306 gate
    real=172.16.150.117:3306 gate
    service=mysql
    scheduler=rr
    protocol=tcp
    checktype=connect
    checkport=3306

在MySQL-M和MySQL-S分别设置，两台机器设置相同。
chmod 600 /etc/ha.d/authkeys
chkconfig --level 2345 heartbeat on
chkconfig --del ldirectord
/etc/init.d/ldirectord stop
/etc/init.d/heartbeat start

MySQL-M和MySQL-S分别测试：

ip addr sh eth0

MySQL-M上的结果（注意是绑定了第二个IP地址了）：
2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:36:19:90 brd ff:ff:ff:ff:ff:ff
    inet 172.16.150.124/27 brd 172.16.150.127 scope <span class="kwrd">global</span> eth0
    inet 172.16.150.116/27 brd 172.16.150.127 scope <span class="kwrd">global</span> secondary eth0
    inet6 fe80::20c:29ff:fe36:1990/64 scope link
       valid_lft forever preferred_lft forever
MySQL-S上的结果（注意只有一个IP地址）：
2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:2f:1d:d8 brd ff:ff:ff:ff:ff:ff
    inet 172.16.150.121/27 brd 172.16.150.127 scope <span class="kwrd">global</span> eth0
    inet6 fe80::20c:29ff:fe2f:1dd8/64 scope link
       valid_lft forever preferred_lft forever

/usr/sbin/ldirectord ldirectord.cf status

MySQL-M上的结果（正常是运行）：
ldirectord <span class="kwrd">for</span> /etc/ha.d/ldirectord.cf is running with pid: 4113
MySQL-S上的结果（正常是停止）：
ldirectord is stopped <span class="kwrd">for</span> /etc/ha.d/ldirectord.cf

/sbin/ipvsadm -L -n

MySQL-M上的结果（有路由信息）：
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -&gt; RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.150.116:3306 rr
  -&gt; 172.16.150.117:3306          Route   1      0          0
  -&gt; 172.16.150.118:3306          Route   1      0          0
  -&gt; 172.16.150.121:3306          Route   1      0          0
  -&gt; 172.16.150.124:3306          Local   1      0          0
MySQL-S上的结果（无路由信息）：
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -&gt; RemoteAddress:Port           Forward Weight ActiveConn InActConn

/etc/ha.d/resource.d/LVSSyncDaemonSwap master status
MySQL-M上的结果：
master running
(ipvs_syncmaster pid: 4199)
MySQL-S上的结果：
master stopped

<span class="rem"># Real Server：MySQL-M，MySQL-S，Cluster-SQL，MySQL-SQL2 分别配置######</span>

1、创建脚本
vi /etc/rc.d/init.d/lvs_rs
<span class="rem">#!/bin/sh</span>
<span class="rem"># chkconfig: 2345 72 08</span>
<span class="rem"># description: Config realserver lo:0 port and apply arp patch</span>
VIP=172.16.150.116
. /etc/rc.d/init.d/functions
case $1 <span class="kwrd">in</span>
    start)
    echo <span class="str">"lo:0 port starting"</span>
    /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 up
    /sbin/route add -host $VIP dev lo:0
    echo <span class="str">"0"</span> &gt;/proc/sys/net/ipv4/ip_forward
    echo <span class="str">"1"</span> &gt; /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo <span class="str">"2"</span> &gt; /proc/sys/net/ipv4/conf/lo/arp_announce
    echo <span class="str">"1"</span> &gt; /proc/sys/net/ipv4/conf/all/arp_ignore
    echo <span class="str">"2"</span> &gt; /proc/sys/net/ipv4/conf/all/arp_announce
    sysctl -p
    ;;
    stop)
    echo <span class="str">"lo:0 port closing"</span>
    /sbin/route del -host $VIP
    /sbin/ifconfig lo:0 down
    echo <span class="str">"1"</span>&gt;/proc/sys/net/ipv4/ip_forward
    echo <span class="str">"0"</span>&gt;/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo <span class="str">"0"</span>&gt;/proc/sys/net/ipv4/conf/lo/arp_announce
    echo <span class="str">"0"</span>&gt;/proc/sys/net/ipv4/conf/all/arp_ignore
    echo <span class="str">"0"</span>&gt;/proc/sys/net/ipv4/conf/all/arp_announce
    ;;
    status)
        iothere=`/sbin/ifconfig lo:0 | grep $VIP`
        iorthere=`/bin/netstat -rn|grep $VIP`
        <span class="kwrd">if</span> [ ! <span class="str">"$iothere"</span> -o ! <span class="str">"$iorthere"</span> ];then
            echo <span class="str">"LVS Real Server is STOP"</span>
        <span class="kwrd">else</span>
            echo <span class="str">"LVS Real Server is ALIVE"</span>
        fi
    ;;
    *)
    echo <span class="str">"Usage: $0 {start|stop}"</span>
    exit 1
esac

2、注册守护进程
chmod +x /etc/rc.d/init.d/lvs_rs
chkconfig --add lvs_rs
chkconfig --level 2345 lvs_rs on</pre>
<h3>阶段测试</h3>
<pre class="csharpcode">具体状态测试，可以参考<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/ha" title="查看 HA 的全部文章" target="_blank">HA</a></span>+BL配置部分，下面进行可用性的基本测试
    a、连接虚拟ip
        C:\Users\UniteSE&gt;mysql -h 172.16.150.116 -u test -p
        Enter password: ********
        Welcome to the MySQL monitor.  Commands <span class="kwrd">end</span> with ; or \g.
        Your MySQL connection id is 237
        Server version: 5.1.51-ndb-7.1.10-cluster-gpl-log MySQL Cluster Server (GPL)

        Type <span class="str">'help;'</span> or <span class="str">'\h'</span> <span class="kwrd">for</span> help. Type <span class="str">'\c'</span> to clear the buffer.

        mysql&gt;
    b、进行数据操作（创建表，使用ENGINE=NDB选项）
        mysql&gt; insert into mytable values(1,<span class="str">'zhengbo'</span>);
        Query OK, 1 row affected (0.01 sec)
    c、关闭任意一台计算机
        mysql&gt; select * from mytable;
        ERROR 2013 (HY000): Lost connection to MySQL server during query
        mysql&gt; select * from mytable;
        ERROR 2006 (HY000): MySQL server has gone away
        No connection. Trying to reconnect...
        Connection id:    56
        Current database: clusterdb

        +----+---------------+
        | id | name          |
        +----+---------------+
        |  3 | wangxianggang |
        |  5 | zhangjun      |
        |  1 | zhengbo       |
        |  2 | wangdong      |
        |  4 | yangtao       |
        +----+---------------+
        5 rows <span class="kwrd">in</span> set (0.13 sec)</pre>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/systemconfig/configure-mysql-database-for-high-availability-and-load-balancing.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

