﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-无法递归的五点半-随笔分类-开发环境</title><link>http://www.cppblog.com/lambdacpp/category/1787.html</link><description>for_each(day.begin(),day.end(),bind2nd(Add(),me))</description><language>zh-cn</language><lastBuildDate>Sat, 25 Dec 2010 17:25:53 GMT</lastBuildDate><pubDate>Sat, 25 Dec 2010 17:25:53 GMT</pubDate><ttl>60</ttl><item><title>OpenLDAP启动与配置</title><link>http://www.cppblog.com/lambdacpp/archive/2010/12/25/137454.html</link><dc:creator>五点半</dc:creator><author>五点半</author><pubDate>Sat, 25 Dec 2010 09:07:00 GMT</pubDate><guid>http://www.cppblog.com/lambdacpp/archive/2010/12/25/137454.html</guid><wfw:comment>http://www.cppblog.com/lambdacpp/comments/137454.html</wfw:comment><comments>http://www.cppblog.com/lambdacpp/archive/2010/12/25/137454.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lambdacpp/comments/commentRss/137454.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lambdacpp/services/trackbacks/137454.html</trackback:ping><description><![CDATA[<h1>启动slapd<br></h1>
<div>不论是包安装还是编译安装的OpenLDAP服务,启动LDAP服务通常使用类似这样的方式运行:</div>
<div>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">usr</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">sbin</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">slapd&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">h&nbsp;ldap</span><span style="COLOR: #000000">:///</span><span style="COLOR: #000000">&nbsp;ldapi</span><span style="COLOR: #000000">:///</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">g&nbsp;openldap&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">u&nbsp;openldap&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">F&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">etc</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">ldap</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">slapd</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">d</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000"><br></span></div>
</div>
<h4><br><br>&nbsp;如果没有任何的配置是否可以启动slapd呢？</h4>
<div>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #800080">$mkdir</span><span style="COLOR: #000000">&nbsp;ldap_slapd</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">d<br>$</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">usr</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">sbin</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">slapd&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">d&nbsp;</span><span style="COLOR: #800000">65535</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">h&nbsp;ldap</span><span style="COLOR: #000000">://</span><span style="COLOR: #000000">localhost</span><span style="COLOR: #000000">:</span><span style="COLOR: #800000">3890</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">F&nbsp;ldap_slapd</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">d<br></span></div>
<br>系统提示没有配置目录中没有 cn=config.ldif 文件</div>
<div><br></div>
<h4>&nbsp;最简单的配置<br></h4>
<div>现在在配置目录中写一个最简单的配置:</div>
<div>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #800080">$cat</span><span style="COLOR: #000000">&nbsp;ldap_slapd</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">d</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">cn</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">config</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">ldif<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">dn</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">&nbsp;cn</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">config<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">objectClass</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">&nbsp;olcGlobal<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">cn</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">&nbsp;config<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">$</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">usr</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">sbin</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">slapd&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">d&nbsp;</span><span style="COLOR: #800000">65535</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">h&nbsp;ldap</span><span style="COLOR: #000000">://</span><span style="COLOR: #000000">localhost</span><span style="COLOR: #000000">:</span><span style="COLOR: #800000">3890</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">F&nbsp;ldap_slapd</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">d<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
<br></div>
<div>&nbsp;成功启动！在ldap_slapd.d下生成了cn=config 目录并且将基本的schema自动的导入了，从运行日志中也可以看到这些。</div>
<div>&nbsp;&nbsp;通过这个例子可以看到slapd运行的过程，但这样一个没有实际Backend数据库的slapd实例是没有实际意义的。</div>
<h1>&nbsp;配置</h1>
<div>slapd的配置就是运行的关键，在新版OpenLDAP中，LDAP配置不再是slapd.conf，而是一系列的配置文件，放置在一个配置目录下。LDAP将这个目录看成一种Backend，也就是config backend。配置目录中是若干的ldif文件，然后通过子目录的方式表现树形结构，以文件名表示配置节点的名称。</div>
<h4>&nbsp;slapd.d 目录</h4>
<div>LDAP的配置Backend包含3个内容：Schema、Backend、Database，都以ldif方式直接写在配置文件中。backend和database配置相对较小可直接编辑，而schema比较复杂，如有外部定义的schema更是麻烦，如果直接编辑很麻烦也容易出错。好在可以使用slaptest将旧式的.conf文件生成新配置。<br></div>
<div>实际上，slaptest的功能还不止这个，它还负责创建基本的数据库文件。最新版的OpenLDAP在安装后还是使用slapd.conf作为配置文件，然后在运行前创建配置Backend。</div>
<h4>&nbsp;slapd.conf&nbsp;<br></h4>
<div>slapd.conf由2个部分，先include schema文件，然后配置database。要注意后面database内容的语法是依赖core.schema的，所以没有 include core.schema，后面的内容是不符合语法的。</div>
<div>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">include&nbsp;/etc/ldap/schema/core.schema<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">include&nbsp;/etc/ldap/schema/cosine.schema<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">include&nbsp;/etc/ldap/schema/nis.schema<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">include&nbsp;/etc/ldap/schema/inetorgperson.schema<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">include&nbsp;/user/defined/special.schema<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">database&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bdb<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">suffix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">dc=example,dc=com</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">rootdn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">cn=admin,dc=example,dc=com</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">rootpw&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;secret<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">directory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/ldap/data/dir<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">index&nbsp;&nbsp;&nbsp;objectClass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eq<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
<br></div>
<h4>&nbsp;slaptest</h4>
<div>运行:</div>
<div>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #800080">$sudo</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">usr</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">bin</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">slaptest&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">f&nbsp;schema</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">conf&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">F&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">etc</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">ldap</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">slapd</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">d<br></span></div>
<br></div>
<div>slaptest要完成2个工作：将按schema生成schema.ldif配置，然后在指定的目录下初始化bdb文件。<br></div>
<img src ="http://www.cppblog.com/lambdacpp/aggbug/137454.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lambdacpp/" target="_blank">五点半</a> 2010-12-25 17:07 <a href="http://www.cppblog.com/lambdacpp/archive/2010/12/25/137454.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OpenSSH下SFTP的配置</title><link>http://www.cppblog.com/lambdacpp/archive/2009/12/02/102409.html</link><dc:creator>五点半</dc:creator><author>五点半</author><pubDate>Wed, 02 Dec 2009 13:04:00 GMT</pubDate><guid>http://www.cppblog.com/lambdacpp/archive/2009/12/02/102409.html</guid><wfw:comment>http://www.cppblog.com/lambdacpp/comments/102409.html</wfw:comment><comments>http://www.cppblog.com/lambdacpp/archive/2009/12/02/102409.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/lambdacpp/comments/commentRss/102409.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lambdacpp/services/trackbacks/102409.html</trackback:ping><description><![CDATA[<div style="text-align: right; font-style: italic;">OpenSSH网站上那只SSH刺河豚将FTP埋葬<br></div>
<br>有关sftp有人推荐www.ssh.com的实现，不过我更喜欢开源的产品，特别是Open系列的安全产品。<br><br>
<h1>需求</h1>
首先我们明确我们的目标，我们是希望通过SFTP代替FTP，需求是这样的:<br>
<ol>
    <li>这些用户<span style="font-weight: bold;">只能通过SFT</span>访问服务器</li>
    <li>用户要<span style="font-weight: bold;">锁定</span>在相应的目录下</li>
