主: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 [email protected]::repositories
done
将主75 /home/git/repositories自动同步到备机16 /home/git/repositories
当然/home/git/gitlab-satellites目录也需要做同步(脚本跟repositories的一样,就省略不写了)
将同步脚本加到定时任务里
接下来我们运行脚本,可以测试下。
接下来登陆gitlab看看代码同步信息。
主75的信息:
备16的信息:
主备信息一致,代码也一致。
至此,我们的gitlab主从同步已顺利完成。