gitlab同步复制repo以及数据库

gitlab主从复制

同步复制repo、数据库信息;


这么做的原因:


A、为什么不使用lsyncd同步pg,因为尝试之后,gitlab 502,所以分开,pg数据很少去更新;

B、为什么不pg主从,因为pg从库的权限是只读的,gitlab登录是update sql,所以无法登录,故而不做pg主从;

步骤

1、主库安装lsyncd

下载地址:
http://www.rpmfind.net/linux/rpm2html/search.php?query=lsyncd

# download
wget http://www.rpmfind.net/linux/epel/7/x86_64/Packages/l/lsyncd-2.2.2-1.el7.x86_64.rpm
# install
rpm -ivh lsyncd-2.2.2-1.el7.x86_64.rpm

2、设置lsyncd.conf

配置lsyncd配置信息

----
-- User configuration file for lsyncd.
--
-- Simple example for default rsync, but executing moves through on the target.
--
-- For more examples, see /usr/share/doc/lsyncd*/examples/
-- 
-- sync{default.rsyncssh, source="/var/www/html", host="localhost", targetdir="/tmp/htmlcopy/"}

settings {
    logfile ="/var/log/lsyncd/lsyncd.log",
    statusFile ="/var/log/lsyncd/lsyncd.status",
    inotifyMode = "CloseWrite",
    maxProcesses = 8,
    }


-- 远程本地gitlab目录同步到备库,rsync+ssh
sync {
    default.rsync,
    source    = "/var/opt/gitlab/",
    target    = "root@slaveIP:/var/opt/gitlab/",
    -- 上面target,注意如果是普通用户,必须拥有写权限
    -- 排除选项
    exclude = { "backups" ,"gitlab-ci", "sockets", "gitlab.yml", "redis", "postmaster.pid","recovery.conf","postgresql.conf","pg_hba.conf","postgresql/**"},
    maxDelays = 5,
    delay = 20,
    -- init = true,
    rsync     = {
        binary = "/usr/bin/rsync",
        archive = true,
        compress = true,
        bwlimit   = 500000,
        rsh = "/usr/bin/ssh -l root -i /root/.ssh/id_rsa -p 22 -o StrictHostKeyChecking=no"
        -- 如果要指定其它端口,请用上面的rsh
        }
    }
-- 远程/etc/gitlab目录同步
sync {
    default.rsync,
    source    = "/etc/gitlab",
    target    = "root@slaveIP:/etc/gitlab",
    -- 上面target,注意如果是普通用户,必须拥有写权限
    -- 排除选项
    exclude = { "initial_root_passwordi","gitlab.rb"},
    maxDelays = 5,
    delay = 20,
    -- init = true,
    rsync     = {
        binary = "/usr/bin/rsync",
        archive = true,
        compress = true,
        bwlimit   = 2000,
        rsh = "/usr/bin/ssh -l root -i /root/.ssh/id_rsa -p 22 -o StrictHostKeyChecking=no"
        -- 如果要指定其它端口,请用上面的rsh
        }
    }

3、同步pg数据

从库上设置定时任务

也可以主库上设置

# cat /opt/pg_syncd.sh
#!/bin/bash

step=30 # 间隔30s

for (( i = 0; i < 60; i=(i+step) ))
do
	sudo rsync -avrz masterIP:/var/opt/gitlab/postgresql/data/* /var/opt/gitlab/postgresql/data/
	sudo rsync -avz masterIP:/etc/gitlab/gitlab-secrets.json /etc/gitlab/
	sleep $step
done

exit 0
# crontab
*/10 * * * * /usr/bin/sh /opt/pg_syncd.sh

4、启动lsyncd

切记不可设置为自启动,避免主从切换数据错乱

# lsyncd,切记不可设置为自启动,避免主从切换数据错乱
systemctl start lsyncd

5、验证

主:
用户信息
项目

从:
用户信息
项目信息

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值