ãã®ãã¿ã³ã¯ãäŒèšããŒã¿ããŒã¹ãæäœããããã«ãåºçæè¡1C Freshãæ°å¹Žé䜿çšããŠããŸãã æè¿ãç§ãã¡ã®å¶æ¥çµéšã«ã€ããŠ
æžããŸãã ã ç§ãã¡ãDBMSãšããŠäœ¿çšããPostgreSQLã¯ãé¢å¿ãšå€ãã®è³ªåãåŒãèµ·ãããŸãããããã§ãç§ãã¡ã¯ããã«ã€ããŠããã«è©³ãã話ãããšã«ããŸããã

ã¯ããã«
æåã¯ãåŸæ¥ã®1C MS SQL ServerãDBMSãšããŠäœ¿çšããŸããã Freshãæ°Žå¹³ã¹ã±ãŒãªã³ã°ã®å¿
èŠæ§ã«æé·ãããšãçµæžçãªçç±ããããã€ã¯ããœããã®è£œåã«ä»£ãããã®ãå¿
èŠã§ããããšãæããã«ãªããŸããã ãã®åŸãç¹ã«1Cã®å°é家ã1C Freshã®ã€ã³ã¹ããŒã«ã§ã®äœ¿çšãæšå¥šããŠãããããPostgreSQLã泚ææ·±ãæ€èšããŸããã æšæºæäœã®ããã©ãŒãã³ã¹ãç°¡åã«æ¯èŒãããšãããçŽ600ã®ãšãªã¢ãå«ããšã³ã¿ãŒãã©ã€ãºã¢ã«ãŠã³ãã£ã³ã°ïŒBPïŒ3.0ããŒã¿ããŒã¹ãåæ§ã«æ©èœããããšãããããŸããã ãã®æç¹ã§ãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãšDBMSãåããLinuxäžã®è€æ°ã®ä»®æ³ãã·ã³ã®ã¹ããŒã ã«åãæ¿ããŸããã ããã«ã€ããŠã¯
èšäºã§å°ã説æããŠã
ãŸã ã ããããããŸããŸãªçç±ã§ã1幎åŸã«Windowsäžã®ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãšLinuxäžã®ããã€ãã®æ
å ±ããŒã¹ïŒISïŒãåããDBMSã®ã¹ããŒã ã«ãªããŸããã ããããLinuxäžã®ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã«åé¡ããªãã£ãããšããããŠä¿èšŒããŸããå€æŽã¯ä»ã®æ©èœã®äžéšã«é¢é£ããŠããŸãã
ãã®ãããPostgreSQLãããŒã¿ããŒã¹ãµãŒããŒãšããŠéžæãããŸããã ãã®èšäºã§ã¯ãButtonãã©ã®ããã«ããŠãäºãã«åéãäœããã©ã®ããã«æ©èœããã®ãã説æããŸãã
æåã®ã€ã³ã¹ããŒã«ã§ã¯ã1CãæäŸããæ¢è£œã®PostgreSQL 8.4.3-3.1C debããã±ãŒãžã䜿çšããŸãããããã¯ã䜿çšãæšå¥šãããããŒãžã§ã³ã§ãã£ãããã§ãã ããããæ®å¿µãªããšã«ãDebian Wheezyã«ã€ã³ã¹ããŒã«ãããšãã«äŸåé¢ä¿ã®åé¡ãçºçããŸãããããã¯ãåœæã®apache2.2ããã±ãŒãžãå«ãæ§å®å®ãªãªãŒã¹ã§ããïŒ1Cã§ã¯apache2.4ã®ãµããŒãã¯ãããŸããã§ããïŒã ãã®æç¹ã§ã¯ãDBMSãšã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãåããã¹ãã«ä¿æããŠãããããoldstableã䜿çšããå¿
èŠããããŸããã ãã®ããŒãžã§ã³ã®PostgreSQLãã€ã³ã¹ããŒã«ããã«ã¯ãDebian Jessieã®libc6ãå¿
èŠã§ãã ãã®ãããªã¯ãã¹ãªãŒããŒã®çµæãšããŠãNFSã¯ã©ã€ã¢ã³ããã€ã³ã¹ããŒã«ããŠãäœæ¥ã«å¿
èŠãªäŸåé¢ä¿ãå£ãããç¹å¥ãªããšã¯äœãã§ããªãã·ã¹ãã ãäœæãããŸããã ããããå¥ã®Linuxãã£ã¹ããªãã¥ãŒã·ã§ã³ã«åãæ¿ããããšã¯ãæŠç¥çã«ã¯æçã§ã¯ãããŸããã§ããã COMæ¥ç¶ãä»ããŠã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãšããåããããã€ã¯ããµãŒãã¹ïŒç°¡åã«ããããã«
robotsãšåŒã³ãŸãïŒãç©æ¥µçã«äœ¿çšãå§ãããšããããŒã¿ããŒã¹ã«ãã³ã°ããŠããæ¥ç¶ãçŸãå§ããã¡ã¢ãªãªãŒã¯ã«ã€ãªãããŸããã ãã®åé¡ã¯PostgreSQLã®æ°ããããŒãžã§ã³ãžã®ç§»è¡ã«ãã£ãŠè§£æ±ºãããŸãããããã®æç¹ã§1Cã¯ãã®ããŒãžã§ã³ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ããŸã ãªãªãŒã¹ããŠããŸããã§ããã
Postgres ProfessionalãªããžããªããPostgreSQL 9.6ãã«ãã䜿çšããããšã«åãæ¿ãããšãã匷ãææã決å®ããŸããã äŸåé¢ä¿ãšã¡ã¢ãªãªãŒã¯ã®åé¡ã¯åãæ®ãããã¹ã±ãŒã©ããªãã£ãè² è·åæ£ãããã³å¯çšæ§æéã®å¢å ã®åé¡ã«å¯ŸåŠãå§ããŸããã çŸåšã1Cã®å°é家ã¯ãPostgreSQLãã«ãïŒææ°ã®9.6.3ïŒãæ¢ã«æŽæ°ããŠããŸããããã¯éåžžã«ææ°ã®ããŒãžã§ã³ã§ããã䜿çšããæ¹ãä¿¡é Œæ§ãé«ããªã£ãŠããŸãã 1Cããã®æ
å ±ã«ãããšãæ°ããã¢ã»ã³ããªã¯ããã«çºè¡ãããŸãã
çŸåšãDebian Jessieã«åãçµãã§ããããã®ãã£ã¹ããªãã¥ãŒã·ã§ã³å
ã®ãã¹ãŠã®åé¡ã«åŒãç¶ã察åŠããŸãã
Zabbixã䜿çšããŠã·ã¹ãã ã®ç¶æ
ãç£èŠããŸãã次ã®ããã«ãªããŸãã

