рд╣реЙрд▓реИрдВрдб - рд╕рд┐рд░рджрд░реНрдж рдХреЗ рдмрд┐рдирд╛ MySQL / PostgreSQL рдмреИрдХрдЕрдк

рд╣реЙрд▓реИрдВрдб рдХрд╛ рд▓реЛрдЧреЛ рдПрдХ рджрд┐рди рдореИрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдмреИрдХрдЕрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдердХ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╡реЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ рдпрд╛ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХрд╣реАрдВ рдкрд╛рдП рдЧрдП рдереЗред рдЙрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐ рд╕рдордп рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ (рдЗрдВрдЬреАрдирд┐рдпрд░, рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЯ) рдХрд╛ рд╕рдмрд╕реЗ рдорд╣рдВрдЧрд╛ рд╕рдВрд╕рд╛рдзрди рд╣реИ, рдПрдХ рд╕рдорд╛рдзрд╛рди рдкрд╛рдпрд╛ рдЧрдпрд╛ рдЬреЛ рдирд┐рдореНрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ: рд╕рд░рд▓ рд╕реНрдерд╛рдкрдирд╛, рддреНрд╡рд░рд┐рдд рд╕реЗрдЯрдЕрдк, рдФрд░, рдкрд┐рдЫрд▓реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рддреНрд╡рд░рд┐рдд рдХрдореАрд╢рдиред

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣реЙрд▓реИрдВрдб рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдмреИрдХрдЕрдк рдврд╛рдВрдЪрд╛ рд╣реИ рдЬреЛ рд░реИрдХрд╕реНрдкреЗрд╕ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдорд╣рд╛рди рд▓рдЪреАрд▓рд╛рдкрди, рддрд╛рд░реНрдХрд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд╕рд╛рде рдмреИрдХрдЕрдк рдмрдирд╛рдирд╛ рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, рд╣реЙрд▓реИрдВрдб MySQL рдФрд░ PostgreSQL рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕рдореЗрдВ рдХрдИ рддрд░рд╣ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдРрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рднреА рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рдХреА рдореЙрдбреНрдпреВрд▓рд░ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣реЙрд▓реИрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХрд╛ рдмреИрдХрдЕрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рднреА рд╣реЛред

рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╛рдд рдкреНрд░рддрд┐рдпреЛрдВ рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ MySQL рдбреЗрдЯрд╛рдмреЗрд╕ (mysqldump рдЙрдкрдпреЛрдЧрд┐рддрд╛) рдХрд╛ рджреИрдирд┐рдХ рдмреИрдХрдЕрдк рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред
рдФрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╖рдп рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмреИрдЪ рд╡рд┐рддрд░рдг рдореЗрдВ рдпрд╣ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рднреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ CentOS рд╣реИред

рдбрд╛рдЙрдирд▓реЛрдб


рд╣реЙрд▓реИрдВрдб рдХреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ:

Github.com рдкрд░ рднреА рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде "рдкреБрд░рд╛рдиреЗ" рд╕рд░реНрд╡рд░ рдкрд░ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рд╡рд┐рддрд░рдг рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдиреЗ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реБрдП, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рдХрдВрд╕реЛрд▓ рдХреЛ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ:
yum install -y holland holland-mysqldump 


рдЕрдЧрд▓рд╛ рдЪрд░рдг, рдЬреЛ рддрд╛рд░реНрдХрд┐рдХ рд╣реИ, рд╕реЗрдЯрдЕрдк рд╣реЛрдЧрд╛ред

рдзреБрди


рд╕рдВрд░рдЪрдирд╛ / рдЖрджрд┐ / рд╣реЙрд▓реИрдВрдб рд╕рд░рд▓ рдФрд░ рд╕реАрдзрд╛ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ, рдореБрдЦреНрдп рдСрдкрд░реЗрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рд╣реИрдВ:
рдкреНрд░рджрд╛рддрд╛рдУрдВ рдореЗрдВ mysqldump рдпрд╛ xtrabackup рдЬреИрд╕реА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реЛрддреА рд╣реИрдВ
рдмреИрдХрдЕрдкрд╕реЗрдЯ рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмреИрдХрдЕрдк рдпреЛрдЬрдирд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ рдЬреИрд╕реЗ: рдкреНрд░рддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рд╡рд┐рдзрд┐ рдФрд░ рд╕рдВрдкреАрдбрд╝рди рдЕрдиреБрдкрд╛рдд, рдЖрджрд┐ред