</ol>
我想通常的思路是这样的:<br>
<ol>
    <li>打开OpenSSH的SFTP</li>
    <li>将这些用户设置在一个<span style="font-style: italic;">组</span>中</li>
    <li>让OpenSSH识别这个组，只允许这些用户使用SFTP</li>
    <li>最后系统要自动的将用户<span style="font-style: italic;">chroot</span>在用户目录下</li>
</ol>
<h1>配置</h1>
我开始都觉得是不是要求太高，不过OpenSSH可以解决以上所有问题。话说回来，如果不能解决怎么可以把FTP埋葬呢。<br>
<h4>SSHD_CONFIG</h4>
sshd通常是打开了sftp的，不过我们应该使用<span style="font-weight: bold;">internal-sftp</span>在sshd_conf中作如下配置:<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">#&nbsp;Subsystem&nbsp;sftp&nbsp;/usr/lib/openssh/sftp-server&nbsp;#&nbsp;注释掉<br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">Subsystem&nbsp;sftp&nbsp;internal-sftp<br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">##<br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">Match&nbsp;group&nbsp;sftponly<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;ChrootDirectory&nbsp;/sftphome/%u<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;X11Forwarding&nbsp;no<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;AllowTcpForwarding&nbsp;no<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;ForceCommand&nbsp;internal-sftp<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;"></span></div>
解释一下：当sshd匹配到sftponly组中的用户，就会强制使用sftp(ForceCommand的作用)，并将用户限定在/sftphome/下相应用户的目录下(ChrootDirectory的作用)。<br>
<h3>创建用户</h3>
我们需要创建相应的用户了：<br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#useradd&nbsp;-G&nbsp;sftponly&nbsp;-d&nbsp;/sftphome/sftpuser&nbsp;&nbsp;-s&nbsp;/usr/sbin/nologin&nbsp;sftpuser<br>#tail&nbsp;/etc/password<br><img src="http://www.cppblog.com/Images/dot.gif"><br>sftpuser:x:</span><span style="color: #000000;">1000</span><span style="color: #000000;">:</span><span style="color: #000000;">1000</span><span style="color: #000000;">::/sftphome/sftpuser:/usr/sbin/nologin<br>#passwd sftpuser<br></span></div>
你可以在其他机器上用sftp登录试试了。你的连接将会被reset!去看看sshd的日志，你会发现pam.d的认证是通过了的，但是chroot失败了。按网络上的说法<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#chown&nbsp;root&nbsp;/sftphome/sftpuser<br>#chmod&nbsp;</span><span style="color: #000000;">755</span><span style="color: #000000;">&nbsp;/sftphome/sftpuser<br></span></div>
再试，可以登录。新的问题是不能在此目录下写入。对的嘛，755对于组用户是不能写啊。再试试775，刚才的问题就来又了，chroot失败。<br><br><span style="font-weight: bold;">以上内容网络上一google一大把。</span><br><br>可以登录不能写这个问题真让人困惑!后来我想可能应该这样理解：既然要chroot，那个目录不属于root肯定是不行的(说错了，猛拍砖)。那我们就不能为用户提供完整的sftp服务了吗？我想可以这样<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#mkdir&nbsp;/sftphome/sftpuser/space<br>#chown&nbsp;sftpuser.sftpuser&nbsp;/sftphome/sftpuser/space<br></span></div>
由系统管理员为sftp用户提供一个目录，并设置其用户属性，用户在这个目录下用户是可写的。当然可以创建很多个。<br><br>这样算不算解决这个问题呢？暂且如此吧。如果您有好方法，一定告知哦。<br><br><br> <img src ="http://www.cppblog.com/lambdacpp/aggbug/102409.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lambdacpp/" target="_blank">五点半</a> 2009-12-02 21:04 <a href="http://www.cppblog.com/lambdacpp/archive/2009/12/02/102409.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>应用中的MySQL服务器部署Replication</title><link>http://www.cppblog.com/lambdacpp/archive/2009/08/14/93378.html</link><dc:creator>五点半</dc:creator><author>五点半</author><pubDate>Fri, 14 Aug 2009 14:39:00 GMT</pubDate><guid>http://www.cppblog.com/lambdacpp/archive/2009/08/14/93378.html</guid><wfw:comment>http://www.cppblog.com/lambdacpp/comments/93378.html</wfw:comment><comments>http://www.cppblog.com/lambdacpp/archive/2009/08/14/93378.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lambdacpp/comments/commentRss/93378.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lambdacpp/services/trackbacks/93378.html</trackback:ping><description><![CDATA[<p>本文记录如何给一台应用中的MySQL服务器部署Replication。</p>
<h4 id="安装环境">安装环境</h4>
<h5 id="现有MySQL">现有MySQL</h5>
现有MySQL服务器的特点：
<ol>
    <li>没有专门为Replication环境配置</li>
    <li>MySQL为编译安装</li>
    <li>MySQL处于运行状态，不可长时间停机</li>
