nighty

折腾的年华
posts - 37, comments - 143, trackbacks - 0, articles - 0

2013年3月27日

系统为ubuntu server,二台机器A和B,IP为A 192.168.1.111,B 192.168.1.222
A为rsync server,启动为守护进程,B为备份机,做为rsync client,最后用crontab做一个简单的作业,定时在B上执行同步文件的功能
A的安装和配置如下:
1.  apt-get install rsync   可能提示系统已经安装有了
2. 配置文件/etc/rsyncd.conf
    默认安装时是不会有这个配置文件的,但是可以 cp /usr/share/doc/rsync/examples/rsyncd.conf /etc  把它示例中的配置文件拷贝过来
    vi /etc/rsyncd.conf    这里参数有点多,但是有些可以先不管,关注重点的
    [ftp]  这里是模块,可以配置多个,这个是系统默认给出的一个配置,下面给一个本机上的配置示例:
--------------------------------------------------------------------------------------------------
# so omit the "pid file" line completely in that case.
pid file=/var/run/rsyncd.pid
#syslog facility=daemon
#socket options=
# MODULE OPTIONS
[share]
comment = public archive
path = /var/www/pub
use chroot = no
max connections=2
# lock file = /var/lock/rsyncd
# the default for read only is yes...
read only = no
list = yes
uid = nobody
gid = nogroup
# exclude = 
# exclude from = 
# include =
# include from =
auth users = rsync
secrets file = /etc/rsyncd.secrets
strict modes = yes
hosts allow = 192.168.1.222
# hosts deny =
ignore errors = yes
ignore nonreadable = yes
transfer logging = yes
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
timeout = 600
refuse options = checksum dry-run
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
---------------------------------------------------------------------------------------------
这里,最上面的是pid文件位置。然后配置了一个模块名叫做share,最大连接数是2,read only = no,指定为非只读(不然同步时会有权限问题)
而后面的auth users = rsync 是指定一个同步的账户名叫做rsync,这个账户的认证文件是/etc/rsyncd.secrets,当然我们要创建这个文件

3.  创建 /etc/rsyncd.secrets文件,内容为: rsync:123  表示rsync这个用户的密码是123 然后修改文件的权限 chmod 600 /etc/rsyncd.secrets

4.  rsync server做为守护进程
     vi /etc/default/rsync
     可以看到开头处这样声明:
------------------------------------
# start rsync in daemon mode from init.d script?
#  only allowed values are "true", "false", and "inetd"
#  Use "inetd" if you want to start the rsyncd from inetd,
#  all this does is prevent the init.d script from printing a message
#  about not starting rsyncd (you still need to modify inetd's config yourself).
RSYNC_ENABLE=inetd
-------------------------------------------
   做为守护进程,可以设置为true或是xinetd方式来启动。于是我们安装inetd   sudo apt-get install xinetd
   安装好后配置inetd的配置文件  vi /etc/xinetd.d/rsync ,输入如下内容:
---------------------------------------------------
service rsync
{
    disable = no
    socket_type = stream
    wait = no
    user = root
    server = /usr/bin/rsync
    server_args = --daemon
    log_on_failure += USERID
}
-------------------------------------------------------
然后启动xinetd,/etc/init.d/xinetd restart,A服务器的rsyncd server就完成了!

5.  B服务器由于是client,不需要配置,也不需要安装xinetd,直接可以通过命令行执行
rsync --delete -azvv rsync@192.168.1.111::share /var/www/pub/
这个命令就可以直接连接到192.168.111的rsync账户,它会提示你输入密码,就是A中的secrets文件中的密码,然后同步share模块到本机的/var/www/pub目录,你可以事前在A机器上创建一个文件如test.txt,随便写点内容,然后执行些命令,看是不是B上多了这样一个文件?如果是,则表示已经连接成功。你接下来就可以做crontab了!

posted @ 2013-04-12 12:23 寒武纪 阅读(1323) | 评论 (0)编辑 收藏