рдкрд╛рдардХ рджреНрд╡рд╛рд░рд╛ рддреНрд╡рд░рд┐рдд рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХ рд▓рдЧрд╛ред

/etc/holland.conf
 ## Root holland config file [holland] ## Paths where holland plugins may be found. ## Can be comma separated plugin_dirs = /usr/share/holland/plugins ## Top level directory where backups are held backup_directory = /var/spool/holland ## List of enabled backup sets. Can be comma separated. ## Read from <config_dir>/backupsets/<name>.conf # backupsets = example, traditional, parallel_backups, non_transactional backupsets = default # Define a umask for file generated by holland umask = 0007 # Define a path for holland and its spawned processes path = /usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin [logging] ## where to write the log filename = /var/log/holland/holland.log ## debug, info, warning, error, critical (case insensitive) level = info 

рдкреНрд░рджрд╛рддрд╛рдУрдВ / mysqldump.conf
 ## Global settings for the mysqldump provider - Requires holland-mysqldump ## ## Unless overwritten, all backup-sets implementing this provider will use ## the following settings. [mysqldump] ## Override the path where we can find mysql command line utilities #mysql-binpath = /usr/bin/mysqldump ## One of: flush-lock, lock-tables, single-transaction, auto-detect, none ## ## flush-lock will place a global lock on all tables involved in the backup ## regardless of whether or not they are in the backup-set. If ## file-per-database is enabled, then flush-lock will lock all tables ## for every database being backed up. In other words, this option may not ## make much sense when using file-per-database. ## ## lock-tables will lock all tables involved in the backup. If ## file-per-database is enabled, then lock-tables will only lock all the ## tables associated with that database. ## ## single-transaction will force running a backup within a transaction. ## This allows backing up of transactional tables without imposing a lock ## howerver will NOT properly backup non-transactional tables. ## ## Auto-detect will choose single-transaction unless Holland finds ## non-transactional tables in the backup-set. ## ## None will completely disable locking. This is generally only viable ## on a MySQL slave and only after traffic has been diverted, or slave ## services suspended. lock-method = auto-detect ## comma-delimited glob patterns for matching databases ## only databases matching these patterns will be backed up ## default: include everything #databases = "*" ## comma-delimited glob patterns to exclude particular ## databases #exclude-databases = ## only include the specified tables #tables = "*" ## exclude specific tables #exclude-tables = "" ## Whether to dump routines explicitly ## (routines are implicitly included in the mysql database) dump-routines = no ## Whether to dump events explicitly. ## Note that this feature requires MySQL 5.1 or later. dump-events = no ## Whether to stop the slave before commencing with the backup stop-slave = no ## Whether to record the binary log name and position at the time of the ## backup. bin-log-position = no ## Whether or not to run FLUSH LOGS in MySQL with the backup. When FLUSH ## LOGS is actually executed depends on which if database filtering is being ## used and whether or not file-per-database is enabled. Generally speaking, ## it does not make sense to use flush-logs with file-per-database since the ## binary logs will not be consistent with the backup. flush-logs = no ## Whether to run a separate mysqldump for each database. Note that while ## this may initially sound like a good idea, it is far simpler to backup ## all databases in one file, although that makes the restore process ## more difficult when only certain data needs to be restored. file-per-database = no ## any additional options to the 'mysqldump' command-line utility ## these should show up exactly as they are on the command line ## eg: --flush-privileges --reset-master additional-options = "" ## Compression Settings [compression] ## compress method: gzip, gzip-rsyncable, bzip2, pbzip2, or lzop ## Which compression method to use, which can be either gzip, bzip2, or lzop. ## Note that lzop is not often installed by default on many Linux ## distributions and may need to be installed separately. method = gzip ## Whether to compress data as it is provided from 'mysqldump', or to ## compress after a dump has finished. In general, it is often better to use ## inline compression. The overhead, particularly when using a lower ## compression level, is often minial since the entire process is often I/O ## bound (as opposed to being CPU bound). inline = yes ## What compression level to use. Lower numbers mean faster compression, ## though also generally a worse compression ratio. Generally, levels 1-3 ## are considered fairly fast and still offer good compression for textual ## data. Levels above 7 can often cause a larger impact on the system due to ## needing much more CPU resources. Setting the level to 0 effectively ## disables compresion. level = 1 ## If the path to the compression program is in a non-standard location, ## or not in the system-path, you can provide it here. ## ## FIXME: Currently not implemented, compression binary is looked up by ## which. ## #bin-path = /usr/bin/gzip ## MySQL connection settings. Note that Holland will try ot read from ## the provided files defined in the 'defaults-extra-file', although ## explicitly defining the connection inforamtion here will take precedence. [mysql:client] defaults-extra-file = /root/.my.cnf,~/.my.cnf, #user = hollandbackup #password = "hollandpw" #socket = /tmp/mysqld.sock #host = localhost #port = 3306 

