本文參考:http://www.reibang.com/p/52de6a8d29d6
https://www.cnblogs.com/netonline/archive/2017/10/13/7660767.html
lsyncd復(fù)制+pgsql復(fù)制
1.安裝gitlab (主惨撇、從)
* 配置yum源
vi /etc/yum.repos.d/gitlab-ce.repo
復(fù)制以下內(nèi)容:
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
* 更新本地yum緩存
yum makecache
* 安裝GitLab社區(qū)版
yum install gitlab-ce #自動安裝最新版本
注:若需安裝指定版本弃衍,則添加版本號即可,即yum install gitlab-ce-x.x.x
* 加載配置文件
gitlab-ctl reconfigure
* 修改配置文件
vim /etc/gitlab/gitlab.rb # 修改默認的配置文件耿战;
* 修改域名
vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
* 修改GitLab服務(wù)端口
vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
* 啟動服務(wù)
gitlab-ctl start # 啟動所有 gitlab 組件帆啃;
* GitLab常用命令
gitlab-ctl start # 啟動所有 gitlab 組件鱼喉;
gitlab-ctl stop # 停止所有 gitlab 組件;
gitlab-ctl restart # 重啟所有 gitlab 組件模她;
gitlab-ctl status # 查看服務(wù)狀態(tài)稻艰;
gitlab-ctl reconfigure # 啟動服務(wù);(重新加載配置文件缝驳,在GitLab初次安裝后可以使用连锯,但是在業(yè)務(wù)環(huán)境中不可隨意使用,reconfigure會把一些過去的config還原用狱,導致修改的端口以及域名等都沒有了运怖。)
vim /etc/gitlab/gitlab.rb # 修改默認的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace # 檢查gitlab夏伊;
sudo gitlab-ctl tail # 查看日志摇展;
使用lsyncd復(fù)制數(shù)據(jù)
2.安裝lsyncd(主)
yum install epel-release
yum install lsyncd
* 修改配置文件
vi /etc/lsyncd.conf
settings {
logfile ="/var/log/lsyncd/lsyncd.log",
statusFile ="/var/log/lsyncd/lsyncd.status",
inotifyMode = "CloseWrite",
maxProcesses = 8,#同時最大起的rsync進程數(shù),一個rsync同步一個文件
}
-- IV. 遠程目錄同步溺忧,rsync模式 + ssh shell
sync {
default.rsync,
source = "/var/opt/gitlab",#源目錄咏连,路徑使用絕對路徑
target = "root@192.168.1.6:/var/opt/gitlab/",#目標目錄
-- 上面target,注意如果是普通用戶鲁森,必須擁有寫權(quán)限
exclude = { "backups", "gitlab-ci", "sockets", "gitlab.yml", "redis", "postmaster.pid","recovery.conf","postgresql.conf","pg_hba.conf"},
maxDelays = 5,#統(tǒng)計到多少次監(jiān)控事件即開始一次同步
delay = 30,#若30s內(nèi)未出發(fā)5次監(jiān)控事件祟滴,則每30s同步一次
-- init = true,
rsync = {
binary = "/usr/bin/rsync",#rsync可執(zhí)行文件
archive = true,#保持文件所有屬性
compress = true,#壓縮傳輸,是否開啟取決于帶寬及cpu
bwlimit = 2000 #限速 kb/s
-- rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
-- 如果要指定其它端口歌溉,請用上面的rsh
}
}
3垄懂、配置免密登錄
* 生成秘鑰
通過命令”ssh-keygen -t rsa“骑晶,生成之后會在用戶的根目錄生成一個 “.ssh”的文件夾
ssh-keygen -t rsa
vi ~/.ssh/known_hosts #刪除對應(yīng)ip的相關(guān)rsa信息
* 發(fā)送公鑰到從機
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.6
4、重啟lsyncd服務(wù)
systemctl restart lsyncd
5草慧、從機也要安裝lsyncd服務(wù)
6桶蛔、需要重起postgresql (從)
gitlab-ctl stop postgresql
gitlab-ctl start postgresql
gitlab的PostgresSQL復(fù)制
只使用lsyncd對代碼層是好使的,但是如果涉及到用戶的操作漫谷,會導致失敗仔雷,從庫的PostgresSQL起不起來,所以在上面的基礎(chǔ)上舔示,再做一個PostgresSQL的復(fù)制碟婆。
1、主庫配置
* 創(chuàng)建一個有登錄和復(fù)制權(quán)限的賬號
由于gitlab上的postgresql已經(jīng)創(chuàng)建了復(fù)制賬號斩郎,所以不用再創(chuàng)建
有賬號可不必進行下面的操作
登錄PostgresSQL
su - gitlab-psql
psql -h /var/opt/gitlab/postgresql -d gitlabhq_production
select * from pg_roles;
否則創(chuàng)建賬號
postgres=#create role repl login replication encrypted password 'repl@123';
* 認證文件pg_hba.conf
cd /var/opt/gitlab/postgresql/data
vi pg_hba.conf
在最下面添加可訪問遠程ip脑融,trust代表不需要密碼訪問
host replication gitlab_replicator 192.168.1.6/32 trust
* 修改配置文件
vi postgresql.conf
修改如下內(nèi)容
#監(jiān)聽服務(wù)器
listen_addresses = '*'
#主從設(shè)置為熱備模式喻频,流復(fù)制必選參數(shù)
wal_level = hot_standby
#流復(fù)制允許的連接進程缩宜,一般同standby數(shù)量一致
max_wal_senders = 2
#流復(fù)制在沒有基于文件的連續(xù)歸檔時,主服務(wù)器可能在備機收到WAL日志前回收這些舊的WAL甥温,此時備機需要重新從一個新的基礎(chǔ)備份初始化锻煌;可設(shè)置wal_keep_segments為一個足夠高的值來確保舊的WAL段不會被太早重用;1個WAL日志為16MB姻蚓,所以在設(shè)置wal_keep_segments時宋梧,在滿足空間的前提下可以盡量設(shè)置大一些
wal_keep_segments = 64
* 重啟服務(wù)
gitlab-ctl restart postgresql
2、從庫配置
* 備份主庫的數(shù)據(jù)
備份之前先把主庫的lsyncd服務(wù)停掉狰挡,否則會同步主庫數(shù)據(jù)捂龄,清空data目錄
cd /opt/gitlab/embedded/postgresql/9.6/bin
./pg_basebackup -h 192.168.1.9 -p 5432 -U gitlab_replicator -F p -P -D /var/opt/gitlab/postgresql/data/
* 賦予備份目錄權(quán)限
chown -R gitlab-psql:root /var/opt/gitlab/postgresql/data/
* 修改從庫配置文件postgresql.conf
cd /var/opt/gitlab/postgresql/data/
vi postgresql.conf
#在基礎(chǔ)備份時,初始化文件是從主庫復(fù)制來的加叁,所以配置文件一致倦沧,可將wal_level,max_wal_senders與wal_keep_segments等參數(shù)注釋它匕,以下是新增或修改的參數(shù)
#在備份的同時允許查詢
hot_standby = on
#可選展融,流復(fù)制最大延遲
max_standby_streaming_delay = 30s
#可選,從向主報告狀態(tài)的最大間隔時間
wal_receiver_status_interval = 10s
#可選豫柬,查詢沖突時向主反饋
hot_standby_feedback = on
#默認參數(shù)告希,非主從配置相關(guān)參數(shù),表示到數(shù)據(jù)庫的連接數(shù)烧给,一般從庫做主要的讀服務(wù)時燕偶,設(shè)置值需要高于主庫
max_connections = 1000
* 修改恢復(fù)文件recovery.conf
復(fù)制文件
cp /opt/gitlab/embedded/postgresql/9.6/share/recovery.conf.sample ./recovery.conf
更改文件所屬
chown gitlab-psql:root recovery.conf
修改文件
vi recovery.conf
#指明從庫身份
standby_mode = on
#連接到主庫信息
primary_conninfo = 'host=192.168.1.9 port=5432 user=gitlab_replicator'
#同步到最新數(shù)據(jù)
recovery_target_timeline = 'latest'
* 重啟服務(wù)
gitlab-ctl restart postgresql
啟動主庫的lsyncd服務(wù)
systemctl restart lsyncd
* 驗證
主庫sender進程
ps -ef | grep postgres
從庫receiver進程
ps -ef | grep postgres