</ol>
<h5 id="目的">目的</h5>
<p>将现有服务器作为Master服务器，配置并运行一台新的MySQL服务器作为Slave服务器</p>
<h5 id="准备">准备</h5>
<ol>
    <li>服务器硬件</li>
    <li>现有主服务器的安装代码包(mysql-5.x.xxx.tar.gz)</li>
</ol>
<h4 id="主服务器的配置和数据准备">主服务器的配置和数据准备</h4>
<h5 id="Master服务器的必须配置">Master服务器的必须配置</h5>
要使用Replication必须将Master的binlog打开，并设置服务器ID。最简单的配置如下:<br>
<pre>log-bin     =  mysql-bin<br>server-id   =  1</pre>
当然关于MySQL Bin Log的配置还有很多设置，可以参考相关手册
<h5 id="数据备份">数据备份</h5>
现在需要将Master的数据备份出来要注意的是要记住 <strong>备份点的binlog日志和postion</strong> 。Master数据备份的方式可以是停机冷备份，如果安装了LVM可以使用LVM的Snapshot。下面使用mysqldump 导出数据。在导出数据之前我们应该Flush表，并锁住表，比允许数据写入。<br>
<pre>mysql&gt; FLUASH TABLES WITH READ LOCK;<br>mysql&gt; SHOW MASTER STATUS;<br>+------------------+----------+--------------+------------------+<br>| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |<br>+------------------+----------+--------------+------------------+<br>| mysql-bin.000157 | 18757860 |              |                  |<br>+------------------+----------+--------------+------------------+<br>1 row in set (0.00 sec)</pre>
使用mysqldump导出数据<br>
<pre>mysql:~# mysqldump -uroot -p --all-databases &gt; dump.sql</pre>
解锁<br>
<pre>mysql&gt; UNLOCK TABLES;</pre>
<h5 id="安装参数的提取">安装参数的提取</h5>
需要在Slave主机编译安装MySQL要了解Master安装时的编译参数，可以通过如下方式获得:<br>
<pre>mysql:~# cat /usr/local/mysql/bin/mysqlbug | grep CONFIGURE</pre>
<h5 id="repl用户创建">repl用户创建</h5>
在Master服务器中创建repl用户，用于在Slave 数据库中访问Master数据<br>
<pre>mysql&gt; GREANT REPLICATION SLAVE ON *.* to 'repl'@'IP.SLAVE.SERVER' identified by 'repl_passwd';</pre>
<h4 id="Slave服务器的安装">Slave服务器的安装</h4>
<h5 id="MySQL的安装">MySQL的安装</h5>
<ul>
    <li>按前面提取的configure参数对源代码进行编译(<code>./configure; make; make install;</code>)</li>
    <li>安装初始化数据库:</li>