backupsets / mysqldump.conf
 ## Holland mysqldump Example Backup-Set ## ## This implements a vanilla backup-set using the mysqldump provider which, ## in turn, uses the 'mysqldump' utility. ## ## Many of these options have global defaults which can be found in the ## configuration file for the provider (which can be found, by default ## in /etc/holland/providers). [holland:backup] plugin = mysqldump backups-to-keep = 1 auto-purge-failures = yes purge-policy = after-backup estimated-size-factor = 1.0 # This section defines the configuration options specific to the backup # plugin. In other words, the name of this section should match the name # of the plugin defined above. [mysqldump] ## Override the path where we can find mysql command line utilities #mysql-binpath = /usr/bin/mysqldump ## One of: flush-lock, lock-tables, single-transaction, auto-detect, none ## ## flush-lock will run a FLUSH TABLES WITH READ LOCK prior to the backup ## ## lock-tables will instruct 'mysqldump' to lock all tables involved ## in the backup. ## ## single-transaction will force running a backup within a transaction. ## This allows backing up of transactional tables without imposing a lock ## howerver will NOT properly backup non-transacitonal tables. ## ## Auto-detect will choose single-transaction unless Holland finds ## non-transactional tables in the backup-set. ## ## None will completely disable locking. This is generally only viable ## on a MySQL slave and only after traffic has been diverted, or slave ## services suspended. lock-method = auto-detect ## comma-delimited glob patterns for matching databases ## only databases matching these patterns will be backed up ## default: include everything databases = "*" ## comma-delimited glob patterns to exclude particular ## databases #exclude-databases = ## only include the specified tables tables = "*" ## exclude specific tables #exclude-tables = "" ## Whether to dump routines explicitly ## (routines are implicitly included in the mysql database) dump-routines = no ## Whether to dump events explicitly. ## Note that this feature requires MySQL 5.1 or later. dump-events = no ## Whether to stop the slave before commencing with the backup stop-slave = no ## Whether to record the binary log name and position at the time of the ## backup. bin-log-position = no ## Whether or not to run FLUSH LOGS in MySQL with the backup. When FLUSH ## LOGS is actually executed depends on which if database filtering is being ## used and whether or not file-per-database is enabled. Generally speaking, ## it does not make sense to use flush-logs with file-per-database since the ## binary logs will not be consistent with the backup. flush-logs = no ## Whether to run a separate mysqldump for each database. Note that while ## this may initially sound like a good idea, it is far simpler to backup ## all databases in one file, although that makes the restore process ## more difficult when only certain data needs to be restored. file-per-database = no ## any additional options to the 'mysqldump' command-line utility ## these should show up exactly as they are on the command line ## eg: --flush-privileges --reset-master additional-options = "" ## Compression Settings [compression] ## compress method: gzip, gzip-rsyncable, bzip2, pbzip2, lzop, or xz ## Which compression method to use, which can be either gzip, bzip2, or lzop. ## Note that pbzip2 and lzop are not often installed by default on many Linux ## distributions and may need to be installed separately. method = gzip ## Whether to compress data as it is provided from 'mysqldump', or to ## compress after a dump has finished. In general, it is often better to use ## inline compression. The overhead, particularly when using a lower ## compression level, is often minial since the entire process is often I/O ## bound (as opposed to being CPU bound). inline = yes ## What compression level to use. Lower numbers mean faster compression, ## though also generally a worse compression ratio. Generally, levels 1-3 ## are considered fairly fast and still offer good compression for textual ## data. Levels above 7 can often cause a larger impact on the system due to ## needing much more CPU resources. Setting the level to 0 effectively ## disables compresion. level = 1 ## If the path to the compression program is in a non-standard location, ## or not in the system-path, you can provide it here. #bin-path = /usr/bin/gzip ## MySQL connection settings. Note that these can be inherited from the ## provider itself allowing for global defaults. Providing connection ## information for a backup-set can often be helpful when, for instance ## a backup-set is backing up a remote MySQL server. #[mysql:client] #user = hollandbackup #password = "hollandpw" #socket = /tmp/mysqld.sock #host = localhost #port = 3306 


