PITR Manager
This section documents the PITR (Point-in-Time Recovery) management classes that provide precise data recovery capabilities.
PitrManager
- class matrixone.pitr.PitrManager(client, executor=None)[source]
Bases:
objectManager for Point-in-Time Recovery (PITR) operations in MatrixOne.
This class provides comprehensive PITR functionality for recovering data to specific points in time. PITR allows you to restore databases or tables to their state at any point in time, providing granular recovery capabilities for data protection and disaster recovery.
Key Features:
Point-in-time recovery for databases and tables
Recovery to specific timestamps
Integration with backup and snapshot systems
Transaction-aware recovery operations
Support for both cluster and table-level recovery
Supported Recovery Levels: - CLUSTER: Full cluster recovery to a specific point in time - DATABASE: Database-level recovery to a specific point in time - TABLE: Table-level recovery to a specific point in time
Usage Examples:
# Initialize PITR manager pitr = client.pitr # Recover database to specific timestamp pitr.recover_database( database='my_database', timestamp='2024-01-15 10:30:00', target_database='recovered_database' ) # Recover table to specific timestamp pitr.recover_table( database='my_database', table='users', timestamp='2024-01-15 10:30:00', target_database='recovered_database', target_table='recovered_users' ) # List available recovery points recovery_points = pitr.list_recovery_points('my_database') # Get recovery status status = pitr.get_recovery_status('recovery_job_id')
Note: PITR functionality requires MatrixOne version 1.0.0 or higher and appropriate backup infrastructure. Recovery operations may take significant time depending on the amount of data and the target timestamp.
- __init__(client, executor=None)[source]
Initialize PITR manager.
- Parameters:
client – MatrixOne client instance
executor – Optional executor (e.g., session) for executing SQL. If None, uses client.execute
- create_cluster_pitr(name: str, range_value: int = 1, range_unit: str = 'd') Pitr[source]
Create cluster-level PITR
Args:
name: PITR name range_value: Time range value (1-100) range_unit: Time range unit (h, d, mo, y)
Returns:
Pitr: Created PITR object
Raises:
PitrError: If PITR creation fails
Example
>>> pitr = client.pitr.create_cluster_pitr("cluster_pitr1", 1, "d")
- create_account_pitr(name: str, account_name: str | None = None, range_value: int = 1, range_unit: str = 'd') Pitr[source]
Create account-level PITR
Args:
name: PITR name account_name: Account name (None for current account) range_value: Time range value (1-100) range_unit: Time range unit (h, d, mo, y)
Returns:
Pitr: Created PITR object
Raises:
PitrError: If PITR creation fails
Example
>>> # For current account >>> pitr = client.pitr.create_account_pitr("account_pitr1", range_value=2, range_unit="h") >>> >>> # For specific account (cluster admin only) >>> pitr = client.pitr.create_account_pitr("account_pitr1", "acc1", 1, "d")
- create_database_pitr(name: str, database_name: str, range_value: int = 1, range_unit: str = 'd') Pitr[source]
Create database-level PITR
Args:
name: PITR name database_name: Database name range_value: Time range value (1-100) range_unit: Time range unit (h, d, mo, y)
Returns:
Pitr: Created PITR object
Raises:
PitrError: If PITR creation fails
Example
>>> pitr = client.pitr.create_database_pitr("db_pitr1", "db1", 1, "y")
- create_table_pitr(name: str, database_name: str, table_name: str, range_value: int = 1, range_unit: str = 'd') Pitr[source]
Create table-level PITR
Args:
name: PITR name database_name: Database name table_name: Table name range_value: Time range value (1-100) range_unit: Time range unit (h, d, mo, y)
Returns:
Pitr: Created PITR object
Raises:
PitrError: If PITR creation fails
Example
>>> pitr = client.pitr.create_table_pitr("tab_pitr1", "db1", "t1", 1, "y")
- get(name: str) Pitr[source]
Get PITR by name
Args:
name: PITR name
Returns:
Pitr: PITR object
Raises:
PitrError: If PITR not found
- list(level: str | None = None, account_name: str | None = None, database_name: str | None = None, table_name: str | None = None) List[Pitr][source]
List PITRs with optional filters
Args:
level: Filter by PITR level (cluster, account, database, table) account_name: Filter by account name database_name: Filter by database name table_name: Filter by table name
Returns:
List[Pitr]: List of PITR objects
Pitr
- class matrixone.pitr.Pitr(name: str, created_time: datetime, modified_time: datetime, level: str, account_name: str | None = None, database_name: str | None = None, table_name: str | None = None, range_value: int = 1, range_unit: str = 'd')[source]
Bases:
objectPITR (Point-in-Time Recovery) object
- __init__(name: str, created_time: datetime, modified_time: datetime, level: str, account_name: str | None = None, database_name: str | None = None, table_name: str | None = None, range_value: int = 1, range_unit: str = 'd')[source]
Initialize PITR object
Args:
name: PITR name created_time: Creation time modified_time: Last modification time level: PITR level (cluster, account, database, table) account_name: Account name (for account/database/table level) database_name: Database name (for database/table level) table_name: Table name (for table level) range_value: Time range value (1-100) range_unit: Time range unit (h, d, mo, y)