二台服务器,A的内网IP为192.168.1.111,B的内网IP为192.168.1.222,A做为master,B做为Slave
1.  配置A的Mysql
     (1)  vim /etc/mysql/my.cnf
           去掉[mysqld]段中 server_id =1 和log_bin=/var/log/mysql/mysql-bin.log的#注释
           加上  binlog-do-db = s3     s3就是要同步的数据库的名称,如果没有这一行,表示同步所有的数据,另外 binlog_ignore_db = mysql。要表示忽略同步的数据库名称为mysql,如果有多个要指定同步或是忽略同步的数据,就配置多行,保存退出。
     (2) 创建一个复制用的账户(名称为repl,允许从远程连接,密码为123456):
          GRANT REPLICATION SLAVE, RELOAD,SUPER, NO *.* TO repl@'%' IDENTIFIED BY '123456';
        FLUSH PRIVILEGES;
     (3) 重启mysql服务,或是直接reboot机器也可以
     (4) 进入mysql,然后用 show master status\G  查看二进制日志的状态,看到类似以下的结果:
          +------------------+----------+--------------+------------------+
          | File                      | Position  | Binlog_Do_DB | Binlog_Ignore_DB |
          +------------------+----------+--------------+------------------+
          | mysql-bin.000003 |     1376  | s3                  |                           |
          +------------------+----------+--------------+------------------+
2.  配置B的Mysql
      (1) vim /etc/mysql/my.cnf
           去掉[mysqld]段中 server_id =1 和log_bin=/var/log/mysql/mysql-bin.log的#注释,把server_id改为2,要和master机器的不一样。并增加以下内容:
           binlog_do_db=s3
           log-slave-updates
          保存退出
     (2) 重启mysql服务
     (3) 进入mysql,执行
          CHANGE MASTER TO MASTER_HOST='192.168.1.111', MASTER_USER='repl',Master_Port=3306,MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=1376;
          SLAVE START;
          注意上面的CHANGE语句中,MASTER_LOG_FILE和MASTER_LOG_POS就是上面1.4中提到的show master status命令得到的结果,指定二进制文件的名称和开始同步的位置。
     (4) 查看SLAVE状态:    show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.111
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 1376
               Relay_Log_File: mysqld-relay-bin.000002
                Relay_Log_Pos: 1355
        Relay_Master_Log_File: mysql-bin.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 1376
              Relay_Log_Space: 1512
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
    上面的红色二行如果为YES则表示已经正常连接,可以进行复制了。

posted @ 2013-04-09 20:33 寒武纪 阅读(1709) | 评论 (0)编辑 收藏

    许久没用服务器上装的那个postgresql,其实是用来做redmine的数据库的,考虑到mysql可能经常升级,而rails的连接组件在安装上有点麻烦,所以当初就装成postgresql。
    今天准备备份一下,用的phppgadmin,刚开始是提示其中的pg_dump执行路径没有配置,重新配置好后,导出的结果却是空的损坏文件。于是想算了,还是转到pg的安装目录下执行pg_dump.
    服务器装的是centos 6.2,忘了当初是建了一个用户postgres.postgres进行安装的,用其它用户切换到pg的安装目录下bin/pg_dump是执行不了的,提示在指定目标下生成导出文件。故猜测应该是postgres这个用户的权限不足!
    cat /etc/passwd查看一下当前有多少用户,的确有postgres.postgres用户,密码多少?忘了!反正有root,直接passwd修改成新的密码吧,于是就立马修改了该用户的密码,可以正确切换到postgres用户了,还需要root为postgres指定一个目录有操作权限
    chown -R postgres.postgres /var/xxxx   
    然后再回到pg的bin目录下,执行pg_dump redmine > /var/xxx/redmine.bak
    这下终于正常了,别忘了还得去redmine安装目录下,备份下files文件夹。
    
    仅以此为笔记,以后可以查阅使用

posted @ 2013-03-27 22:39 寒武纪 阅读(1376) | 评论 (0)编辑 收藏