рдФрд░, рд╡рд┐рд╡рд┐рдз рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЬреЛ рдХрд┐ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдЪреБрд░ рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╣реИ, рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
  1. Holland.conf рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ
     backupsets = mysqldump 

  2. /Usr/share/doc/holland-*/examples/mysqldump.conf рд╕реЗ / etc / holland / backupsets рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЙрдкреА рдХрд░реЗрдВ
     cp /usr/share/doc/holland-*/examples/mysqldump.conf /etc/holland/backupsets/ 

  3. Mysqldump.conf рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреНрд░рддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХреНрд╕реЗрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ
     backups-to-keep = 7 databases = ┬лsomedb┬╗ user = hollandbackup password = ┬лhollandpw┬╗ socket = /tmp/mysqld.sock 

  4. рд╢реЗрдбреНрдпреВрд▓рд░ (рдЙрджрд╛ред рдХреНрд░реЛрди) рдореЗрдВ рджреИрдирд┐рдХ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝реЗрдВ
     holland backup 



рдЕрдиреНрдп

PostgreSQL рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗрд╡рд▓ рдПрдХ рдЕрдиреНрдп рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЧрдП рдкреНрд▓рдЧрдЗрди (рд╣реЙрд▓реИрдВрдб-рдкреЛрд╕реНрдЯрдЧреНрд░реИрд╕реНрдХрд▓) рдФрд░ рдПрдХ рдФрд░ рдХреЙрдкреА рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдирдореВрдирд╛ рдлрд╛рдЗрд▓реЗрдВ рдореЗрд░реЗ рдирд╛рдо рд╕реЗ рднреА рдореБрдЭреЗ рджрд┐рд▓рдЪрд╕реНрдкреА рд▓реЗрддреА рд╣реИрдВ, рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

рдХреБрдЫ рджрд┐рдиреЛрдВ рдХреЗ рдмрд╛рдж рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╛рдирд╛ рди рднреВрд▓реЗрдВ рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдмреИрдХрдЕрдк рдпреЛрдЬрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдФрд░ рдЗрд╕рдХреА рд╕рдлрд▓рддрд╛ред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпреЗ рдХреБрдЫ рдХрджрдо рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрд▓реЛрдХрдкреНрд░рд┐рдп рдкрд╛рда рдкрд░ рд╕рдордп рдФрд░ рдкреНрд░рдпрд╛рд╕ рдмрдЪрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗред

Source: https://habr.com/ru/post/In213929/


All Articles