gitlab サーバ移行

・移行元と移行先のgitlabのバージョンを揃える

doc/raketasks/backup_restore.md · master · GitLab.org / GitLab Community Edition · GitLab


SSH host keys

Migrate GitLab Instance to new Host – pikedom.com

mattermost

gitlab-ce 付属のmattermost。mattermost のデータベース、データは gitlab のバックアップに含まれないので別途移行が必要

移行元

バックアップ作成

sudo -u mattermost -i bash
/opt/gitlab/embedded/bin/pg_dump -U gitlab_mattermost -h /var/opt/gitlab/postgre
sql -p 5432 mattermost_production > /tmp/mattermost_production_backup.sql
exit

cd /var/opt/gitlab/
tar cvzf /tmp/mattermost.tar.gz mattermost

移行先にバックアップファイルをコピー

移行先

(データベース mattermost_production とデータベースユーザ gitlab_mattermost が存在しない場合)

gitlab-ctl reconfigure

リストア

gitlab-ctl stop mattermost

sudo -u gitlab-psql -i bash
/opt/gitlab/embedded/bin/dropdb -U gitlab-psql -h /var/opt/gitlab/postgresql/ mattermost_production
/opt/gitlab/embedded/bin/createdb -U gitlab-psql -h /var/opt/gitlab/postgresql/ mattermost_production
/opt/gitlab/embedded/bin/psql -U gitlab-psql -h /var/opt/gitlab/postgresql/ postgres -c "ALTER DATABASE mattermost_production OWNER TO gitlab_mattermost"
exit

sudo -u mattermost -i bash
cat /tmp/mattermost_production_backup.sql | /opt/gitlab/embedded/bin/psql -U gitlab_mattermost -h /var/opt/gitlab/postgresql/ mattermost_production
exit

cd /tmp
tar xvzf mattermost.tar.gz

cd /var/opt/gitlab/mattermost 
mv config.json config.json.bak 
mv data data.bak

mv /tmp/mattermost/config.json config.json 
mv /tmp/mattermost/data data 

gitlab-ctl start mattermost

Migration Guide — Mattermost 5.12 documentation

Is Mattermost Backup included in GitLab Backup? - GitLab Mattermost - Matttermost, Inc.

gitlab upgrade 更新

https://docs.gitlab.com/omnibus/update/

https://about.gitlab.com/update/#centos-7

sudo yum install gitlab-ce
...
gitlab preinstall: It seems you are upgrading from 10.x version series
gitlab preinstall: to 11.x series. It is recommended to upgrade
gitlab preinstall: to the last minor version in a major version series first before
gitlab preinstall: jumping to the next major version.
gitlab preinstall: Please follow the upgrade documentation at 
https://docs.gitlab.com/ee/policy/maintenance.html#upgrade-recommendations

失敗

→ マイナーバージョンを最新にする

sudo yum install gitlab-ce-10.8.7-ce.0.el7.x86_64

再度更新

sudo yum install gitlab-ce

GitLab-CE(Omnibus)8を11までアップグレードさせる - namio's blog

postgres index インデックス メンテナンス

PostgreSQL12ではreindexコマンドをオンラインで実行することができるconcurrentlyオプションに対応しました。
以下のように実行します。

reindex index concurrently idx_testa01;

PostgreSQLのインデックス再編成 #PostgreSQL - Qiita

12以下はpg_repackを使用

テーブルやインデックスで必要となるメンテナンス処理についての備忘。
調べた結論だけまとめておくと、下記といった感じでした。

  • auto vacuumを有効にしておく(デフォルトで有効)
    • かつ、適当な頻度でauto vacuumされていることを、定期的に確認する
  • indexの断片化状態を定期的に確認する
    • 必要であれば、indexを再構築してあげる

PostgreSQLの、テーブル・インデックスのメンテナンスについて - goodbyegangsterのブログ 2019

使用していないインデックスを見つける - matsuou1の日記 2009

PostgreSQLアンチパターン:運用DBのREINDEX #PostgreSQL - Qiita

https://www.postgresql.jp/document/current/html/routine-reindex.html

https://www.postgresql.jp/document/current/html/sql-createindex.html#SQL-CREATEINDEX-CONCURRENTLY

pgstattuple

https://www.postgresql.jp/document/current/html/pgstattuple.html

postgres=# CREATE EXTENSION pgstattuple;
CREATE EXTENSION

postgres=# SELECT * FROM pgstatindex('tbl_i_idx');
-[ RECORD 1 ]------+------
version            | 4
tree_level         | 1
index_size         | 40960
root_block_no      | 3
internal_pages     | 1
leaf_pages         | 3
empty_pages        | 0
deleted_pages      | 0
avg_leaf_density   | 41.1
leaf_fragmentation | 33.33

内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 ch14 インデックスメンテナンス - 勉強日記 2020

leaf_fragmentation の単位は%?

Then you can examine index bloat like this:

SELECT * FROM pgstatindex('spatial_ref_sys_pkey');

-[ RECORD 1 ]------+-------
version            | 2
tree_level         | 1
index_size         | 196608
root_block_no      | 3
internal_pages     | 1
leaf_pages         | 22
empty_pages        | 0
deleted_pages      | 0
avg_leaf_density   | 64.48
leaf_fragmentation | 13.64

This index is in excellent shape (never used): It has only 14% bloat.

Mind that indexes are by default created with a fillfactor of 90, that is, index blocks are not filled to more than 90% by INSERT.

It is hard to say when an index is bloated, but if leaf_fragmentation exceeds 50-60, it's not so pretty.

To reorganize an index, use REINDEX.

https://stackoverflow.com/questions/52444912/how-to-find-out-fragmented-indexes-and-defragment-them-in-postgresql

# emacs /usr/share/munin/plugins/mysql_
修正前。
    my %section_map = (
~~~~
        'BACKGROUND THREAD'        => \&skip,
    );
修正後。
    my %section_map = (
~~~~
        'BACKGROUND THREAD'        => \&skip,
        'INDIVIDUAL BUFFER POOL INFO'   => \&skip, 
    );

MuninのMySQLプラグインで"Unknown section: INDIVIDUAL BUFFER POOL INFO"エラーが出たときの対処法

freebsd nrpe check_mpt

pkg install nrpe3
pkg install p5-Nagios-Plugin

https://raw.githubusercontent.com/trombik/reallyenglish-nagios-plugins/master/src/check_mpt/check_mpt

wget --no-check-certificate https://raw.githubusercontent.com/trombik/reallyenglish-nagios-plugins/master/src/check_mpt/check_mpt

以下書き換え
===
#!/usr/local/bin/perl
    #my $sudo = can_run('sudo');
    my $sudo = '/usr/local/bin/sudo'; 
===

chmod +x check_mpt
mv check_mpt /usr/local/libexec/nagios/


vi /usr/local/etc/sudoers.d/check_mpt 
 ====
nagios ALL=(root) NOPASSWD: /usr/sbin/mptutil show volumes
 ====

vi /etc/rc.conf
 ====
nrpe3_enable="YES" 
 ====

vi /usr/local/etc/nrpe.cfg
 ====
(以下追加)
command[check_raid]=/usr/local/libexec/nagios/check_mpt
 ====

/usr/local/etc/rc.d/nrpe3 start

(確認)
/usr/local/libexec/nagios/check_nrpe3 -H 127.0.0.1 -c check_raid