ãã£ãŒãã«ã¯ãŸã å€ããµãŒããŒããããŸããã補åã¯ãã§ã«ãã£ãŒãããPostgreSQL 9.6ã«è»¢éãããŠããŸãã
ãŸãããã©ã³ã¶ã¯ã·ã§ã³ã®æ°ã枬å®ããŸãã

ãããŠãè¿œå ãå€æŽãåé€ãããè¡ã®æ°ïŒ

DBMSã®éçšã§ã¯ãããã©ãŒãã³ã¹ãæ
éã«ç£èŠãã以äžã®ãã¹ãŠã®èšå®ã¯å®éã®éçšãšèŠ³å¯ããæ£ç¢ºã«çãŸããŸããã çŸåšã2ã€ã®ã¡ã€ã³DBMSãµãŒããŒããããããããã«8ã³ã¢ãš40 GBã®ã¡ã¢ãªãå²ãåœãŠãããŠããŸãã ããŒã¿ããŒã¹ã®ãããã£ã¹ã¯ã¯SSDã«ãããŸãã 7 IS BP 3.0ãããŒã¿å
±æã¢ãŒããæå¹ã«ããŠãµãŒãã¹ãæäŸããã®ã«ååãªãããã®ãªãœãŒã¹ããããŸãïŒ1ã€ã®ããŒã¿ããŒã¹ã«200ã800ãšãªã¢ïŒã ãã®æ§æã«ãããäžæ¹ã§ã¯ãªãœãŒã¹ãé©åã«å©çšããä»æ¹ã§ã¯æé·ãšããŒã¯è² è·ã«å¯ŸããŠååãªããŒãžã³ãéæããŸããã
PostgreSQLã®ã¯ã©ã¹ã¿ãŒ
1å°ã®ä»®æ³ãã·ã³ã«è€æ°ã®æ
å ±ã»ãã¥ãªãã£ã·ã¹ãã ãé
眮ãããšã管çã®è€éãã«çŽé¢ããŸããã åISã¯ãµãŒããŒèšå®ãå¿
èŠãšããDBMSãã·ã£ããããŠã³ãããšãã¹ãŠã®ããŒã¿ããŒã¹ãåæãããWALã¢ãŒã«ã€ãã¯ãŸã£ããæå³ããããŸããããã®ã¡ã«ããºã ã«ãã埩å
ã¯ãµãŒããŒäžã®ãã¹ãŠã®ããŒã¿ããŒã¹ãããŒã«ããã¯ããããã§ãã
ãŸããåããŒã¿ããŒã¹ãåå¥ã®PostgreSQLã¯ã©ã¹ã¿ãŒã«é
眮ããŸãããããã«ãããããŒã¿ããŒã¹ãæè»ã«ç®¡çããåããã¹ãäžã§PostgreSQLã®ç¬ç«ããã³ããŒãããã€ãå®è¡ããã¹ããªãŒãã³ã°ã¬ããªã±ãŒã·ã§ã³ãWALã¢ãŒã«ã€ããããã³ç¹å®ã®æç¹ïŒPiTRïŒã§ã®ããŒã¿ãªã«ããªãæ§æã§ããŸããã
å®éã«ã¯ãå±éããã»ã¹ã¯æ¬¡ã®ããã«ãªããŸãã
Debian 8 Jessieãã€ã³ã¹ããŒã«ããããã·ã³ããããPostgres Professionalãªããžããªããã®PostgreSQL 9.6ããã§ã«ã€ã³ã¹ããŒã«ãããŠããŸãã
æ°ããã¯ã©ã¹ã¿ãŒãäœæããŸãããïŒ
ãã®åŸãdb_01ãã£ã¬ã¯ããªã/ããŒã¿ããŒã¹ã«äœæãããããŒã¿ãã¡ã€ã«ãš/etc/postgresql/9.6/db_01/ã®èšå®ãã¡ã€ã«ãå«ãŸããŸãã ã¯ã©ã¹ã¿ãŒã¯PostgreSQLã®ããŒãžã§ã³9.6ã䜿çšãããã®ã€ã³ã¹ã¿ã³ã¹ã¯ããŒã5433ã§èµ·åãããŸããã¯ã©ã¹ã¿ãŒãå®è¡ãããŠããªããããããã¯ã³ãã³ãã§ç¢ºèªã§ããŸãã
ã¯ã©ã¹ã¿ãŒæ§æãã¡ã€ã«postgresql.confã«å€æŽãå ããŸããããããã®ãã©ã¡ãŒã¿ãŒå€ã¯
PgTuneã䜿çšããŠååŸã§ããŸãã ãã®ãã©ã¡ãŒã¿ãŒãŸãã¯ãã®ãã©ã¡ãŒã¿ãŒã®è²¬ä»»ã¯
ããã¥ã¡ã³ãã«è©³çŽ°ã«èšèŒãããŠããŸãããPgTuneãèæ
®ããªããã©ã¡ãŒã¿ãŒã®ã¿ã説æããŸãã
max_parallel_workers_per_gatherã¯ãããŒãã«ã®ã·ãŒã±ã³ã·ã£ã«èªã¿åãã«äžŠè¡ããŠäœ¿çšãããã¯ãŒã«ãŒã®æ°ã«çããå€ãèšå®ããã®ã«åœ¹ç«ã¡ãŸãã ããã«ãããå€ãã®èªã¿åãæäœãé«éåãããŸãã ãã¹ãã®ã³ã¢æ°ã«åºã¥ããŠããã®æ°ãè¶
ããŠãããã©ãŒãã³ã¹ã¯åäžããŸããããéã«äœäžãçºçããŸãã
max_locks_per_transactionã¯ããã©ã«ãã§64ã§ãããæäœäžã«å€ã¯300ã«åŒãäžããããŸããããã®ãã©ã¡ãŒã¿ãŒã¯ããã©ã³ã¶ã¯ã·ã§ã³ããšã«å²ãåœãŠããããªããžã§ã¯ãã®ããã¯ã®æ°ãå²ãåœãŠãŸãã ã¹ã¬ãŒããµãŒããŒã䜿çšããå Žåããã®å€ã¯ãã¹ã¿ãŒãµãŒããŒã®å€ä»¥äžã«ããå¿
èŠããããŸãã
ãã¡ã€ã«ã·ã¹ãã ã®å¹çãååã§ãªãå Žåã¯ãpg_xlogãå¥ã®ãªããžããªã«é
眮ããŸãã
ããšãã°ã1ã€ã®ã¯ã©ã¹ã¿ãŒã®æ§æãã¡ã€ã«ïŒ
æ°ãã«äœæãããã¯ã©ã¹ã¿ãŒãèµ·åãã䜿çšãéå§ããŸãã
1C EnterpriseãµãŒããŒã®ç®¡çã®ã¹ãããã€ã³ã§éæšæºããŒããä»ããŠæ¥ç¶ããã«ã¯ããããŒã¿ããŒã¹ãµãŒããŒããã£ãŒã«ãã®æ
å ±ããŒã¹ã®ãã©ã¡ãŒã¿ãŒã§æå®ããŸãã
hostname port=5433
ãŸããåºå°ã®å®æçãªã¡ã³ããã³ã¹ãå¿ããªãããšãéèŠã§ãã VACUUMãšANALYZEã¯éåžžã«äŸ¿å©ã§ãã
ã¹ããªãŒãã³ã°è€è£œ
ã¹ã¿ã³ãã€ãµãŒããŒã®å®è£
ã¯éåžžã«ç°¡åã§ãã
ãã¹ã¿ãŒãµãŒããŒãã»ããã¢ãããã
èšå®ãã¡ã€ã«postgresql.confãå€æŽããŸããæ°ããã¯ã©ã¹ã¿ãŒãèšå®ããŠããããšãå¿ããã«ããã¡ã€ã«ã¯/etc/postgresql/9.6/db_01/ã«ãããŸãã
listen_addresses = '*'
wal_level = replica
max_wal_senders = 3
wal_keep_segments = 128
æ°ããã¬ããªã«ããŒã«ãäœæããŸãã
postgres=
pg_hba.confãã¡ã€ã«ãä¿®æ£ããŠãã¹ã¬ãŒããµãŒããŒãžã®æ¥ç¶ãèš±å¯ããŸã
ãã®åŸãã¯ã©ã¹ã¿ãŒãåèµ·åããå¿
èŠããããŸãã
次ã«ãã¹ã¬ãŒããµãŒããŒãã»ããã¢ããããŸãã ãã®æ§æããŠã£ã¶ãŒããšåäžã§ãããåãååã®ã¯ã©ã¹ã¿ãŒãäœæãããããŒã¿ãã¡ã€ã«ããŠã£ã¶ãŒããšåæ§ã«ããŠã³ãããããã£ã¬ã¯ããªã«ãããšä»®å®ããŸãã ã¹ã¬ãŒãäžã®ã¯ã©ã¹ã¿ãŒãåæ¢ããŸãããïŒ
postgresql.confãã¡ã€ã«ã§ãã¹ã¿ã³ãã€ã¢ãŒããæå¹ã«ããŸãã
hot_standby = on
/ databases / db_01 / slaveã®ããŒã¿ãã¡ã€ã«ãå«ããã£ã¬ã¯ããªãã¯ãªã¢ããã¹ã¬ãŒãã®ãŠã£ã¶ãŒãã®çŸåšã®ç¶æ
ã®ã³ããŒãäœæããŸãã
recovery.confãã¡ã€ã«ãäœæãããŸããå¿
èŠã«å¿ããŠä¿®æ£ããŠãã ããã
standby_mode = 'on'
primary_conninfo = 'user=replica password=MyBestPassword host=master.domain.local port=5433 sslmode=prefer sslcompression=1 krbsrvname=postgres'
ãã®å Žåããã§ã€ã«ãªãŒããŒã¯è¡ãããŸãããããã«ããããã¹ã¿ãŒã®åœ¹å²ãèªåçã«åé€ãããŸãã ã¬ããªã«ããŠã£ã¶ãŒããšããŠåäœãéå§ããã«ã¯ãrecovery.confãã¡ã€ã«ã®ååãå€æŽããŠã¯ã©ã¹ã¿ãŒãåèµ·åããã ãã§ãã
ã¹ã¬ãŒãã¯ã©ã¹ã¿ãå®è¡ããŸãã
è€è£œãé²è¡äžã§ããããšã確èªããŸãã ãŠã£ã¶ãŒãã«wal senderããã»ã¹ã衚瀺ãããã¹ã¬ãŒãã«wal receiverã衚瀺ãããŸãã ãŠã£ã¶ãŒããå®è¡ãããšãã¬ããªã±ãŒã·ã§ã³ã«é¢ãã詳现æ
å ±ãååŸã§ããŸãã
SELECT *,pg_xlog_location_diff(s.sent_location,s.replay_location) byte_lag FROM pg_stat_replication s;
ã¹ã¬ãŒãã§ã¯ãæåŸã®è€è£œããã€è¡ããããã瀺ãå€ããã©ãããšãã§ããŸãã
SELECT now()-pg_last_xact_replay_timestamp();
WALã®ããã¯ã¢ãããšã¢ãŒã«ã€ã
æåã¯ã1æ¥1åpg_dumpã䜿çšããŠããã¯ã¢ãããå®è¡ããŸãããããã¯ã1C Freshã®ãšãªã¢ãããã¯ã¢ããããããã®å
éšã¡ã«ããºã ãšãšãã«ã蚱容å¯èœãªããã¯ã¢ããã¹ããŒã ãæäŸããŸããã ããããæåŸã®ããã¯ã¢ããã®ç¬éãšäºæ
ã®ç¬éã®éã«å€ãã®äœæ¥ãè¡ãããç¶æ³ãæã
ãããŸãã ãããã®å€æŽã倱ããªãããã«ãWALãã¡ã€ã«ã®ã¢ãŒã«ã€ãã圹ç«ã¡ãŸãã
WALã¢ãŒã«ã€ããæå¹ã«ããã«ã¯ã3ã€ã®æ¡ä»¶ãæºããããŠããå¿
èŠããããŸãã
Wal_levelã¯replica以äžã«èšå®ããå¿
èŠããããŸã
ãã©ã¡ãŒã¿ãŒarchive_mode = on
Archive_commandã¯ãã·ã§ã«ã³ãã³ããå®çŸ©ããŸããäŸïŒ
archive_command = 'test ! -f /wal_backup/db_01/%f && cp %p /wal_backup/db_01/%f'
ãããã£ãŠãã¢ãŒã«ã€ããããWALã»ã°ã¡ã³ãããã£ã¬ã¯ããª/ wal_backup / db_01 /ã«ã³ããŒããŸã
å€æŽãæå¹ã«ããã«ã¯ãã¯ã©ã¹ã¿ãŒã®åèµ·åãå¿
èŠã§ãã ãããã£ãŠã次ã®WALã»ã°ã¡ã³ãã®æºåãã§ãããã³ããŒãããŸããããªã«ããªäžã«äœ¿çšããã«ã¯ãã¢ãŒã«ã€ããããWALã»ã°ã¡ã³ãããã®å€æŽãé©çšãããã¯ã©ã¹ã¿ãŒã®åºæ¬ã³ããŒãå¿
èŠã§ãã ç°¡åãªã¹ã¯ãªããã䜿çšããŠãåºæ¬çãªã³ããŒãäœæããWALãã¡ã€ã«ã®æšªã«é
眮ããŸãã
äžå®æéïŒPiTRïŒã®ããã¯ã¢ããã埩å
ããããã«ãã¯ã©ã¹ã¿ãŒãåæ¢ããã³ã³ãã³ããåé€ããŸã
次ã«ãããŒã¹ã³ããŒã解åããæš©éã確èªãã次ã®å
容ã§recovery.confãã¡ã€ã«ãç·šéïŒãŸãã¯äœæïŒããŸãã
restore_command = 'cp /wal_backup/db_01/%f %p'
recovery_target_time = '2017-06-12 21:33:00 MSK'
recovery_target_inclusive = true
ãããã£ãŠã2017-06-12 21:33:00 MSKã®æç¹ã§ããŒã¿ã埩å
ãããã¬ãŒã¯ãã€ã³ãã¯ãã®æéã«éããçŽåŸã«ãªããŸãã
ãããã«
æŠéæäœã§ã¯ã1C FreshãšPostgreSQLã®æã䟡å€ãããããšã蚌æãããŸããããã¡ããããã¹ãŠãããã«ã¹ã ãŒãºã«é²ãããã§ã¯ãããŸããããç§ãã¡ã¯ãããè¡ããŸããã DBMSã¯ãçŽ100人ã®ãŠãŒã¶ãŒãå€ãã®ããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ããã³ããããã«ãã£ãŠçæãããè² è·ã®äžã§æ£åžžã«æ©èœããæŒå€ãåããæœåºãããŠã³ããŒãããŠå®è¡ããä»ã®ããŒã«ããããã¥ã¡ã³ããäœæããæ°åã®é åã®ç¶æ
ãåæããŸãã
1C FreshãšPostgreSQLã®ä¿¡é Œæ§ã«é¢ããåçïŒ

350 GBãè¶
ããæ
å ±ããŒã¿ããŒã¹ãããããã°ããããšæããæé·ããçºå±ããŠããŸãã ç§ãã¡ãããªãã«äœãé¡ã£ãŠããŸãïŒ