On 23.12.2011, at 11:44, Margus Värton wrote: > 22.12.2011 17:03, Jaak Laineste kirjutas: >> >> - proovin ka osm2pgsql baasi uuendada >> http://wiki.openstreetmap.org/wiki/DE:Minutely_Mapnik skriptiga (load-next), >> esimene katse oli üsna nigel - 5 min uuendusi loeti 55 minutit. Aga serveris >> käib ka tilede prerenderdus, mis teeb kõike aeglasemaks. >> > Ehk on hea plaan testserverile rohkem mälu hambusse anda ning osa tegevusi > sinna viia?
Kui uuenduse tükid on suuremad, siis on uuendus parem - 6 tunni kaupa lisades teeb selle 4-5 tunniga ära. Umbes jaanuari lõpuks võiks seega baas reaalajale järgi jõudma hakata. Hetkel võib siis öelda et meil on olemas Monthly Mapnik :) Osm2pgsql vajab planeedi jaoks umbes 16G mälu ja 300G HDD-d. Kui see üks kord ära teha, siis tuleb andmed veel saada livemasinasse. Selleks on plaan mul katsetada Postgres 9 master-slave replikatsiooni seadistust. Teen livemasinast postgres dumpi, tõmban testmasinasse; selleks pole sinna mälu juurde vaja. Siis panen testmasina postgres masteriks. Teise (nt live) masinasse panen postgres slave, mis tuleb sünkida masteriga (logide transport käima). Siis panen testmasina minutelyMapnik uuendusi lugema, selleks peaks ka 1GB RAM-ist piisama. Samal ajal hakkab ta replikeerima andmeid oma slave-desse, mis saavad siis samuti olema uuendatud samavõrra nagu master. Mis on siin probleemid: 1. Esialgne sünk, slave ühendamine. Alghetkel peavad olema master ja slave täpselt samas seisus. Võibolla saab master-i panna tegema näiteks nädalaseid full-dumpe, ja on võimeline hoidma changelogisid vähemalt 2 nädalat, siis võibolla saab tekitada lahendusi kus slave saab põhimõtteliselt suvalisel hetkel liituda. 2. Millist replikatsiooni kasutada. Variante on mitu: a) Postgres 9.0-ist on olemas sisseehitatud master-slave replikatsioon (streaming replication) mis toimub madalal tasemel WAL-ide abil. See peaks olema minimaalne overhead masterile. Piirang on et master ja slave peavad olema binaar-ühilduvad, näiteks mõlemad näiteks 64-bit linuxid täpselt sama postgres versiooniga. Transporditakse ühtpidi liigseid andmeid - näiteks impordi ajal kasutatavaid ajutisi tabeleid ja slim-modes kasutatavat planet_osm_ways_nodes tabelit (mis on 1/3 kogu baasisuurusest) pole renderduseks slavedel enam tarvis, kuid madalal tasemel replikatsioonis ei saa öelda et neid tabeleid mitte üle viia. Teisalt transporditakse (oletatavasti ??) ka valmisolevaid indekseid, mille moodustamine/uuendamine võtab osm2pgsql töös muidu vabalt pool ajast. b) Slony (või Londiste vms) stiilis kõrgemal tasemel (SQL/triggerite abil tehtud) replikatsioon. Eelis on, et vaja pole binaarühilduvust (võib linux->win näiteks tõsta, võivad eri postgres versioonid olla), samuti peaks olema sünkimise ajahetke valik paindlikum ja saab valida täpselt mis tabeleid tõstetakse üle. Puuduseks on, et kulukas indeksi loomise/uuendamise töö tuleb igas slaves eraldi teha (SQL tasemel ei saa ju triggereid replikeerida?). Samuti on lisakoormus masterile (10-30% väidetavalt). Küsimus on, et ta on küll madalama tasemega kui OSM XML-failide (minutelyMapnik praegune standardlahendus) liigutamine, aga äkki ei annagi eriti effekti. c) kombinatsioon: näiteks meie test->live serveri vahel slony, mis on selektiivsem; ja sealt edasi WAL streaming. Või vastupidi. 3. Ühine probleem on et mistahes postgres replikatsiooni ülespanek ja läbikatsetamine gigasuure baasiga on mittetriviaalne töö, mille kohta juhendeid ei ole ülemäära palju. Kes võiks supportida? Ainus, kellega ma olen pisut isiklikult vestelnud sellest on Steve Singer (http://www.fosslc.org/drupal/content/postgis-replication nt), kes on tegelikult Slony arendajaid ja asja tippspetse, aga kas ta aidata saab/viitsib pole kindel. Jaak _______________________________________________ Talk-ee mailing list Talk-ee@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-ee