diff --git a/ydb/docs/en/core/concepts/backup-collections.md b/ydb/docs/en/core/concepts/backup-collections.md new file mode 100644 index 000000000000..016a4435c273 --- /dev/null +++ b/ydb/docs/en/core/concepts/backup-collections.md @@ -0,0 +1,160 @@ +# Backup Collections {#backup-collections} + +Backup collections provide an advanced backup solution for YDB that organizes full and incremental backups into managed collections. This approach is designed for production workloads requiring efficient disaster recovery and point-in-time recovery capabilities. + +## What are backup collections? {#what-are-backup-collections} + +A backup collection is a named set of coordinated backups for selected database tables. Collections organize related backups and ensure they can be restored together consistently, providing: + +- **Efficiency**: Incremental backups capture only changes since the previous backup. +- **Organization**: Related backups are grouped into logical collections. +- **Recovery flexibility**: Enables recovery using any backup in the chain. + +## Core concepts {#core-concepts} + +### Backup collection {#backup-collection} + +A named container that groups backups for a specific set of database tables. Collections ensure that all included tables are backed up consistently. + +### Full backup {#full-backup} + +A complete snapshot of all selected tables at a specific point in time. Serves as the baseline for subsequent incremental backups and contains all data needed for independent restoration. + +### Incremental backup {#incremental-backup} + +Captures only the changes (inserts, updates, deletes) since the previous backup in the chain. Significantly smaller than full backups for datasets with limited changes. + +### Backup chain {#backup-chain} + +An ordered sequence of backups starting with a full backup followed by zero or more incremental backups. Each incremental backup depends on all previous backups in the chain for complete restoration. + +## Architecture and components {#architecture} + +### Backup flow {#backup-flow} + +1. **Collection creation**: Define which tables to include and storage settings +2. **Initial full backup**: Create baseline snapshot of all tables +3. **Regular incremental backups**: Capture ongoing changes on-demand +4. **Chain management**: Monitor backup chains and manage retention manually + +### Storage structure {#storage-structure} + +Backup collections are stored in a dedicated directory structure within the database: + +```text +/Root/test1/.backups/collections/ +├── backup_collection_1/ +│ ├── 20250821141425Z_full/ # Full backup +│ │ ├── table_1/ +│ │ └── table_2/ +│ └── 20250821141519Z_incremental/ # Incremental backup +│ ├── table_1/ +│ └── table_2/ +└── backup_collection_2/ + ├── 20250820093012Z_full/ # Full backup + │ └── table_3/ + ├── 20250820140000Z_incremental/ # First incremental + │ └── table_3/ + └── 20250821080000Z_incremental/ # Second incremental + └── table_3/ +``` + +Each backup contains: + +- Table schemas at backup time. (Implicitly) +- Data files (full or incremental changes). + +### Storage backends {#storage-backends} + +#### Cluster storage {#cluster-storage} + +Backups are stored within the YDB cluster itself, providing: + +- **High availability**: Leverages cluster replication and fault tolerance. +- **Performance**: Fast backup and restore operations. +- **Integration**: Seamless integration with cluster operations. +- **Security**: Uses cluster security mechanisms. + +```sql +WITH ( STORAGE = 'cluster' ) +``` + +#### External storage {#external-storage} + +Currently, external storage requires manual export/import operations. Use [export/import operations](../reference/ydb-cli/export-import/index.md) to move backups to external storage systems. + +### Background operations {#background-operations} + +All backup operations run asynchronously in the background, allowing you to: + +- Continue normal database operations during backups. +- Monitor progress using YDB CLI operation commands. +- Handle large datasets without blocking other activities. + +## How backup collections work internally {#how-they-work} + +### Backup creation process {#backup-creation-process} + +1. **Transaction isolation**: Backup starts from a consistent snapshot point +2. **Change tracking**: For incremental backups, only changes since last backup are captured and stored in CDC stream +3. **Change materialization**: When incremental backup called CDC stream compacted to incremental backup tables + +### Incremental backup mechanism {#incremental-backup-mechanism} + +Incremental backups use change tracking to identify: + +- **New rows**: Added since last backup. +- **Modified rows**: Changed data in existing rows. +- **Deleted rows**: Removed data (tombstone records). +- **Schema changes**: Currently not supported. + +## Relationship with incremental backups {#relationship-with-incremental-backups} + +Backup collections are the foundation for incremental backup functionality: + +- **Collections enable incrementals**: You must have a collection to create incremental backups. +- **Chain management**: Collections manage the sequence of full and incremental backups. +- **Consistency**: All tables in a collection are backed up consistently. + +Without backup collections, only full export/import operations are available. + +## When to use backup collections {#when-to-use} + +**Ideal scenarios:** + +- Production environments requiring regular backup schedules. +- Large datasets where incremental changes are much smaller than total data size. +- Scenarios requiring backup chains for efficiency. + +**Consider traditional export/import for:** + +- Small databases or individual tables. +- One-time data migration tasks. +- Development/testing environments. +- Simple backup scenarios without incremental needs. + +## Benefits and limitations {#benefits-limitations} + +### Benefits + +- **Storage efficiency**: Incremental backups use significantly less storage. +- **Faster backups**: Only changes are processed after initial full backup (note: change capture still incurs storage and cpu costs). +- **SQL interface**: Familiar SQL commands for backup management. +- **Background processing**: Non-blocking operations. + +### Current limitations + +- **Cluster storage only**: External storage requires manual export/import. +- **No collection modification**: Cannot add/remove tables after creation. +- **No partial restore**: Partial restores from collections must be managed externally. + +## Next steps {#next-steps} + +- **Get started**: Follow the [operations guide](../maintenance/manual/backup-collections.md) for step-by-step instructions +- **See examples**: Explore [common scenarios](../recipes/backup-collections.md) and best practices + +## See also + +- [General backup concepts](backup.md) - Overview of all backup approaches in YDB. +- [Operations guide](../maintenance/manual/backup-collections.md) - Practical instructions and examples. +- [Common recipes](../recipes/backup-collections.md) - Real-world usage scenarios. diff --git a/ydb/docs/en/core/concepts/backup.md b/ydb/docs/en/core/concepts/backup.md new file mode 100644 index 000000000000..5ae2aa1eaf36 --- /dev/null +++ b/ydb/docs/en/core/concepts/backup.md @@ -0,0 +1,49 @@ +# Backup concepts + +This section covers backup concepts and technologies available in {{ ydb-short-name }}. + +{{ ydb-short-name }} provides several approaches for creating backups, each designed for different use cases and requirements: + +## Export/import {#export-import} + +For large-scale data migration and portability scenarios: + +- **Use cases**: Large data migration between systems, archival storage, production data transfers. +- **Storage**: S3-compatible storage. + +## Backup/restore {#backup-restore} + +For local database backups and development workflows: + +- **Use cases**: Local development environments, testing scenarios, smaller production environments, database cloning for local use. +- **Storage**: Filesystem. + +## Backup collections {#backup-collections} + +For production workloads requiring incremental backups: + +- **Use cases**: Production environments, large datasets, regular backup schedules. +- **Storage**: Currently supports cluster storage only. + +Learn more: + +- [Backup collections concepts](backup-collections.md) - Architecture and concepts. +- [Operations guide](../maintenance/manual/backup-collections.md) - Practical operations. +- [Common recipes](../recipes/backup-collections.md) - Usage examples. + +Learn more: + +- [Export and import reference](../reference/ydb-cli/export-import/index.md) - Export/import operations. + +## Choosing the right approach {#choosing-approach} + +| Approach | Best for | Key advantages | Considerations | +|----------|----------|----------------|----------------| +| **Export/import** | Large data migration, archival, production data transfers | Portability between systems, flexible formats, handles large datasets | Full snapshots only | +| **Backup/restore** | Local development, testing, smaller production environments | Local filesystem operations, suitable for moderate data volumes | Full snapshots only, primarily for local use | +| **Backup collections** | Production environments, large datasets | Incremental efficiency, point-in-time recovery | Requires collection setup, cluster storage only | + +## See also + +- [Backup and recovery guide](../devops/backup-and-recovery.md). +- [Export and import reference](../reference/ydb-cli/export-import/index.md). diff --git a/ydb/docs/en/core/concepts/toc_i.yaml b/ydb/docs/en/core/concepts/toc_i.yaml index a1bb9ddcd812..0cb5335d0382 100644 --- a/ydb/docs/en/core/concepts/toc_i.yaml +++ b/ydb/docs/en/core/concepts/toc_i.yaml @@ -27,6 +27,10 @@ items: href: limits-ydb.md - name: Multi-Version Concurrency Control (MVCC) href: mvcc.md +- name: Backup and restore + href: backup.md +- name: Backup collections + href: backup-collections.md - name: Asynchronous replication href: async-replication.md when: feature_async_replication diff --git a/ydb/docs/en/core/maintenance/manual/backup-collections.md b/ydb/docs/en/core/maintenance/manual/backup-collections.md new file mode 100644 index 000000000000..afdba6bab83c --- /dev/null +++ b/ydb/docs/en/core/maintenance/manual/backup-collections.md @@ -0,0 +1,287 @@ +# Backup Collections Operations {#backup-collections-operations} + +This guide covers all practical operations for creating, managing, and restoring from backup collections. For conceptual information, see [Backup collections concepts](../../concepts/backup-collections.md). + +## Creating backup collections {#creating-collections} + +### SQL Syntax Reference {#sql-syntax-reference} + +```sql +-- CREATE BACKUP COLLECTION syntax +CREATE BACKUP COLLECTION `collection_name` + ( TABLE `table_path` [, TABLE `table_path` ...] ) +WITH ( STORAGE = 'cluster', INCREMENTAL_BACKUP_ENABLED = 'true' ); + +-- BACKUP syntax +BACKUP `collection_name` [INCREMENTAL]; + +-- DROP BACKUP COLLECTION syntax +DROP BACKUP COLLECTION `collection_name`; + +-- RESTORE syntax + +RESTORE `collection_name` +``` + +For detailed syntax, see [YQL reference documentation](../../yql/reference/syntax/index.md). + +### Basic collection creation {#basic-collection-creation} + +Create a backup collection using SQL commands. The collection defines which tables to include and storage settings: + +```sql +CREATE BACKUP COLLECTION `shop_backups` + ( TABLE `/Root/shop/orders`, TABLE `/Root/shop/products` ) +WITH ( STORAGE = 'cluster', INCREMENTAL_BACKUP_ENABLED = 'true' ); +``` + +## Taking backups {#taking-backups} + +### Initial full backup {#initial-full-backup} + +After creating a collection, take the initial full backup: + +```sql +BACKUP `shop_backups`; +``` + +The first backup without the `INCREMENTAL` keyword creates a full backup containing all data from the specified tables. + +### Incremental backups {#incremental-backups} + +Once you have a full backup, create incremental backups to capture changes: + +```sql +BACKUP `shop_backups` INCREMENTAL; +``` + +### Backup timing considerations {#backup-timing-considerations} + +Implement regular backup schedules based on your requirements. Note that scheduling must be implemented externally using cron or similar tools. + +**Daily full backups:** + +```sql +-- Example: Run daily at 2 AM (requires external scheduling) +BACKUP `shop_backups`; +``` + +**Hourly incrementals with weekly full backups:** + +```sql +-- Example: Sunday: Full backup (requires external scheduling) +BACKUP `shop_backups`; + +-- Example: Monday-Saturday: Incremental backups (requires external scheduling) +BACKUP `shop_backups` INCREMENTAL; +``` + +### Important scheduling notes {#important-scheduling-notes} + +- **External scheduling required**: YDB does not provide built-in scheduling. Use cron or similar tools. +- **Background operations**: Backups run asynchronously and don't block database operations. +- **Multiple collections**: Can run backups on different collections independently. + +## Monitoring backup operations {#monitoring} + +### Monitoring backup operations {#monitoring-backup-operations} + +```bash +# Check backup operation status +ydb operation list incbackup + +# Get details for specific operation +ydb operation get + +# Cancel running operation if needed +ydb operation cancel + +# Browse backup collections +ydb scheme ls .backups/collections/ + +# List backups in a collection +ydb scheme ls .backups/collections/production_backups/ + +# Get backup metadata +ydb scheme describe .backups/collections/production_backups/backup_20240315_120000/ +``` + +### Check operation status {#check-operation-status} + +All backup operations run in the background. Monitor their progress using: + +```bash +# List all backup operations +ydb operation list incbackup + +# Check specific operation status +ydb operation get +``` + +### Browse backup structure {#browse-backup-structure} + +View backups through the database schema: + +```bash +# List all collections +ydb scheme ls .backups/collections/ + +# View specific collection structure +ydb scheme ls .backups/collections/shop_backups/ + +# Check backup timestamps +ydb scheme ls .backups/collections/shop_backups/ | sort +``` + +### Monitor backup chains {#monitor-backup-chains} + +Verify backup chain integrity: + +```bash +# List backups in chronological order +ydb scheme ls .backups/collections/shop_backups/ | sort + +# Check individual backup contents +ydb scheme ls .backups/collections/shop_backups/20250821141519Z_full +``` + +## Managing backup collections {#managing-collections} + +### Collection information {#collection-information} + +Since collections are managed through SQL, browse them using schema commands: + +```bash +# Browse all collections +ydb scheme ls .backups/collections/ + +# View collection directory contents +ydb scheme describe .backups/collections/shop_backups/ +``` + +### Collection status monitoring {#collection-status-monitoring} + +Check the health and status of your collections: + +1. **Verify recent backups exist**. +2. **Check backup chain completeness**. +3. **Monitor storage usage**. +4. **Validate backup accessibility**. + +## Retention and cleanup {#retention-cleanup} + +### Backup chain considerations {#backup-chain-considerations} + +Before deleting backups, understand chain dependencies: + +- **Full backups**: Required for all subsequent incrementals. +- **Incremental backups**: Depend on the latest full backup and all subsequent incrementals in the chain. +- **Chain breaks**: Deleting intermediate backups breaks the chain. + +### Manual cleanup strategies {#manual-cleanup-strategies} + +**Safe cleanup approach:** + +1. Create new full backup. +2. Verify new backup is complete. +3. Delete old backup chains (full backup + all its incrementals). +4. Never delete partial chains. + +**Example cleanup workflow:** + +```bash +# 1. Create new full backup +ydb yql -s "BACKUP \`shop_backups\`;" + +# 2. Wait for completion and verify +ydb operation list incbackup + +# 3. Browse backup structure +ydb scheme ls .backups/collections/shop_backups/ | sort + +# 4. Remove old backup directories (entire chains only) +ydb scheme rmdir -r .backups/collections/shop_backups/20250208141425Z_full/ +ydb scheme rmdir -r .backups/collections/shop_backups/20250209141519Z_incremental/ +ydb scheme rmdir -r .backups/collections/shop_backups/20250210141612Z_incremental/ +# ... (remove all related incrementals in the chain) +``` + +### Retention policies {#retention-policies} + +Implement retention policies based on: + +- **Business requirements**: How long data must be retained. +- **Storage costs**: Balance retention with storage usage. +- **Recovery needs**: Typical recovery scenarios and timeframes. +- **Compliance**: Legal or regulatory requirements. + +**Example retention policy:** + +- Keep daily backups for 30 days. +- Keep weekly backups for 12 weeks. +- Keep monthly backups for 12 months. +- Keep yearly backups for 7 years. + +## Backup validation and verification {#validation} + +### Post-backup validation {#post-backup-validation} + +After backup completion: + +1. **Verify operation success**: Check operation status. +2. **Validate backup structure**: Browse backup directories. + +### Backup testing procedures {#backup-testing-procedures} + +Regularly test backup restoration: + +1. **Test environment**: Use separate test environment. +2. **Sample restoration**: Restore subset of data. +3. **Full restoration test**: Periodically test complete restoration. +4. **Performance testing**: Measure restoration time and resources. + +## Recovery and restoration {#recovery} + +### Export and import restoration {#export-import-restoration} + +For complete disaster recovery, use export/import operations: + +```bash +# Export backup collection from source +ydb tools dump -p .backups/collections/shop_backups -o shop_backups_export + +# create backup collection in target database +# CREATE BACKUP COLLECTION `collection_name` +# ( TABLE `table_path` [, TABLE `table_path` ...] ) +# WITH ( STORAGE = 'cluster', INCREMENTAL_BACKUP_ENABLED = 'true' ); + +# Import to target database +ydb tools restore -i shop_backups_export -d /Root/restored_db +``` + +### Point-in-time recovery {#point-in-time-recovery} + +To restore to a specific point in time: + +1. **Identify target backup**: Find the appropriate backup point. +2. **Export backup chain**: Import the full backup and required incrementals. +3. **Execute RESTORE**. + +## Best practices summary {#best-practices} + +### Backup strategy {#backup-strategy} + +- **Regular schedule**: Establish consistent backup timing. +- **Manage chain length**: Take new full backups periodically to avoid excessively long incremental chains. +- **Multiple collections**: Separate collections for different applications. + +### Monitoring and maintenance {#monitoring-maintenance} + +- **Manual validation**: Periodically test backup restoration. +- **Performance tracking**: Monitor backup duration and resource usage. +- **Storage monitoring**: Track backup storage growth. + +## See also {#see-also} + +- [Backup collections concepts](../../concepts/backup-collections.md) - Core concepts and architecture. +- [Common recipes](../../recipes/backup-collections.md) - Real-world usage examples. diff --git a/ydb/docs/en/core/maintenance/manual/toc_i.yaml b/ydb/docs/en/core/maintenance/manual/toc_i.yaml index 897087114813..cd7f89171a3a 100644 --- a/ydb/docs/en/core/maintenance/manual/toc_i.yaml +++ b/ydb/docs/en/core/maintenance/manual/toc_i.yaml @@ -13,6 +13,8 @@ items: href: ../../devops/deployment-options/manual/decommissioning.md - name: Moving VDisks href: moving_vdisks.md +- name: Backup collections operations + href: backup-collections.md - name: Staying within the failure model href: failure_model.md - name: Disk load balancing diff --git a/ydb/docs/en/core/recipes/backup-collections.md b/ydb/docs/en/core/recipes/backup-collections.md new file mode 100644 index 000000000000..0e451c43f88e --- /dev/null +++ b/ydb/docs/en/core/recipes/backup-collections.md @@ -0,0 +1,197 @@ +# Backup Collections: Common Recipes and Examples {#backup-collections-recipes} + +This guide provides practical examples for common backup collection use cases. For basic operations, see the [operations guide](../maintenance/manual/backup-collections.md). + +## Basic backup workflow {#basic-workflow} + +### Creating your first backup collection {#creating-first-collection} + +```sql +-- Create a collection for related tables +CREATE BACKUP COLLECTION `production_backups` + ( TABLE `/Root/shop/orders` + , TABLE `/Root/shop/products` + , TABLE `/Root/shop/customers` + ) +WITH ( STORAGE = 'cluster', INCREMENTAL_BACKUP_ENABLED = 'true' ); +``` + +### Taking backups {#taking-backups} + +```sql +-- Take initial full backup +BACKUP `production_backups`; + +-- Later, take incremental backups +BACKUP `production_backups` INCREMENTAL; +``` + +### Monitoring backup operations {#monitoring-backup-operations} + +```bash +# Check backup operation status +ydb operation list incbackup + +# Get details for specific operation +ydb operation get + +# Browse backup collections +ydb scheme ls .backups/collections/ + +# List backups in a collection +ydb scheme ls .backups/collections/production_backups/ +``` + +## Multi-environment setup {#multi-environment} + +### Development environment {#development-environment} + +```sql +-- Create collection with fewer tables for testing +CREATE BACKUP COLLECTION `dev_test_backups` + ( TABLE `/Root/dev/users` + , TABLE `/Root/dev/test_data` + ) +WITH ( STORAGE = 'cluster', INCREMENTAL_BACKUP_ENABLED = 'true' ); + +-- Take daily full backups in development +BACKUP `dev_test_backups`; +``` + +### Production environment {#production-environment} + +```sql +-- Create comprehensive collection for production +CREATE BACKUP COLLECTION `prod_daily_backups` + ( TABLE `/Root/production/orders` + , TABLE `/Root/production/products` + , TABLE `/Root/production/customers` + , TABLE `/Root/production/inventory` + , TABLE `/Root/production/transactions` + ) +WITH ( STORAGE = 'cluster', INCREMENTAL_BACKUP_ENABLED = 'true' ); + +-- Weekly full backup +BACKUP `prod_daily_backups`; + +-- Daily incremental backups +BACKUP `prod_daily_backups` INCREMENTAL; +``` + +## Microservices backup strategy {#microservices} + +### Service-specific collections {#service-specific-collections} + +```sql +-- User service backup collection +CREATE BACKUP COLLECTION `user_service_backups` + ( TABLE `/Root/users/profiles` + , TABLE `/Root/users/preferences` + , TABLE `/Root/users/sessions` + ) +WITH ( STORAGE = 'cluster', INCREMENTAL_BACKUP_ENABLED = 'true' ); + +-- Order service backup collection +CREATE BACKUP COLLECTION `order_service_backups` + ( TABLE `/Root/orders/orders` + , TABLE `/Root/orders/order_items` + , TABLE `/Root/orders/payments` + ) +WITH ( STORAGE = 'cluster', INCREMENTAL_BACKUP_ENABLED = 'true' ); + +-- Inventory service backup collection +CREATE BACKUP COLLECTION `inventory_service_backups` + ( TABLE `/Root/inventory/products` + , TABLE `/Root/inventory/stock_levels` + , TABLE `/Root/inventory/warehouses` + ) +WITH ( STORAGE = 'cluster', INCREMENTAL_BACKUP_ENABLED = 'true' ); +``` + +### Service backup workflow {#service-backup-workflow} + +```sql +-- Take backups for each service independently +BACKUP `user_service_backups`; +BACKUP `order_service_backups`; +BACKUP `inventory_service_backups`; + +-- Later, take incremental backups +BACKUP `user_service_backups` INCREMENTAL; +BACKUP `order_service_backups` INCREMENTAL; +BACKUP `inventory_service_backups` INCREMENTAL; +``` + +## Data export and recovery {#export-recovery} + +### Exporting backup collections {#exporting-backup-collections} + +For disaster recovery or migration, export backup collections using standard YDB tools: + +```bash +# Export a backup collection +ydb tools dump -p .backups/collections/production_backups -o /backup/exports/production_backups_export + +# Export specific backup from a collection +ydb tools dump -p .backups/collections/production_backups/backup_20240315_120000 -o /backup/exports/backup_20240315 +``` + +### Importing to target database + +```bash +# Import backup to target database (restores to backup collections) +ydb tools restore -i /backup/exports/production_backups_export -d .backups/collections/production_backups_restored + +# Import specific backup into a collection +ydb tools restore -i /backup/exports/backup_20240315 -d .backups/collections/emergency_restore + +# Note: Importing directly into .backups/collections/ must maintains backup collection structure +``` + +### Manual cleanup + +```bash +```bash +# Remove old backup directories (manual cleanup) +ydb scheme rmdir -r .backups/collections/production_backups/20250821141425Z_full/ + +# Always remove complete chains, never partial chains +# Example: Remove old full backup and all its incrementals +ydb scheme rmdir -r .backups/collections/production_backups/20250821141425Z_full/ +ydb scheme rmdir -r .backups/collections/production_backups/20250821141451Z_incremental/ +ydb scheme rmdir -r .backups/collections/production_backups/20250822070000Z_incremental/ +``` + +### Collection lifecycle + +```sql +-- Drop a collection when no longer needed (removes collection and all backups) +DROP BACKUP COLLECTION `old_collection_name`; +``` + +## Simple backup validation {#validation} + +### Verify backup completion + +```bash +# Check if backup operation completed successfully +ydb operation list incbackup | grep -E "(COMPLETED|FAILED)" + +# Verify backup directory exists +ydb scheme ls .backups/collections/production_backups/ | tail -1 +``` + +### Basic backup testing + +```bash +# Export a recent backup for testing +ydb tools dump -p .backups/collections/production_backups/backup_20240315_120000 -o /tmp/test_restore + +# Test restore to temporary location (in test environment) +ydb tools restore -i /tmp/test_restore -d /Root/test_restore_verification +``` + +## See also {#see-also} + +- [Backup collections concepts](../concepts/backup-collections.md) - Core concepts and architecture. +- [Operations guide](../maintenance/manual/backup-collections.md) - Detailed operational procedures. diff --git a/ydb/docs/en/core/recipes/toc_p.yaml b/ydb/docs/en/core/recipes/toc_p.yaml index ad6cc009e133..509a1ebe38fa 100644 --- a/ydb/docs/en/core/recipes/toc_p.yaml +++ b/ydb/docs/en/core/recipes/toc_p.yaml @@ -1,4 +1,6 @@ items: +- name: Backup collections recipes + href: backup-collections.md - name: YDB SDK include: mode: link diff --git a/ydb/docs/en/core/reference/ydb-cli/export-import/_includes/index.md b/ydb/docs/en/core/reference/ydb-cli/export-import/_includes/index.md index 37dab0fa690e..74a2a612a02a 100644 --- a/ydb/docs/en/core/reference/ydb-cli/export-import/_includes/index.md +++ b/ydb/docs/en/core/reference/ydb-cli/export-import/_includes/index.md @@ -2,13 +2,15 @@ The {{ ydb-short-name }} CLI contains a set of commands designed to export and import data and descriptions of data schema objects. Data can be exported to create backups for subsequent recovery and for other purposes. +## Export/import commands + - [The export file structure](../file-structure.md) is used for exporting data both to the file system and S3-compatible object storage. -- [Exporting cluster' metadata to the file system using `admin cluster dump`](../tools-dump.md#cluster) -- [Importing cluster' metadata from the file system using `admin cluster restore`](../tools-restore.md#cluster) -- [Exporting database' metadata and data to the file system using `admin database dump`](../tools-dump.md#db) -- [Importing database' metadata and data from the file system using `admin database restore`](../tools-restore.md#db) -- [Exporting individual schema objects to the file system using `tools dump`](../tools-dump.md#schema-objects) -- [Importing individual schema objects from the file system using `tools restore`](../tools-restore.md#schema-objects) -- [Connecting to and authenticating with S3-compatible object storage](../auth-s3.md) -- [Exporting data to S3-compatible object storage using `export s3`](../export-s3.md) -- [Importing data from S3-compatible object storage using `import s3`](../import-s3.md) +- [Exporting cluster' metadata to the file system using `admin cluster dump`](../tools-dump.md#cluster). +- [Importing cluster' metadata from the file system using `admin cluster restore`](../tools-restore.md#cluster). +- [Exporting database' metadata and data to the file system using `admin database dump`](../tools-dump.md#db). +- [Importing database' metadata and data from the file system using `admin database restore`](../tools-restore.md#db). +- [Exporting individual schema objects to the file system using `tools dump`](../tools-dump.md#schema-objects). +- [Importing individual schema objects from the file system using `tools restore`](../tools-restore.md#schema-objects). +- [Connecting to and authenticating with S3-compatible object storage](../auth-s3.md). +- [Exporting data to S3-compatible object storage using `export s3`](../export-s3.md). +- [Importing data from S3-compatible object storage using `import s3`](../import-s3.md). diff --git a/ydb/docs/en/core/reference/ydb-cli/export-import/toc_i.yaml b/ydb/docs/en/core/reference/ydb-cli/export-import/toc_i.yaml index ca79d0ebe95d..b40161d9be1b 100644 --- a/ydb/docs/en/core/reference/ydb-cli/export-import/toc_i.yaml +++ b/ydb/docs/en/core/reference/ydb-cli/export-import/toc_i.yaml @@ -12,4 +12,6 @@ items: - name: Importing data from S3 href: import-s3.md - name: Importing data from a file to an existing table - href: import-file.md \ No newline at end of file + href: import-file.md +- name: Backup collections + href: ../../../maintenance/manual/backup-collections.md \ No newline at end of file diff --git a/ydb/docs/en/core/reference/ydb-cli/operation-list.md b/ydb/docs/en/core/reference/ydb-cli/operation-list.md index e28aaa89dffd..4b494efe4c28 100644 --- a/ydb/docs/en/core/reference/ydb-cli/operation-list.md +++ b/ydb/docs/en/core/reference/ydb-cli/operation-list.md @@ -13,8 +13,12 @@ General format of the command: * `kind`: The type of operation. Possible values: * `buildindex`: The build index operations. - * `export/s3`: The export operations. - * `import/s3`: The import operations. + * `export/yt`: The export to YT operations. + * `export/s3`: The export to S3 operations. + * `scriptexec`: The script execution operations. + * `import/s3`: The import from S3 operations. + * `incbackup`: The incremental backup operations. + * `restore`: The restore operations. View a description of the command to get a list of long-running operations: diff --git a/ydb/docs/presets.yaml b/ydb/docs/presets.yaml index 28c27179bd5f..3fd934ef1dc9 100644 --- a/ydb/docs/presets.yaml +++ b/ydb/docs/presets.yaml @@ -24,6 +24,7 @@ default: feature_view: true feature_async_replication: true feature_batch_operations: true + feature_backup_collections: true ydb: YDB ydb-name: YDB ydb-full-name: YDB diff --git a/ydb/docs/ru/core/concepts/backup-collections.md b/ydb/docs/ru/core/concepts/backup-collections.md new file mode 100644 index 000000000000..fa3dbedcd690 --- /dev/null +++ b/ydb/docs/ru/core/concepts/backup-collections.md @@ -0,0 +1,167 @@ +# Коллекции резервных копий + +Коллекции резервных копий обеспечивают продвинутое решение для резервного копирования в YDB, которое организует полные и инкрементальные резервные копии в управляемые коллекции. Этот подход предназначен для производственных нагрузок, требующих эффективного аварийного восстановления и возможностей восстановления на момент времени. + +## Что такое коллекции резервных копий? {#what-are-backup-collections} + +Коллекция резервных копий — это именованный набор скоординированных резервных копий для выбранных таблиц базы данных. Коллекции организуют связанные резервные копии и обеспечивают их согласованное восстановление, предоставляя: + +- **Эффективность**: Инкрементальные резервные копии захватывают только изменения с момента предыдущей резервной копии +- **Организацию**: Связанные резервные копии группируются в логические коллекции +- **Гибкость восстановления**: Позволяет восстановление с использованием любой резервной копии в цепочке + +## Основные концепции {#core-concepts} + +### Коллекция резервных копий {#backup-collection} + +Именованный контейнер, который группирует резервные копии для определенного набора таблиц базы данных. Коллекции обеспечивают согласованное резервное копирование всех включенных таблиц. + +### Полная резервная копия {#full-backup} + +Полный снимок всех выбранных таблиц в определенный момент времени. Служит базовой линией для последующих инкрементальных резервных копий и содержит все данные, необходимые для независимого восстановления. + +### Инкрементальная резервная копия {#incremental-backup} + +Захватывает только изменения (вставки, обновления, удаления) с момента предыдущей резервной копии в цепочке. Значительно меньше полных резервных копий для наборов данных с ограниченными изменениями. + +### Цепочка резервных копий {#backup-chain} + +Упорядоченная последовательность резервных копий, начинающаяся с полной резервной копии, за которой следует ноль или более инкрементальных резервных копий. Каждая инкрементальная резервная копия зависит от всех предыдущих резервных копий в цепочке для полного восстановления. + +## Архитектура и компоненты {#architecture} + +### Поток резервного копирования {#backup-flow} + +1. **Создание коллекции**: Определение таблиц для включения и настроек хранения +2. **Начальная полная резервная копия**: Создание базового снимка всех таблиц +3. **Регулярные инкрементальные резервные копии**: Захват текущих изменений по требованию +4. **Управление цепочкой**: Мониторинг цепочек резервных копий и ручное управление хранением + +### Структура хранения {#storage-structure} + +Коллекции резервных копий хранятся в выделенной структуре каталогов в базе данных: + +```text +/.backups/collections/ +├── collection_name_1/ +│ ├── backup_20240315_120000/ # Полная резервная копия +│ ├── backup_20240315_180000/ # Инкрементальная резервная копия +│ └── backup_20240316_060000/ # Инкрементальная резервная копия +├── collection_name_2/ +│ └── backup_20240316_000000/ # Полная резервная копия +``` + +Каждая резервная копия содержит: + +- Схемы таблиц на момент резервного копирования +- Файлы данных (полные или инкрементальные изменения) +- Метаданные для валидации цепочки и восстановления + +### Бэкенды хранения {#storage-backends} + +#### Кластерное хранилище {#cluster-storage} + +Резервные копии хранятся в том же кластере YDB с использованием распределенного файлового хранения: + +```sql +WITH ( STORAGE = 'cluster' ) +``` + +#### Внешнее хранилище {#external-storage} + +{% note info %} + +В будущих версиях YDB планируется поддержка внешних хранилищ S3-совместимых систем. + +{% endnote %} + +Внешние системы хранения предоставляют: + +### Фоновые операции {#background-operations} + +Все операции резервного копирования выполняются асинхронно в фоновом режиме, позволяя: + +- Продолжать обычные операции с базой данных во время резервного копирования +- Отслеживать прогресс с помощью команд операций YDB CLI +- Обрабатывать большие наборы данных без блокировки других действий + +## Как работают коллекции резервных копий внутри {#how-they-work} + +### Процесс создания резервной копии {#backup-creation-process} + +1. **Изоляция транзакций**: Резервное копирование начинается с согласованной точки снимка +2. **Сканирование таблиц**: Каждая таблица сканируется на предмет данных и схемы +3. **Отслеживание изменений**: Для инкрементальных резервных копий захватываются только изменения с последней резервной копии +4. **Запись в хранилище**: Данные записываются в место хранения резервных копий +5. **Запись метаданных**: Метаданные резервной копии записываются для валидации цепочки + +### Механизм инкрементального резервного копирования {#incremental-backup-mechanism} + +Инкрементальные резервные копии основываются на отслеживании изменений на уровне данных: + +- **Новых строк**: Добавленных с последней резервной копии +- **Измененных строк**: Измененных данных в существующих строках +- **Удаленных строк**: Удаленных данных (записи tombstone) +- **Изменений схемы**: Модификаций структуры таблиц + +### Валидация цепочки и целостность {#chain-validation-integrity} + +Система обеспечивает целостность цепочки резервных копий через: + +- **Отслеживание зависимостей**: Каждая инкрементальная резервная копия записывает своего родителя +- **Проверки валидации**: Полнота цепочки проверяется перед операциями +- **Гарантии согласованности**: Все таблицы создаются из одной точки транзакции +- **Обнаружение ошибок**: Поврежденные или отсутствующие резервные копии определяются автоматически + +## Связь с инкрементальными резервными копиями {#relationship-with-incremental-backups} + +Коллекции резервных копий являются основой для функциональности инкрементального резервного копирования: + +- **Коллекции разрешают инкрементальность**: Необходимо иметь коллекцию для создания инкрементальных резервных копий +- **Управление цепочкой**: Коллекции управляют последовательностью полных и инкрементальных резервных копий +- **Согласованность**: Все таблицы в коллекции создаются согласованно + +Без коллекций резервных копий доступны только операции полного экспорта/импорта. + +## Когда использовать коллекции резервных копий {#when-to-use} + +**Идеальные сценарии:** + +- Производственные среды, требующие регулярного планирования резервного копирования +- Большие наборы данных, где инкрементальные изменения намного меньше общих данных +- Сценарии, требующие цепочек резервных копий для эффективности + +**Рассмотрите традиционный экспорт/импорт для:** + +- Небольших баз данных или отдельных таблиц +- Одноразовых задач миграции данных +- Сред разработки/тестирования +- Простых сценариев резервного копирования без инкрементальных потребностей +- Требований внешнего хранилища (до поддержки автоматического внешнего хранилища) + +## Преимущества и ограничения {#benefits-limitations} + +### Преимущества {#benefits} + +- **Эффективность хранения**: Инкрементальные резервные копии используют значительно меньше места для хранения +- **Более быстрое резервное копирование**: После начальной полной резервной копии обрабатываются только изменения +- **SQL интерфейс**: Знакомые SQL команды для управления резервным копированием +- **Фоновая обработка**: Неблокирующие операции +- **Целостность цепочки**: Автоматическая валидация и проверки согласованности + +### Текущие ограничения {#current-limitations} + +- **Только кластерное хранилище**: Внешнее хранилище требует ручного экспорта/импорта +- **Нет модификации коллекций**: Нельзя добавлять/удалять таблицы после создания +- **Единый бэкенд хранения**: Только 'cluster' хранилище поддерживается через SQL + +## Следующие шаги {#next-steps} {#next-steps} + +- **Начать работу**: Следуйте [руководству по операциям](../maintenance/manual/backup-collections.md) для пошаговых инструкций +- **Посмотреть примеры**: Изучите [общие сценарии](../recipes/backup-collections.md) и лучшие практики + +## См. также {#see-also} + +- [Общие концепции резервного копирования](backup.md) - Обзор всех подходов резервного копирования в YDB +- [Руководство по операциям](../maintenance/manual/backup-collections.md) - Практические инструкции и примеры +- [Общие рецепты](../recipes/backup-collections.md) - Сценарии реального использования diff --git a/ydb/docs/ru/core/concepts/backup.md b/ydb/docs/ru/core/concepts/backup.md new file mode 100644 index 000000000000..e494ad49e63f --- /dev/null +++ b/ydb/docs/ru/core/concepts/backup.md @@ -0,0 +1,53 @@ +# Концепции резервного копирования + +В этом разделе рассматриваются концепции и технологии резервного копирования, доступные в {{ ydb-short-name }}. + +{{ ydb-short-name }} предоставляет несколько подходов для создания резервных копий, каждый из которых предназначен для различных сценариев использования и требований: + +## Export/import {#export-import} + +Для крупномасштабной миграции данных и сценариев переносимости: + +- **Сценарии использования**: Крупная миграция данных между системами, архивное хранение, передача производственных данных. +- **Характеристики**: Снимки на момент времени с гибкими параметрами формата, оптимизированы для больших наборов данных. +- **Хранение**: S3-совместимое хранилище. + +## Backup/restore {#backup-restore} + +Для локального резервного копирования баз данных и рабочих процессов разработки: + +- **Сценарии использования**: Локальные среды разработки, тестовые сценарии, небольшие производственные среды, клонирование базы данных для локального использования. +- **Характеристики**: Предназначен для операций с локальной файловой системой и умеренными объемами данных. +- **Хранение**: Файловая система. + +## Коллекции резервных копий {#backup-collections} + +Для производственных нагрузок, требующих инкрементального резервного копирования: + +- **Сценарии использования**: Производственные среды, большие наборы данных, регулярные расписания резервного копирования. +- **Характеристики**: Полные и инкрементальные резервные копии, организованные в коллекции. +- **Хранение**: В настоящее время поддерживается только кластерное хранилище. +- **Операции**: Асинхронные фоновые операции. + +Подробнее: + +- [Концепции коллекций резервных копий](backup-collections.md) - Архитектура и концепции. +- [Руководство по операциям](../maintenance/manual/backup-collections.md) - Практические операции. +- [Общие рецепты](../recipes/backup-collections.md) - Примеры использования. + +Подробнее: + +- [Справочник по экспорту и импорту](../reference/ydb-cli/export-import/index.md) - Операции экспорта/импорта. + +## Выбор правильного подхода {#choosing-approach} + +| Подход | Лучше всего для | Ключевые преимущества | Соображения | +|--------|-----------------|----------------------|-------------| +| **Export/import** | Крупная миграция данных, архивирование, передача производственных данных | Переносимость между системами, гибкие форматы, обработка больших наборов данных | Только полные снимки | +| **Backup/restore** | Локальная разработка, тестирование, небольшие производственные среды | Операции с локальной файловой системой, подходит для умеренных объемов данных | Только полные снимки, преимущественно для локального использования | +| **Коллекции резервных копий** | Производственные среды, большие наборы данных | Эффективность инкрементальных копий, восстановление на определенный момент времени | Требует настройки коллекции, только кластерное хранилище | + +## См. также + +- [Руководство по резервному копированию и восстановлению](../devops/backup-and-recovery.md). +- [Справочник по экспорту и импорту](../reference/ydb-cli/export-import/index.md). diff --git a/ydb/docs/ru/core/concepts/toc_i.yaml b/ydb/docs/ru/core/concepts/toc_i.yaml index 862f3a78d63a..043d3ee74b77 100644 --- a/ydb/docs/ru/core/concepts/toc_i.yaml +++ b/ydb/docs/ru/core/concepts/toc_i.yaml @@ -27,6 +27,10 @@ items: href: limits-ydb.md - name: Многоверсионное управление конкурентным доступом (MVCC) href: mvcc.md +- name: Резервное копирование и восстановление + href: backup.md +- name: Коллекции резервных копий + href: backup-collections.md - name: Асинхронная репликация href: async-replication.md when: feature_async_replication diff --git a/ydb/docs/ru/core/maintenance/manual/backup-collections.md b/ydb/docs/ru/core/maintenance/manual/backup-collections.md new file mode 100644 index 000000000000..257ff64bb346 --- /dev/null +++ b/ydb/docs/ru/core/maintenance/manual/backup-collections.md @@ -0,0 +1,389 @@ +# Операции с коллекциями резервных копий {#backup-collections-operations} + +Данное руководство охватывает все практические операции для создания, управления и восстановления из коллекций резервных копий. Для получения концептуальной информации см. [Концепции коллекций резервных копий](../../concepts/backup-collections.md). + +## Создание коллекций резервных копий {#creating-collections} + +### Справочник по синтаксису SQL {#sql-syntax-reference} + +```sql +-- Синтаксис CREATE BACKUP COLLECTION +CREATE BACKUP COLLECTION `collection_name` + ( TABLE `table_path` [, TABLE `table_path` ...] ) +WITH ( STORAGE = 'cluster', INCREMENTAL_BACKUP_ENABLED = 'true' ); + +-- Синтаксис BACKUP +BACKUP `collection_name` [INCREMENTAL]; + +-- Синтаксис DROP BACKUP COLLECTION +DROP BACKUP COLLECTION `collection_name`; +``` + +Для подробного синтаксиса см. [справочную документацию YQL](../../yql/reference/syntax/index.md). + +### Базовое создание коллекции {#basic-collection-creation} + +Создайте коллекцию резервных копий с помощью SQL команд. Коллекция определяет, какие таблицы включить и настройки хранения: + +```sql +CREATE BACKUP COLLECTION `shop_backups` + ( TABLE `/Root/shop/orders`, TABLE `/Root/shop/products` ) +WITH ( STORAGE = 'cluster', INCREMENTAL_BACKUP_ENABLED = 'true' ); +``` + +### Планирование коллекции {#collection-planning} + +Перед созданием коллекции рассмотрите: + +- **Выбор таблиц**: Включите связанные таблицы, которые должны резервироваться согласованно. +- **Требования к хранению**: Оцените размер резервной копии и рост. +- **Частота резервного копирования**: Планируйте расписания полного и инкрементального резервного копирования. +- **Политика хранения**: Определите, как долго хранить цепочки резервных копий. + +### Соглашения об именах {#naming-conventions} + +Используйте описательные имена, которые указывают: + +- Имя приложения или сервиса. +- Окружение (prod, staging, test). +- Цель или область применения. + +Примеры: + +- `production_user_data` +- `staging_analytics` +- `daily_transaction_backups` + +## Создание резервных копий {#taking-backups} + +### Начальная полная резервная копия {#initial-full-backup} + +После создания коллекции сделайте начальную полную резервную копию: + +```sql +BACKUP `shop_backups`; +``` + +Первая резервная копия без ключевого слова `INCREMENTAL` создает полную резервную копию, содержащую все данные из указанных таблиц. + +### Инкрементальные резервные копии {#incremental-backups} + +Для последующих резервных копий используйте инкрементальный режим: + +```sql +BACKUP `shop_backups` INCREMENTAL; +``` + +### Рекомендации по времени резервного копирования {#backup-timing-recommendations} + +Реализуйте регулярные расписания резервного копирования в соответствии с вашими требованиями. Обратите внимание, что планирование должно быть реализовано внешними средствами с использованием cron или аналогичных инструментов. + +**Ежедневные полные резервные копии:** + +```sql +-- Пример: Запуск ежедневно в 2 утра (требует внешнего планирования) +BACKUP `shop_backups`; +``` + +**Часовые инкрементальные с еженедельными полными резервными копиями:** + +```sql +-- Пример: Воскресенье: Полная резервная копия (требует внешнего планирования) +BACKUP `shop_backups`; + +-- Пример: Понедельник-Суббота: Инкрементальные резервные копии (требует внешнего планирования) +BACKUP `shop_backups` INCREMENTAL; +``` + +### Важные замечания по планированию {#scheduling-important-notes} + +- **Требуется внешнее планирование**: YDB не предоставляет встроенного планирования. Используйте cron или аналогичные инструменты. +- **Фоновые операции**: Резервные копии выполняются асинхронно и не блокируют операции базы данных. +- **Несколько коллекций**: Можно выполнять резервное копирование разных коллекций независимо. + +Примечание: Планирование резервного копирования должно быть реализовано с использованием внешних инструментов, таких как cron, поскольку YDB не предоставляет встроенного планирования. + +## Мониторинг операций резервного копирования {#monitoring} + +### Мониторинг операций резервного копирования {#monitoring-backup-operations} + +```bash +# Проверка статуса операций резервного копирования +ydb operation list incbackup + +# Получение подробностей о конкретной операции +ydb operation get + +# Отмена выполняющейся операции при необходимости +ydb operation cancel + +# Просмотр коллекций резервных копий +ydb scheme ls .backups/collections/ + +# Список резервных копий в коллекции +ydb scheme ls .backups/collections/production_backups/ + +# Получение метаданных резервной копии +ydb scheme describe .backups/collections/production_backups/backup_20240315_120000/ +``` + +### Проверка статуса операций {#checking-operation-status} + +Все операции резервного копирования выполняются в фоновом режиме. Отслеживайте их прогресс с помощью: + +```bash +# Список всех операций резервного копирования +ydb operation list incbackup + +# Проверка статуса конкретной операции +ydb operation get +``` + +### Просмотр структуры резервных копий {#viewing-backup-structure} + +Просматривайте резервные копии через схему базы данных: + +```bash +# Список всех коллекций +ydb scheme ls .backups/collections/ + +# Просмотр структуры конкретной коллекции +ydb scheme ls .backups/collections/shop_backups/ + +# Проверка временных меток резервных копий +ydb scheme ls .backups/collections/shop_backups/ | sort +``` + +### Мониторинг цепочек резервных копий {#monitoring-backup-chains} + +Проверка целостности цепочки резервных копий: + +```bash +# Список резервных копий в хронологическом порядке +ydb scheme ls .backups/collections/shop_backups/ | sort + +# Проверка содержимого отдельной резервной копии +ydb scheme describe .backups/collections/shop_backups/backup_20240315/ +``` + +## Управление коллекциями резервных копий {#managing-collections} + +### Информация о коллекции {#collection-information} + +Поскольку коллекции управляются через SQL, просматривайте их с помощью команд схемы: + +```bash +# Просмотр всех коллекций +ydb scheme ls .backups/collections/ + +# Просмотр содержимого каталога коллекции +ydb scheme describe .backups/collections/shop_backups/ +``` + +### Мониторинг состояния коллекции + +Проверка работоспособности и состояния ваших коллекций: + +1. **Проверка существования последних резервных копий**. +2. **Проверка полноты цепочки резервных копий**. +3. **Мониторинг использования хранилища**. +4. **Валидация доступности резервных копий**. + +### Управление жизненным циклом коллекции + +**Контрольный список создания:** + +- [ ] Определить список таблиц. +- [ ] Выбрать подходящее имя. +- [ ] Настроить параметры хранения. +- [ ] Включить инкрементальные резервные копии. +- [ ] Документировать расписание резервного копирования. + +**Текущее обслуживание:** + +- [ ] Мониторинг успешности резервного копирования. +- [ ] Управление политиками хранения. +- [ ] Обновление документации. +- [ ] Проверка влияния на производительность. + +## Хранение и очистка {#retention-cleanup} + +### Рассмотрения цепочки резервных копий + +Перед удалением резервных копий понимайте зависимости цепочки: + +- **Полные резервные копии**: Требуются для всех последующих инкрементальных. +- **Инкрементальные резервные копии**: Зависят от всех предыдущих резервных копий в цепочке. +- **Разрывы цепочки**: Удаление промежуточных резервных копий нарушает цепочку. + +### Стратегии ручной очистки + +**Безопасный подход к очистке:** + +1. Создать новую полную резервную копию. +2. Проверить завершение новой резервной копии. +3. Удалить старые цепочки резервных копий (полная резервная копия + все её инкрементальные). +4. Никогда не удалять частичные цепочки. + +**Пример рабочего процесса очистки:** + +```bash +# 1. Создание новой полной резервной копии +ydb yql -s "BACKUP \`shop_backups\`;" + +# 2. Ожидание завершения и проверка +ydb operation list incbackup + +# 3. Просмотр структуры резервных копий +ydb scheme ls .backups/collections/shop_backups/ | sort + +# 4. Удаление старых каталогов резервных копий (только целые цепочки) +ydb scheme rmdir -r .backups/collections/shop_backups/backup_20240301/ +ydb scheme rmdir -r .backups/collections/shop_backups/backup_20240302/ +# ... (удалить все связанные инкрементальные) +``` + +### Политики хранения + +Реализуйте политики хранения на основе: + +- **Бизнес-требований**: Как долго данные должны храниться. +- **Стоимости хранения**: Баланс между хранением и использованием хранилища. +- **Потребностей восстановления**: Типичные сценарии восстановления и временные рамки. +- **Соответствия требованиям**: Правовые или регулятивные требования. + +**Пример политики хранения:** + +- Хранить ежедневные резервные копии в течение 30 дней. +- Хранить еженедельные резервные копии в течение 12 недель. +- Хранить месячные резервные копии в течение 12 месяцев. +- Хранить годовые резервные копии в течение 7 лет. + +## Валидация и проверка резервных копий {#validation} + +### Предварительная валидация резервного копирования + +Перед созданием резервных копий: + +1. **Проверка доступности таблиц**: Убедитесь, что все таблицы доступны. +2. **Проверка места хранения**: Подтвердите наличие достаточного места для хранения. +3. **Валидация разрешений**: Проверьте разрешения на операции резервного копирования. +4. **Тестирование подключения**: Убедитесь в стабильности подключения к базе данных. + +### Пост-валидация резервного копирования + +После завершения резервного копирования: + +1. **Проверка успешности операции**: Проверьте статус операции. +2. **Валидация структуры резервной копии**: Просмотрите каталоги резервных копий. +3. **Проверка размера резервной копии**: Сравните с ожидаемым размером. +4. **Тестирование целостности цепочки**: Проверьте зависимости резервных копий. + +### Процедуры тестирования резервных копий + +Регулярно тестируйте восстановление резервных копий: + +1. **Тестовая среда**: Используйте отдельную тестовую среду. +2. **Выборочное восстановление**: Восстанавливайте подмножество данных. +3. **Тест полного восстановления**: Периодически тестируйте полное восстановление. +4. **Тестирование производительности**: Измеряйте время восстановления и ресурсы. + +## Устранение распространенных проблем {#troubleshooting} + +### Сбои операций резервного копирования {#backup-operation-failures} + +**Распространенные причины и решения:** + +- **Недостаточно места для хранения**: Проверьте доступное место для хранения. +- **Отказ в доступе**: Проверьте разрешения пользователя для таблиц и хранилища резервных копий. +- **Конфликты блокировки таблиц**: Избегайте одновременных изменений схемы во время резервного копирования. +- **Проблемы с сетью**: Проверьте подключение к базе данных во время резервного копирования. + +### Проблемы с цепочкой резервных копий + +**Разорванные цепочки:** + +- Определите отсутствующие резервные копии в последовательности. +- Рассмотрите создание новой полной резервной копии для начала свежей цепочки. +- Документируйте разрывы цепочки для будущих ссылок. + +**Несогласованные резервные копии:** + +- Проверьте одновременные операции во время резервного копирования. +- Проверьте согласованность таблиц в точках резервного копирования. +- Просмотрите журналы резервного копирования на предмет ошибок или предупреждений. + +### Проблемы производительности + +**Медленные операции резервного копирования:** + +- Мониторьте системные ресурсы во время резервного копирования. +- Рассмотрите корректировку времени резервного копирования. +- Просмотрите размеры таблиц и распределение данных. +- Проверьте производительность бэкенда хранения. + +**Высокое использование хранилища:** + +- Просмотрите политики хранения. +- Очистите старые цепочки резервных копий. +- Мониторьте размеры инкрементальных резервных копий. +- Рассмотрите корректировку частоты резервного копирования. + +## Восстановление и реставрация {#recovery} + +### Планирование восстановления + +Перед восстановлением из резервных копий: + +1. **Оценка требований восстановления**: Определите целевую точку восстановления. +2. **Планирование процесса восстановления**: Определите шаги и временные рамки восстановления. +3. **Подготовка целевой среды**: Убедитесь, что целевая база данных готова. +4. **Координация с заинтересованными сторонами**: Сообщите временные рамки восстановления. + +### Восстановление экспорт/импорт + +Для полного аварийного восстановления используйте операции экспорта/импорта: + +```bash +# Экспорт коллекции резервных копий из источника +ydb tools dump -p .backups/collections/shop_backups -o shop_backups_export + +# Импорт в целевую базу данных +ydb tools restore -i shop_backups_export -d /Root/restored_db +``` + +### Восстановление на момент времени + +Для восстановления до определенного момента времени: + +1. **Определение целевой резервной копии**: Найдите подходящую точку резервной копии. +2. **Экспорт цепочки резервных копий**: Экспортируйте полную резервную копию и необходимые инкрементальные. +3. **Восстановление по порядку**: Примените резервные копии в хронологическом порядке. +4. **Проверка восстановления**: Валидируйте целостность восстановленных данных. + +## Сводка лучших практик {#best-practices} + +### Стратегия резервного копирования + +- **Регулярное расписание**: Установите согласованное время резервного копирования. +- **Управление длиной цепочки**: Периодически создавайте новые полные резервные копии, чтобы избежать чрезмерно длинных инкрементальных цепочек. +- **Множественные коллекции**: Отдельные коллекции для разных приложений. +- **Документирование**: Ведите документацию процедур резервного копирования. + +### Мониторинг и обслуживание + +- **Ручная валидация**: Периодически тестируйте восстановление резервных копий. +- **Отслеживание производительности**: Мониторьте продолжительность резервного копирования и использование ресурсов. +- **Мониторинг хранилища**: Отслеживайте рост хранилища резервных копий. + +### Безопасность и соответствие + +- **Контроль доступа**: Ограничьте разрешения на операции резервного копирования. +- **Ведение журнала аудита**: Записывайте действия резервного копирования и восстановления. +- **Защита данных**: Обеспечьте правильную защиту резервных копий. +- **Соответствие**: Следуйте организационным политикам хранения данных. + +## См. также {#see-also} + +- [Концепции коллекций резервных копий](../../concepts/backup-collections.md) - Общая архитектура и дизайн. +- [Распространенные рецепты](../../recipes/backup-collections.md) - Практические примеры использования. diff --git a/ydb/docs/ru/core/maintenance/manual/toc_i.yaml b/ydb/docs/ru/core/maintenance/manual/toc_i.yaml index 8c997cc0d62e..9f37f5d37bc5 100644 --- a/ydb/docs/ru/core/maintenance/manual/toc_i.yaml +++ b/ydb/docs/ru/core/maintenance/manual/toc_i.yaml @@ -11,6 +11,8 @@ items: href: ../../devops/deployment-options/manual/decommissioning.md - name: Перевоз VDisk'ов href: moving_vdisks.md +- name: Операции с коллекциями резервных копий + href: backup-collections.md - name: Предотвращение выхода за модель отказа href: failure_model.md - name: Балансировка нагрузки на диски diff --git a/ydb/docs/ru/core/recipes/backup-collections.md b/ydb/docs/ru/core/recipes/backup-collections.md new file mode 100644 index 000000000000..4462025bd222 --- /dev/null +++ b/ydb/docs/ru/core/recipes/backup-collections.md @@ -0,0 +1,252 @@ +# Коллекции резервных копий: Распространенные рецепты и примеры {#backup-collections-recipes} + +Данное руководство предоставляет практические примеры для распространенных случаев использования коллекций резервных копий. Для базовых операций см. [руководство по операциям](../maintenance/manual/backup-collections.md). + +## Базовый рабочий процесс резервного копирования {#basic-workflow} + +### Создание первой коллекции резервных копий {#creating-first-collection} + +```sql +-- Создание коллекции для связанных таблиц +CREATE BACKUP COLLECTION `production_backups` + ( TABLE `/Root/shop/orders` + , TABLE `/Root/shop/products` + , TABLE `/Root/shop/customers` + ) +WITH ( STORAGE = 'cluster', INCREMENTAL_BACKUP_ENABLED = 'true' ); +``` + +### Создание резервных копий {#creating-backups} + +```sql +-- Создание первоначальной полной резервной копии +BACKUP `production_backups`; + +-- Позже создание инкрементальных резервных копий +BACKUP `production_backups` INCREMENTAL; +``` + +### Мониторинг операций резервного копирования {#monitoring-backup-operations} + +```bash +# Проверка статуса операций резервного копирования +ydb operation list incbackup + +# Получение подробностей для конкретной операции +ydb operation get + +# Просмотр коллекций резервных копий +ydb scheme ls .backups/collections/ + +# Список резервных копий в коллекции +ydb scheme ls .backups/collections/production_backups/ +``` + +## Настройка для нескольких сред {#multi-environment} + +### Среда разработки {#development-environment} + +```sql +-- Создание коллекции с меньшим количеством таблиц для тестирования +CREATE BACKUP COLLECTION `dev_test_backups` + ( TABLE `/Root/dev/users` + , TABLE `/Root/dev/test_data` + ) +WITH ( STORAGE = 'cluster', INCREMENTAL_BACKUP_ENABLED = 'true' ); + +-- Ежедневные полные резервные копии в среде разработки +BACKUP `dev_test_backups`; +``` + +### Производственная среда {#production-environment} + +```sql +-- Создание комплексной коллекции для продакшена +CREATE BACKUP COLLECTION `prod_daily_backups` + ( TABLE `/Root/production/orders` + , TABLE `/Root/production/products` + , TABLE `/Root/production/customers` + , TABLE `/Root/production/inventory` + , TABLE `/Root/production/transactions` + ) +WITH ( STORAGE = 'cluster', INCREMENTAL_BACKUP_ENABLED = 'true' ); + +-- Еженедельная полная резервная копия +BACKUP `prod_daily_backups`; + +-- Ежедневные инкрементальные резервные копии +BACKUP `prod_daily_backups` INCREMENTAL; +``` + +## Стратегия резервного копирования микросервисов {#microservices} + +### Коллекции для отдельных сервисов {#individual-service-collections} + +```sql +-- Коллекция резервных копий пользовательского сервиса +CREATE BACKUP COLLECTION `user_service_backups` + ( TABLE `/Root/users/profiles` + , TABLE `/Root/users/preferences` + , TABLE `/Root/users/sessions` + ) +WITH ( STORAGE = 'cluster', INCREMENTAL_BACKUP_ENABLED = 'true' ); + +-- Коллекция резервных копий сервиса заказов +CREATE BACKUP COLLECTION `order_service_backups` + ( TABLE `/Root/orders/orders` + , TABLE `/Root/orders/order_items` + , TABLE `/Root/orders/payments` + ) +WITH ( STORAGE = 'cluster', INCREMENTAL_BACKUP_ENABLED = 'true' ); + +-- Коллекция резервных копий сервиса инвентаря +CREATE BACKUP COLLECTION `inventory_service_backups` + ( TABLE `/Root/inventory/products` + , TABLE `/Root/inventory/stock_levels` + , TABLE `/Root/inventory/warehouses` + ) +WITH ( STORAGE = 'cluster', INCREMENTAL_BACKUP_ENABLED = 'true' ); +``` + +### Рабочий процесс резервного копирования сервисов {#service-backup-workflow} + +```sql +-- Создание резервных копий для каждого сервиса независимо +BACKUP `user_service_backups`; +BACKUP `order_service_backups`; +BACKUP `inventory_service_backups`; + +-- Позже создание инкрементальных резервных копий +BACKUP `user_service_backups` INCREMENTAL; +BACKUP `order_service_backups` INCREMENTAL; +BACKUP `inventory_service_backups` INCREMENTAL; +``` + +## Экспорт данных и восстановление {#export-recovery} + +### Экспорт коллекций резервных копий {#exporting-backup-collections} + +Для аварийного восстановления или миграции экспортируйте коллекции резервных копий с использованием стандартных инструментов YDB: + +```bash +# Экспорт коллекции резервных копий +ydb tools dump -p .backups/collections/production_backups -o /backup/exports/production_backups_export + +# Экспорт конкретной резервной копии из коллекции +ydb tools dump -p .backups/collections/production_backups/backup_20240315_120000 -o /backup/exports/backup_20240315 +``` + +### Импорт в целевую базу данных {#importing-to-target-database} + +```bash +# Импорт резервной копии в целевую базу данных +ydb tools restore -i /backup/exports/production_backups_export -d /Root/restored_production + +# Импорт конкретной резервной копии +ydb tools restore -i /backup/exports/backup_20240315 -d /Root/restored_data +``` + +## Управление коллекциями {#collection-management} + +### Проверка статуса коллекции {#checking-collection-status} + +```bash +# Список всех коллекций +ydb scheme ls .backups/collections/ + +# Проверка содержимого конкретной коллекции +ydb scheme ls .backups/collections/production_backups/ | sort + +# Получение подробностей коллекции +ydb scheme describe .backups/collections/production_backups/ +``` + +### Ручная очистка {#manual-cleanup} + +```bash +# Удаление старых каталогов резервных копий (ручная очистка) +ydb scheme rmdir -r .backups/collections/production_backups/backup_20240301_120000/ + +# Всегда удаляйте полные цепи, никогда не удаляйте частичные цепи +# Пример: Удаление старой полной резервной копии и всех её инкрементальных копий +ydb scheme rmdir -r .backups/collections/production_backups/backup_20240301_120000/ +ydb scheme rmdir -r .backups/collections/production_backups/backup_20240301_180000/ +ydb scheme rmdir -r .backups/collections/production_backups/backup_20240302_060000/ +``` + +### Жизненный цикл коллекции {#collection-lifecycle} + +```sql +-- Удаление коллекции, когда она больше не нужна (удаляет коллекцию и все резервные копии) +DROP BACKUP COLLECTION `old_collection_name`; +``` + +## Простая проверка резервных копий {#validation} + +### Проверка завершения резервного копирования {#checking-backup-completion} + +```bash +# Проверка успешного завершения операции резервного копирования +ydb operation list incbackup | grep -E "(COMPLETED|FAILED)" + +# Проверка существования каталога резервной копии +ydb scheme ls .backups/collections/production_backups/ | tail -1 +``` + +### Базовое тестирование резервных копий {#basic-backup-testing} + +```bash +# Экспорт недавней резервной копии для тестирования +ydb tools dump -p .backups/collections/production_backups/backup_20240315_120000 -o /tmp/test_restore + +# Тестовое восстановление во временное место (в тестовой среде) +ydb tools restore -i /tmp/test_restore -d /Root/test_restore_verification +``` + +## Сводка лучших практик {#best-practices} + +### Стратегия резервного копирования {#backup-strategy} + +- **Управление длиной цепочки**: Периодически создавайте новые полные резервные копии, чтобы избежать чрезмерно длинных инкрементальных цепочек. +- **Отдельные коллекции по сервисам**: Используйте разные коллекции для разных приложений/сервисов. +- **Регулярные полные резервные копии**: Создавайте полные резервные копии еженедельно или раз в две недели. +- **Регулярное тестирование**: Периодически проверяйте, что резервные копии можно восстановить. + +### Операции {#operations} + +- **Мониторинг статуса операций**: Всегда проверяйте завершение операций резервного копирования. +- **Ручная очистка**: Удаляйте старые цепи резервных копий вручную для управления хранилищем. +- **Документирование процедур**: Ведите документацию процедур резервного копирования и восстановления. +- **Планирование для катастроф**: Практикуйте процедуры восстановления в непроизводственных средах. + +### Управление хранилищем {#storage-management} + +- **Мониторинг использования хранилища**: Отслеживайте потребление хранилища резервных копий. +- **Планирование сохранности**: Определите, как долго хранить цепи резервных копий. +- **Экспорт важных резервных копий**: Используйте экспорт/импорт для долгосрочного архивирования. +- **Проверка целостности цепи**: Никогда не удаляйте частичные цепи резервных копий. + +## Распространенные проблемы и решения {#troubleshooting} + +### Сбои операций резервного копирования {#backup-operation-failures} + +- **Проверка разрешений**: Убедитесь, что пользователь имеет разрешения на операции резервного копирования. +- **Проверка доступа к таблицам**: Подтвердите, что все таблицы в коллекции доступны. +- **Мониторинг ресурсов**: Проверьте системные ресурсы во время операций резервного копирования. + +### Проблемы с хранилищем {#storage-issues} + +- **Очистка старых резервных копий**: Удалите старые цепи резервных копий для освобождения места. +- **Мониторинг размеров резервных копий**: Отслеживайте рост инкрементальных резервных копий. +- **Планирование емкости хранилища**: Оцените потребности в хранилище для сохранения резервных копий. + +### Управление цепями {#chain-management} + +- **Избегайте частичных удалений**: Никогда не удаляйте отдельные резервные копии из цепи. +- **Документируйте разрывы цепи**: Ведите учет любых прерываний цепи резервных копий. +- **Создавайте новые цепи**: Создавайте новые полные резервные копии, когда цепи становятся слишком длинными. + +## См. также {#see-also} + +- [Концепции коллекций резервных копий](../concepts/backup-collections.md) - Основные концепции и архитектура. +- [Руководство по операциям](../maintenance/manual/backup-collections.md) - Подробные операционные процедуры. diff --git a/ydb/docs/ru/core/recipes/toc_p.yaml b/ydb/docs/ru/core/recipes/toc_p.yaml index 84fa70938984..43beac1bf87f 100644 --- a/ydb/docs/ru/core/recipes/toc_p.yaml +++ b/ydb/docs/ru/core/recipes/toc_p.yaml @@ -1,4 +1,6 @@ items: +- name: Рецепты коллекций резервных копий + href: backup-collections.md - name: YDB SDK include: mode: link diff --git a/ydb/docs/ru/core/reference/ydb-cli/export-import/toc_i.yaml b/ydb/docs/ru/core/reference/ydb-cli/export-import/toc_i.yaml index 5390d8d317d9..70aafd953d70 100644 --- a/ydb/docs/ru/core/reference/ydb-cli/export-import/toc_i.yaml +++ b/ydb/docs/ru/core/reference/ydb-cli/export-import/toc_i.yaml @@ -13,3 +13,5 @@ items: href: import-s3.md - name: Импорт данных из файла в существующую таблицу href: import-file.md +- name: Коллекции резервных копий + href: ../../../maintenance/manual/backup-collections.md diff --git a/ydb/docs/ru/core/reference/ydb-cli/operation-list.md b/ydb/docs/ru/core/reference/ydb-cli/operation-list.md index b066bb3c3353..2e325343d1d0 100644 --- a/ydb/docs/ru/core/reference/ydb-cli/operation-list.md +++ b/ydb/docs/ru/core/reference/ydb-cli/operation-list.md @@ -11,9 +11,13 @@ * `global options` — [глобальные параметры](commands/global-options.md). * `options` — [параметры подкоманды](#options). * `kind` — тип операции. Возможные значения: - * `buildindex` — операции построения индекса; - * `export/s3` — операции экспорта; - * `import/s3` — операции импорта. + * `buildindex` — операции построения индекса. + * `export/yt` — операции экспорта в YT. + * `export/s3` — операции экспорта в S3. + * `scriptexec` — операции выполнения скриптов. + * `import/s3` — операции импорта из S3. + * `incbackup` — операции инкрементального резервного копирования. + * `restore` — операции восстановления. Посмотрите описание команды получения списка фоновых операций: diff --git a/ydb/docs/ru/core/yql/reference/presets.yaml b/ydb/docs/ru/core/yql/reference/presets.yaml index 4700d332e293..5fb8a2304fed 100644 --- a/ydb/docs/ru/core/yql/reference/presets.yaml +++ b/ydb/docs/ru/core/yql/reference/presets.yaml @@ -27,6 +27,7 @@ ydb: feature_map_tables: true feature_group_by_rollup_cube: true feature_window_functions: true + feature_backup_collections: true feature_bulk_tables: false yt: