summaryrefslogtreecommitdiff
path: root/trove/guestagent/datastore/mysql_common/service.py
diff options
context:
space:
mode:
authorLingxian Kong <anlin.kong@gmail.com>2020-09-02 10:10:23 +1200
committerLingxian Kong <anlin.kong@gmail.com>2020-09-07 20:40:56 +1200
commit4fb41b5198c865b46a02dd72501d12e60ec10dd6 (patch)
tree663e32e8cf216201c17d1dc25201d992eb249787 /trove/guestagent/datastore/mysql_common/service.py
parent768ec34dfef660f133f87218a6246a9ce111bcb5 (diff)
downloadtrove-4fb41b5198c865b46a02dd72501d12e60ec10dd6.tar.gz
Postgresql: Backup and restore
Change-Id: Icf08b7dc82ce501d82b45cf5412256a43716b6ae
Diffstat (limited to 'trove/guestagent/datastore/mysql_common/service.py')
-rw-r--r--trove/guestagent/datastore/mysql_common/service.py104
1 files changed, 0 insertions, 104 deletions
diff --git a/trove/guestagent/datastore/mysql_common/service.py b/trove/guestagent/datastore/mysql_common/service.py
index d9b569ec..67b21454 100644
--- a/trove/guestagent/datastore/mysql_common/service.py
+++ b/trove/guestagent/datastore/mysql_common/service.py
@@ -17,21 +17,18 @@ import re
from oslo_log import log as logging
from oslo_utils import encodeutils
-from oslo_utils import timeutils
import six
from six.moves import urllib
import sqlalchemy
from sqlalchemy import exc
from sqlalchemy.sql.expression import text
-from trove.backup.state import BackupState
from trove.common import cfg
from trove.common import exception
from trove.common import utils
from trove.common.configurations import MySQLConfParser
from trove.common.db.mysql import models
from trove.common.i18n import _
-from trove.conductor import api as conductor_api
from trove.guestagent.common import guestagent_utils
from trove.guestagent.common import operating_system
from trove.guestagent.common import sql_query
@@ -663,107 +660,6 @@ class BaseMySqlApp(service.BaseDbApp):
LOG.info("Finished restarting mysql")
- def create_backup(self, context, backup_info):
- storage_driver = CONF.storage_strategy
- backup_driver = cfg.get_configuration_property('backup_strategy')
- incremental = ''
- backup_type = 'full'
- if backup_info.get('parent'):
- incremental = (
- f'--incremental '
- f'--parent-location={backup_info["parent"]["location"]} '
- f'--parent-checksum={backup_info["parent"]["checksum"]}')
- backup_type = 'incremental'
-
- backup_id = backup_info["id"]
- image = cfg.get_configuration_property('backup_docker_image')
- name = 'db_backup'
- volumes = {'/var/lib/mysql': {'bind': '/var/lib/mysql', 'mode': 'rw'}}
- admin_pass = self.get_auth_password()
- user_token = context.auth_token
- auth_url = CONF.service_credentials.auth_url
- user_tenant = context.project_id
-
- swift_metadata = (
- f'datastore:{backup_info["datastore"]},'
- f'datastore_version:{backup_info["datastore_version"]}'
- )
- swift_container = backup_info.get('swift_container',
- CONF.backup_swift_container)
- swift_params = (f'--swift-extra-metadata={swift_metadata} '
- f'--swift-container {swift_container}')
-
- command = (
- f'/usr/bin/python3 main.py --backup --backup-id={backup_id} '
- f'--storage-driver={storage_driver} --driver={backup_driver} '
- f'--db-user=os_admin --db-password={admin_pass} '
- f'--db-host=127.0.0.1 '
- f'--os-token={user_token} --os-auth-url={auth_url} '
- f'--os-tenant-id={user_tenant} '
- f'{swift_params} '
- f'{incremental}'
- )
-
- # Update backup status in db
- conductor = conductor_api.API(context)
- mount_point = CONF.get(CONF.datastore_manager).mount_point
- stats = guestagent_utils.get_filesystem_volume_stats(mount_point)
- backup_state = {
- 'backup_id': backup_id,
- 'size': stats.get('used', 0.0),
- 'state': BackupState.BUILDING,
- 'backup_type': backup_type
- }
- conductor.update_backup(CONF.guest_id,
- sent=timeutils.utcnow_ts(microsecond=True),
- **backup_state)
- LOG.debug("Updated state for %s to %s.", backup_id, backup_state)
-
- # Start to run backup inside a separate docker container
- try:
- LOG.info('Starting to create backup %s, command: %s', backup_id,
- command)
- output, ret = docker_util.run_container(
- self.docker_client, image, name,
- volumes=volumes, command=command)
- result = output[-1]
- if not ret:
- msg = f'Failed to run backup container, error: {result}'
- LOG.error(msg)
- raise Exception(msg)
-
- backup_result = BACKUP_LOG.match(result)
- if backup_result:
- backup_state.update({
- 'checksum': backup_result.group('checksum'),
- 'location': backup_result.group('location'),
- 'success': True,
- 'state': BackupState.COMPLETED,
- })
- else:
- LOG.error(f'Cannot parse backup output: {result}')
- backup_state.update({
- 'success': False,
- 'state': BackupState.FAILED,
- })
- except Exception as err:
- LOG.error("Failed to create backup %s", backup_id)
- backup_state.update({
- 'success': False,
- 'state': BackupState.FAILED,
- })
- raise exception.TroveError(
- "Failed to create backup %s, error: %s" %
- (backup_id, str(err))
- )
- finally:
- LOG.info("Completed backup %s.", backup_id)
- conductor.update_backup(CONF.guest_id,
- sent=timeutils.utcnow_ts(
- microsecond=True),
- **backup_state)
- LOG.debug("Updated state for %s to %s.", backup_id, backup_state)
-
def restore_backup(self, context, backup_info, restore_location):
backup_id = backup_info['id']
storage_driver = CONF.storage_strategy