Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added the initial script for the 40x example for backup and restore #16893

Merged
merged 16 commits into from
Jan 8, 2025
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions examples/local/401_backup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Copyright 2024 The Vitess Authors.
frouioui marked this conversation as resolved.
Show resolved Hide resolved
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# This script takes backups of the 'customer' keyspace and all its shards.

# Load common environment variables and functions
source ../common/env.sh

# Set keyspace and shard details for the 'customer' keyspace
KEYSPACE="customer"
SHARDS=("-80" "80-")

# Ensure the keyspace and shards are healthy
echo "Ensuring keyspace $KEYSPACE exists and shards are healthy..."
for shard in "${SHARDS[@]}"; do
if ! wait_for_healthy_shard "$KEYSPACE" "$shard"; then
echo "Shard $shard is not healthy. Exiting..."
exit 1
fi
done

# Backup all shards of the customer keyspace
for shard in "${SHARDS[@]}"; do
echo "Backing up shard $shard in keyspace $KEYSPACE..."
if vtctldclient BackupShard "$KEYSPACE/$shard"; then
frouioui marked this conversation as resolved.
Show resolved Hide resolved
echo "Backup succeeded for shard $shard."
else
echo "Backup failed for shard $shard."
exit 1
fi
done

echo "Backup process completed successfully for all shards in $KEYSPACE."
28 changes: 28 additions & 0 deletions examples/local/402_list_backup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Copyright 2024 The Vitess Authors.
frouioui marked this conversation as resolved.
Show resolved Hide resolved
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Load common environment variables and functions
source ../common/env.sh # Import necessary environment variables and functions from a common script

# Set keyspace and shard details for the 'customer' keyspace
KEYSPACE="customer" # Define the keyspace to work with
SHARDS=("-80" "80-") # Define the shards within the keyspace to list backups for

# List backups for each shard
for shard in "${SHARDS[@]}"; do # Loop through each shard defined earlier
echo "Listing available backups for keyspace $KEYSPACE and shard $shard..." # Log the start of the backup listing
vtctldclient GetBackups "$KEYSPACE/$shard" || echo "Failed to list backups for keyspace $KEYSPACE and shard $shard" # Attempt to list backups; log failure if it occurs
done

echo "Backup listing process completed." # Log completion of the backup listing process
46 changes: 46 additions & 0 deletions examples/local/403_restore_from_backup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Copyright 2024 The Vitess Authors.
frouioui marked this conversation as resolved.
Show resolved Hide resolved

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# This script restores the first replica tablet from backups for the 'customer' keyspace.

# Load common environment variables and functions
source ../common/env.sh # Import necessary environment variables and functions from a common script

# Set keyspace and shard details for the 'customer' keyspace
KEYSPACE="customer" # Define the keyspace to work with
SHARDS=("-80" "80-") # Define the shards within the keyspace to restore

# Restore all shards of the customer keyspace from backups
for shard in "${SHARDS[@]}"; do # Loop through each shard defined earlier
echo "Finding replica tablets for shard $shard..." # Log the start of the tablet search

# Fetch the list of replica tablets for the current shard
REPLICA_TABLETS=$(vtctldclient GetTablets --keyspace="$KEYSPACE" --shard="$shard" --tablet-type=replica | awk '{print $1}') # Extract the first column containing tablet names
REPLICA_COUNT=$(echo "$REPLICA_TABLETS" | wc -l) # Count the number of replica tablets found

# Check if any replica tablets were found
if [ "$REPLICA_COUNT" -lt 1 ]; then # If the count is less than 1, no replicas were found
echo "No replica tablets found for shard $shard. Exiting..." # Log a message and exit if none are found
exit 1 # Exit the script with an error code
fi

# Choose the first replica for restoration
RESTORE_TABLET=$(echo "$REPLICA_TABLETS" | head -n 1) # Select the first replica tablet from the list
echo "Restoring tablet $RESTORE_TABLET from backup for shard $shard..." # Log the restoration action

# Restore from backup and handle any failures
vtctldclient RestoreFromBackup "$RESTORE_TABLET" || fail "Restore failed for tablet $RESTORE_TABLET" # Attempt to restore from backup and log an error message if it fails
done

echo "Restore process completed successfully for $KEYSPACE." # Log completion of the restore process
mattlord marked this conversation as resolved.
Show resolved Hide resolved
File renamed without changes.
2 changes: 1 addition & 1 deletion test/local_example.sh
frouioui marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -98,5 +98,5 @@ mysql --table < ../common/select_customer80-_data.sql

./306_down_shard_0.sh

./401_teardown.sh
frouioui marked this conversation as resolved.
Show resolved Hide resolved
./501_teardown.sh

Loading