gitlab主备同步

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/syloke/article/details/48050559

主: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库


重启mysql

修改16备机的mysql配置文件

vim /etc/mysql/my.cnf

server-id=2

replicate-do-db = 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 



vim /etc/rsyncd.secrets

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

 

启动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


接下来编写同步脚本了

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  git@10.10.10.16::repositories
done


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

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

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


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

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

主75的信息:


备16的信息:


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

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


展开阅读全文

没有更多推荐了,返回首页