天天看点

gitlab主备同步_gitlab主备同步

主:10.10.10.75

备:10.10.10.16

方案思路:mysql主从同步+gitlab文件目录同步(inotify+rsync)

一,配置mysql主从同步(mysql版本:5.5.43)

修改75的mysql配置文件

vim /etc/mysql/my.cnf

server-id=1

binlog_do-db=gitlab库

gitlab主备同步_gitlab主备同步

重启mysql

修改16备机的mysql配置文件

vim /etc/mysql/my.cnf

server-id=2

replicate-do-db = gitlab库

gitlab主备同步_gitlab主备同步

重启mysql

主从同步已配置完毕,自己可以测试下。

二,配置文件同步

需要同步以下俩文件

/home/git/gitlab-satellites

/home/git/repositories

1,在75主服务器安装inotify实时监控文件变化情况

tar -xf inotify-tools-3.14.tar.gz

cd inotify-tools-3.14

./configure --prefix=/data/inotify

make;make install

使用Inotify时,要特别注意内核中关于它的两个配置。首先/proc/sys/fs/inotify/max_user_instances 规定了每个用户所能创建的Inotify实例的上限;其次/proc/sys/fs/inotify/max_user_watches规定了每个Inotify实例最多能关联几个监控(watch)。我们要设置一个较大的值(只需echo即可)

echo 9999999 >/proc/sys/fs/inotify/max_user_watches

2,在16备机安装rsync服务。75也需要装rsync客户端,linux大多数都默认安装了rsync客户端。

tar  -xf  rsync-3.1.1.tar.gz

cd  rsync-3.1.1

./configure --prefix=/data/rsync

make;make install

在/etc下面新建一个rsync配置文件,同时建一个rsync用户认证文件。

touch /etc/rsyncd.conf

touch /etc/rsyncd.secrets

chmod 600 /etc/rsyncd.conf

chmod 600 /etc/rsyncd.secrets

增加配置内容

vim /ect/rsyncd.conf

gitlab主备同步_gitlab主备同步

vim /etc/rsyncd.secrets

设置rsync账号和密码(git:123456)

gitlab主备同步_gitlab主备同步

启动rsync服务

/data/rsync/bin/rsync --daemon

3,在主75编写同步脚本,将自动把更新的目录文件同步到备机16服务器上面。

在75要建一个rsync密码认证文件(只存放密码),以保证免密码传输:

touchu /etc/git_rsync

chmod 600 /etc/git_rsync

vim /etc/git_rsync

添加密码123456

gitlab主备同步_gitlab主备同步

接下来编写同步脚本了

vim /home/mengruiwen/script/repositories.sh

#!/bin/bash

set -x

/data/tools/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,move,attrib /home/git/repositories | while read files

do

rsync  -rlptgoD --password-file=/etc/git_rsync /home/git/repositories  [email protected]::repositories

done

将主75 /home/git/repositories自动同步到备机16 /home/git/repositories

当然/home/git/gitlab-satellites目录也需要做同步(脚本跟repositories的一样,就省略不写了)

将同步脚本加到定时任务里

gitlab主备同步_gitlab主备同步

接下来我们运行脚本,可以测试下。

接下来登陆gitlab看看代码同步信息。

主75的信息:

gitlab主备同步_gitlab主备同步

备16的信息:

gitlab主备同步_gitlab主备同步

主备信息一致,代码也一致。

至此,我们的gitlab主从同步已顺利完成。