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: object

Manager 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
alter(name: str, range_value: int, range_unit: str) Pitr[source]

Alter PITR range

Args:

name: PITR name
range_value: New time range value (1-100)
range_unit: New time range unit (h, d, mo, y)

Returns:

Pitr: Updated PITR object

Raises:

PitrError: If PITR alteration fails
delete(name: str) bool[source]

Delete PITR

Args:

name: PITR name

Returns:

bool: True if deletion was successful

Raises:

PitrError: If PITR deletion fails

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: object

PITR (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)