</ul>
<pre>#mysql_install_db --datadir=/data --user=mysql</pre>
<ul>
    <li>参照@{mysql-src}/support-files/<code>目录中my.cnf文件在</code>/etc/<code>下创建@my.cnf</code></li>
    <li>参照@{mysql-src}/support-files/mysql.server@文件在@/etc/init.d/<code>下配置@mysqldb</code></li>
    <li>可尝试启动mysql。 <code>/etc/init.d/mysqldb start</code></li>
</ul>
<h5 id="数据的导入">数据的导入</h5>
<pre>mysql# mysql -uroot -p &lt; dump.sql</pre>
<p>如果导入出现超出最大数据包错误可以尝试修改my.cnf中的max_allow_packet</p>
<h5 id="在mycnf中配置slave">在my.cnf中配置slave</h5>
在my.cnf中配置：<br>
<pre>server-id       =  2<br>master-host     =  master_ip<br>master-user     =  repl<br>master-password =  repl_passwd</pre>
<h5 id="在Slave服务器上启动Slave">在Slave服务器上启动Slave</h5>
<pre>mysql&gt; STOP SLAVE;<br>mysql&gt; CHANGE MASTER TO     <br>       MASTER_HOST='masterip',<br>      &nbsp;MASTER_USER='repl',<br>      &nbsp;MASTER_PASSWORD='repl_passwd',<br>      &nbsp;MASTER_LOG_FILE='mysql-bin.000157',<br>       MASTER_LOG_POS=18757860 ;<br>mysql&gt; START SLAVE;<br><br></pre><img src ="http://www.cppblog.com/lambdacpp/aggbug/93378.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lambdacpp/" target="_blank">五点半</a> 2009-08-14 22:39 <a href="http://www.cppblog.com/lambdacpp/archive/2009/08/14/93378.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Debian下安装Oracle 10 XE</title><link>http://www.cppblog.com/lambdacpp/archive/2006/11/03/14643.html</link><dc:creator>五点半</dc:creator><author>五点半</author><pubDate>Fri, 03 Nov 2006 15:17:00 GMT</pubDate><guid>http://www.cppblog.com/lambdacpp/archive/2006/11/03/14643.html</guid><wfw:comment>http://www.cppblog.com/lambdacpp/comments/14643.html</wfw:comment><comments>http://www.cppblog.com/lambdacpp/archive/2006/11/03/14643.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lambdacpp/comments/commentRss/14643.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lambdacpp/services/trackbacks/14643.html</trackback:ping><description><![CDATA[现在安装Oracle已经很简单了，看来有官方的支持。记录下备忘：<br /><ol><li>在source.list中加入deb http://oss.oracle.com/debian/ unstable main non-free</li><li>aptitude update</li><li>aptitude oracle-xe-client oracle-xe-universal  包有点大200多兆</li><li>通过/etc/init.d/oracle-xe configure配置基本参数</li><li>通过http://127.0.0.1:8080/apex/进行管理</li></ol>Oracle 10 XE 需要1G的交换分区，如果没有可以建一个交换文件<br /><ol><li>dd if=/dev/zero of=/mnt/swapfile bs=1024 count=1048576</li><li>mkswap /mnt/swapfile</li><li>swapon /mnt/swapfile</li></ol>参考了一下：<a href="http://my.donews.com/xiaoqiang/">疯狂小强</a> （没有使用aptitude,不过很详细）<br /><br /><img src ="http://www.cppblog.com/lambdacpp/aggbug/14643.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lambdacpp/" target="_blank">五点半</a> 2006-11-03 23:17 <a href="http://www.cppblog.com/lambdacpp/archive/2006/11/03/14643.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Debian下mrtg的配置</title><link>http://www.cppblog.com/lambdacpp/archive/2006/06/02/8090.html</link><dc:creator>五点半</dc:creator><author>五点半</author><pubDate>Fri, 02 Jun 2006 10:44:00 GMT</pubDate><guid>http://www.cppblog.com/lambdacpp/archive/2006/06/02/8090.html</guid><wfw:comment>http://www.cppblog.com/lambdacpp/comments/8090.html</wfw:comment><comments>http://www.cppblog.com/lambdacpp/archive/2006/06/02/8090.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/lambdacpp/comments/commentRss/8090.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lambdacpp/services/trackbacks/8090.html</trackback:ping><description><![CDATA[先要保证已经安装了Apache.创建一个mrtg的工作目录,通常是/var/www/mrtg/.<br /><ol><li>安装</li><ul><li>aptitude install mrtg mrtgutils</li></ul><li>生成mrtg.cfg文件</li><ul><li>要保证管理的设备开启了snmp的读操作;</li><li>/usr/bin/cfgmaker  --global WorkDir:/var/www/mrtg  --global 'Options[_]: growright,bits'   --ifref=ip public@192.168.100.1</li><li>其中public是设备的 community名,192.168,100.1是设备的ip</li><li>如果上面的命令产生了正确的结果，就可以将其输出到一个文件中,如/etc/mrtg.cfg.</li><li>可以编辑这个文件，将一些东西汉化<br /></li></ul><li>生成网页</li><ul><li>运行mrtg /etc/mrtg.cfg即可在/var/www/mrtg下看见一些html文件和图像文件,这些就是mrtg生成的.</li><li>应为产生日志的原因,可能需要多运行几次mrtg /etc/mrtg.cfg直到没有输出为止<br /></li></ul><li>生成index.html</li><ul><li>运行  indexmaker --output=index.html /etc/mrtg.cfg 生成index.html文件</li><li> 将index.html拷贝到/var/www/mrtg</li></ul><li>在cron配置定时运行mrtg</li><ul><li>mrtg是通过读入mrtg.cfg来生成图像的,它不会只动运行.要实现流量监控可在cron配置，使mrtg定时执行</li><li>每5分钟执行一下mrtg，在cron添加记录:0,5,10,15,20,25,30,35,40,45,50,55 * * * * mrtg /etc/mrtg.cfg</li></ul></ol>详细的文档要参考:http://oss.oetiker.ch/mrtg/doc/indexmaker.en.html<br /><blockquote><br /></blockquote><br /><img src ="http://www.cppblog.com/lambdacpp/aggbug/8090.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lambdacpp/" target="_blank">五点半</a> 2006-06-02 18:44 <a href="http://www.cppblog.com/lambdacpp/archive/2006/06/02/8090.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>