Hey Habr!
Kajeno ke batla ho bua ka boiphihlelo ba rona ba ho iketsetsa backup ea data e kholo ho tsoa ho Nextcloud storages ka meralo e fapaneng. Ke sebetsa joalo ka seteishene sa lits'ebeletso ho Molniya AK, moo re etsang taolo ea tlhophiso ea lits'ebetso tsa IT; Nextcloud e sebelisetsoa ho boloka data. Ho kenyeletsoa, ka sebopeho se ajoang, se nang le redundancy.
Mathata a hlahang ho tsoa ho likarolo tsa lits'ebetso ke hore ho na le data e ngata. Phetolelo e fanoeng ke Nextcloud, redundancy, mabaka a ikhethileng, le tse ling li theha likopi tse ngata.
prehistory
Ha o tsamaisa Nextcloud, ho hlaha bothata ba ho hlophisa backup e sebetsang, e tlamehang ho ngolisoa, hobane data e bohlokoa.
Re fana ka likhetho tsa ho boloka li-backups sebakeng sa rona kapa ho moreki mochining o arohaneng le Nextcloud, e hlokang mokhoa o bonolo oa tsamaiso.
Ho na le bareki ba bangata, kaofela ha bona ba na le litlhophiso tse fapaneng, 'me kaofela li sebakeng sa bona sa marang-rang le ka litšobotsi tsa bona. Ona ke mokhoa o tloaelehileng ha sebaka sohle e le sa hau, 'me li-backups li entsoe ka meqhaka; ha e lumellane hantle.
Pele, a re shebeng data ea ho kenya. Re hloka:
- Scalability ho latela node e le 'ngoe kapa tse' maloa. Bakeng sa lisebelisoa tse kholo re sebelisa minio e le polokelo.
- Fumana ka mathata a ho etsa li-backups.
- U hloka ho boloka backup le bareki ba hau le/kapa le rona.
- Sebetsana le mathata kapele le ha bonolo.
- Bareki le lits'ebetso li fapane haholo ho tse ling - ho tšoana ho ke ke ha finyelloa.
- Lebelo la ho hlaphoheloa le lokela ho ba le fokolang maemong a mabeli: ho hlaphoheloa ka botlalo (koluoa), foldara e le 'ngoe e hlakotsoe ka phoso.
- Mosebetsi oa deduplication oa hlokahala.
Ho rarolla bothata ba ho laola li-backups, re kentse GitLab. Lintlha tse ling ka tackle.
Ha e le hantle, ha se rona ba pele ba ho rarolla bothata bo joalo, empa ho bonahala ho rona hore phihlelo ea rona e sebetsang, e boima e ka ba e thahasellisang 'me re itokiselitse ho e arolelana.
Kaha k'hamphani ea rona e na le leano la mohloli o bulehileng, re ne re batla tharollo ea mohloli o bulehileng. Ka lehlakoreng le leng, re arolelana lintlafatso tsa rona le ho li beha. Ka mohlala, ho GitHub ho na le
Lisebelisoa tsa bekapo
Re ile ra qala mokhoa oa rona oa ho batla tharollo ka ho khetha sesebelisoa sa ho etsa backup.
Hangata tar + gzip ha e sebetse hantle - lintlha li kopitsoa. Hangata keketseho e na le liphetoho tse fokolang haholo, 'me boitsebiso bo bongata ka har'a faele e le' ngoe boa phetoa.
Ho na le bothata bo bong - ho fokotseha ha polokelo ea data e ajoang. Re sebelisa minio mme data ea eona ha e na thuso. Kapa u ne u tlameha ho etsa bekapo ka minio ka boeona - e jarolle 'me u sebelise li-spacers tsohle pakeng tsa tsamaiso ea faele,' me, ha ho bohlokoa hakaalo, ho na le kotsi ea ho lebala ka tse ling tsa linkho le boitsebiso ba meta. Kapa sebelisa deduplication.
Lisebelisoa tsa bekapo tse nang le likopi li fumaneha mohloling o bulehileng (ho Habré ho ne ho le teng
Ho laola li-backups
Borg le Restic li ntle, empa ha ho sehlahisoa se nang le mochini oa taolo o bohareng. Bakeng sa morero oa tsamaiso le taolo, re khethile sesebelisoa seo re seng re se kentse tšebetsong, ntle le seo re ke keng ra nahana ka mosebetsi oa rona, ho kenyelletsa le automation - ena ke CI / CD e tsebahalang - GitLab.
Mohopolo o tjena: gitlab-runner e kentsoe sebakeng se seng le se seng se bolokang data ea Nextcloud. Semathi se tsamaisa sengoloa kemisong e lekola ts'ebetso ea bekapo, 'me se qala Borg kapa Restic.
Re fumane eng? Maikutlo ho tsoa ts'ebetsong, taolo e bonolo holim'a liphetoho, lintlha ha ho ka ba le phoso.
mona
Ha ho na mokhoa oa ho fetola nako ea CI / CD ho Gitlab API leha ho le joalo, empa e nyane. E tlameha ho eketseha, ho bolela 1d
.
GitLab, ka lehlohonolo, e ka qala eseng feela ho latela boitlamo, empa ho latela kemiso, sena ke sona seo re se hlokang.
Joale mabapi le script ea wrapper.
Re beha maemo a latelang bakeng sa script ena:
- E lokela ho qalisoa ka bobeli ke semathi le ka letsoho ho tloha ho console ka ts'ebetso e tšoanang.
- E tlameha ho ba le bahlokomeli ba liphoso:
- khoutu ea ho khutlisa.
- batla kgwele ka hara logi. Ka mohlala, ho rona phoso e ka 'na ea e-ba molaetsa oo lenaneo le sa o nkeng o le kotsi.
- E sebetsa e felile. Nako ea ho tsamaea e lokela ho ba e lekaneng.
- Re hloka log e qaqileng haholo. Empa feela ha ho ka ba le phoso.
- Litlhahlobo tse 'maloa le tsona li etsoa pele li qala.
- Libonase tse nyane bakeng sa boiketlo tseo re li fumaneng li le molemo nakong ea ts'ehetso:
- Qalo le qetello li tlalehiloe ho syslog ea mochini oa lehae. Sena se thusa ho hokahanya liphoso tsa sistimi le ts'ebetso ea backup.
- Karolo ea tlaleho ea phoso, haeba e teng, e hlahisoa ho stdout, log eohle e ngoletsoe faele e arohaneng. Ho bonolo ho sheba CI hang-hang le ho lekola phoso haeba e le nyane.
- Mekhoa ea ho lokisa liphoso.
Log e felletseng e bolokoa e le ntho ea maiketsetso ho GitLab; haeba ho se na phoso, log e hlakotsoe. Re ngola script ka bash.
Re tla thabela ho nahana ka litlhahiso le maikutlo mabapi le mohloli o bulehileng - amohelehile.
Joang mosebetsing ona
Semathi se nang le executor ea Bash se hlahisoa sebakeng sa polokelo. Ho ea ka kemiso, mosebetsi oa CI/CD o qalisoa ka turnip e khethehileng. Semathi se hlahisa sengoloa sa bokahohleng bakeng sa mesebetsi e joalo, se lekola bonnete ba polokelo ea polokelo, lintlha tsa ho hloa le tsohle tseo re li batlang, ebe li tšehetsa le ho hloekisa ea khale. Backup e phethiloeng ka boeona e romelloa ho S3.
Re sebetsa ho latela morero ona - ke mofani oa AWS oa kantle kapa se tšoanang le Serussia (e potlakile mme data ha e tlohe Russia Federation). Kapa re kenya sehlopha se arohaneng sa minio bakeng sa moreki sebakeng sa hae sa marang-rang bakeng sa merero ena. Hangata re etsa sena ka mabaka a ts'ireletso, ha moreki a sa batle hore data e tlohe potoloho ea bona ho hang.
Ha rea sebelisa tšobotsi ea ho romella bekapo ka ssh. Sena ha se kenye ts'ireletso, 'me matla a marang-rang a mofani oa S3 a phahame haholo ho feta mochine oa rona o le mong oa ssh.
E le ho sireletsa mochine oa hau oa sebakeng seo ho tloha ho mohatelli, kaha a ka hlakola data ho S3, o tlameha ho nolofalletsa phetolelo.
The bekapo kamehla encrypts bekapo.
Borg e na le mokhoa o sa ngolisoang none
, empa ka matla ha re khothaletse ho e bulela. Ka mokhoa ona, ho ke ke ha e-ba le encryption feela, empa checksum ea se ngotsoeng ha e baloe, ho bolelang hore botšepehi bo ka hlahlojoa feela ka tsela e sa tobang, ho sebelisa li-index.
Sehlophisi se arohaneng se hlahloba li-backups bakeng sa botšepehi ba li-index le litaba. Cheke e lieha ebile e telele, kahoo re e tsamaisa ka thoko hang ka khoeli. E ka nka matsatsi a 'maloa.
Balame ka Serussia
Mesebetsi ea sehlooho
prepare
koetlisotestcheck
ho itokisetsa ho hlahlobamaincommand
sehlopha sa mantlhaforcepostscript
mosebetsi o etsoang qetellong kapa ka phoso. Re e sebelisa ho theola karohano.
Mesebetsi ea litšebeletso
cleanup
Re ngola liphoso kapa re hlakola faele ea log.checklog
Hlalosa logi bakeng sa ho hlaha ha mola o nang le phoso.ret
tsoa ho mohlokomedi.checktimeout
hlahloba nako.
tikoloho e khahlang
VERBOSE=1
Re hlahisa liphoso skrineng hang-hang (stdout).SAVELOGSONSUCCES=1
boloka log holim'a katleho.INIT_REPO_IF_NOT_EXIST=1
Etsa sebaka sa polokelo haeba se le sieo. E emisitsoe ka ho sa feleng.TIMEOUT
nako e telele bakeng sa ts'ebetso e kholo. U ka e beha joalo ka 'm', 'h' kapa 'd' qetellong.
Mokhoa oa ho boloka likopi tsa khale. Ea kamehla:
KEEP_DAILY=7
KEEP_WEEKLY=4
KEEP_MONTHLY=6
Liphetoho tse ka hare ho script
ERROR_STRING
— khoele bakeng sa cheke ho log bakeng sa phoso.EXTRACT_ERROR_STRING
- polelo bakeng sa khoele ea pontšo haeba phoso.KILL_TIMEOUT_SIGNAL
- lets'oao la ho bolaea haeba nako e felile.TAIL
- ke likhoele tse kae tse nang le liphoso skrineng.COLORMSG
— mmala wa molaetsa (tshehla kamehla).
Script eo, e bitsoang wordpress, e na le lebitso la maemo, leqheka la eona ke hore e boetse e tšehetsa database ea mysql. Sena se bolela hore e ka sebelisoa bakeng sa lits'ebetso tsa Nexcloud tsa node e le 'ngoe, moo o ka boela oa boloka database. Ntho e bonolo ha se feela hore ntho e 'ngoe le e' ngoe e sebakeng se le seng, empa hape le likahare tsa database li haufi le litaba tsa lifaele, kaha phapang ea nako e nyenyane.
Restic vs Borg
Ho boetse ho na le papiso lipakeng tsa Borg le Restic
Mekhoa ea rona ea khetho, ho kenyelletsa le e seng e boletsoe (ho fokotsa, ho hlaphoheloa kapele, joalo-joalo):
- Ho hanyetsa mosebetsi o sa phethoang. Hlahloba ho bolaea -9.
- Boholo ho disk.
- Tlhokahalo ea lisebelisoa (CPU, memori).
- Boholo ba li-blobs tse bolokiloeng.
- Ho sebetsa le S3.
- Ho hlahloba botšepehi.
Bakeng sa tlhahlobo, re nkile moreki a le mong ea nang le data ea 'nete le boholo ba 1,6 TB.
Maemo.
Borg ha a tsebe ho sebetsa ka ho toba le S3, 'me re mounted disk e le fuse, ka tsela
Li-Goofys li sebetsa ka potlako le hantle, 'me li teng
Ho fokotsa tšusumetso ea marang-rang, re sebelisitse mofani oa lehae - Yandex Cloud.
Liphetho tsa liteko tsa papiso.
- Kill -9 ka ho qala bocha ka bobeli li atlehile.
- Boholo ho disk. Borg e ka hatella, kahoo liphetho li lebeletsoe.
Backuper
boholo
borg
562GB
Thibela
628GB
- Ka CPU
Borg ka boeona e ja hanyane, ka khatello ea kamehla, empa e tlameha ho hlahlojoa hammoho le ts'ebetso ea goofys. Ka kakaretso, lia bapisoa 'me li sebelisa li-cores tse ka bang 1,2 mochining o tšoanang oa tlhahlobo. - Mohopolo. Restic e ka ba 0,5GB, Borg e batla e le 200MB. Empa sena sohle ha se letho ha se bapisoa le cache ea faele ea sistimi. Kahoo ho eletsoa ho abela memori e eketsehileng.
- Phapang ea boholo ba blob e ne e hlolla.
Backuper
boholo
borg
hoo e ka bang 500MB
Thibela
hoo e ka bang 5MB
- Phihlelo ea Restic's S3 e ntle haholo. Ho sebetsa le Borg ka li-goofys ha ho phahamise lipotso, empa ho hlokometsoe hore ho bohlokoa ho etsa umount ka mor'a hore bekapo e phetheloe ho hlophisa cache ka botlalo. Ntho e ikhethang ea S3 ke hore li-chunks tse tlase-tlase li ke ke tsa romelloa ka nkhong, ho bolelang hore data e sa tlatsoang ka botlalo e baka tšenyo e kholo.
- Tlhahlobo ea botšepehi e sebetsa hantle maemong ao ka bobeli, empa lebelo le fapane haholo.
Restic Lihora tsa 3,5.
Borg, e nang le cache ea faele ea 100GB SSD - Lihora tsa 5.Hoo e ka bang sephetho se tšoanang sa lebelo haeba data e le disk ea lehae.
Borg e bala ka kotloloho ho tsoa ho S3 ntle le cache Lihora tsa 33. E telele haholo.
Taba ea bohlokoa ke hore Borg e ka hatella 'me e na le li-blobs tse kholoanyane - e leng se etsang hore ts'ebetso ea polokelo le GET/PUT ho S3 e be theko e tlase. Empa sena se tla ka litšenyehelo tsa netefatso e rarahaneng le e liehang ho feta. Mabapi le lebelo la ho hlaphoheloa, ha rea ka ra hlokomela phapang leha e le efe. Restic e nka li-backups tse latelang (kamora ea pele) nako e teletsana, empa eseng haholo.
Qetellong, khethong e ne e le boholo ba sechaba.
'Me re khetha borg.
Mantsoe a seng makae ka compression
Borg e na le algorithm e ncha e ntle ea compression sebakeng sa eona sa sesole - zstd. Boleng ba compression ha bo bobe ho feta gzip, empa bo potlakile haholo. E ka bapisoang ka lebelo le lz4 ea kamehla.
Mohlala, thotobolo ea database ea MySQL e hatelloa habeli ho feta lz4 ka lebelo le ts'oanang. Leha ho le joalo, phihlelo e nang le data ea sebele e bontša hore ho na le phapang e fokolang haholo ka tekanyo ea compression ea node ea Nextcloud.
Borg e na le mokhoa oa ho hatella oa bonase - haeba faele e na le entropy e phahameng, joale compression ha e sebelisoe ho hang, e leng ho eketsang lebelo. E nolofalitsoe ke khetho ha u theha
-C auto,zstd
bakeng sa algorithm ea zstd
Kahoo ka khetho ena, ha e bapisoa le compression ea kamehla, re na le eona
560Gb le 562Gb ka ho latellana. Lintlha tse tsoang mohlaleng o ka holimo, e-re ke u hopotse, ntle le ho hatella sephetho ke 628Gb. Sephetho sa phapang ea 2GB se ile sa re makatsa, empa re ne re nahana hore re tla e khetha. auto,zstd
.
Mokhoa oa ho netefatsa bekapo
Ho ea ka kemiso, mochine oa sebele o qalisoa ka ho toba ho mofani kapa ho tsoa ho mofani, e leng ho fokotsang mojaro oa marang-rang haholo. Bonyane e theko e tlaase ho feta ho e phahamisa le ho khanna sephethephethe.
goofys --cache "--free:5%:/mnt/cache" -o allow_other --endpoint https://storage.yandexcloud.net --file-mode=0666 --dir-mode=0777 xxxxxxx.com /mnt/goofys
export BORG_PASSCOMMAND="cat /home/borg/.borg-passphrase"
borg list /mnt/goofys/borg1/
borg check --debug -p --verify-data /mnt/goofys/borg1/
Re sebelisa morero o tšoanang, re hlahloba lifaele ka antivirus (kamora 'nete). Ntle le moo, basebelisi ba kenya lintho tse fapaneng ho Nextcloud mme ha se motho e mong le e mong ea nang le antivirus. Ho etsa litlhahlobo ka nako ea ho tšela ho nka nako e ngata haholo mme ho sitisa khoebo.
Scalability e finyelloa ka ho matha limathi libakeng tse fapaneng tse nang le li-tag tse fapaneng.
Tekolo ea rona e bokella li-backups ka GitLab API ka fensetere e le 'ngoe; ha ho hlokahala, mathata a bonoa habonolo mme a fumaneha habonolo feela.
fihlela qeto e
Ka lebaka leo, re tseba hantle hore re etsa li-backups, hore li-backups tsa rona li nepahetse, mathata a hlahang ka bona a nka nako e nyane mme a rarolloa boemong ba mookameli oa mosebetsi. Li-backups li nka sebaka se senyenyane haholo ha se bapisoa le tar.gz kapa Bacula.
Source: www.habr.com