1
0
mirror of https://github.com/MariaDB/server.git synced 2026-10-23 18:49:29 +03:00
Files
mariadb/sql/backup.h
Monty 80c24c8327 Integrate the old and new backup code
Fixes a lot of issues in current backup code:
- Galera should now be supported (needs testing)
- Enables ddl logging (so we can use it in the future)
- Flushes binary logs (we still must add code to copy them)
- mdl locks are consistent between maria-backup and backup command
- startup backup code for InnoDB moved to innodb_prepare_for_backup()
  called by prepare_for_backup hton handler.
- Give errors if backup command is done under a transaction, global
  read lock or lock tables.
- Retry for MDL_BACKUP_WAIT_DDL (needed for
  backup.backup_ddl_concurrent_verify)
- Removed wrong log locks in Aria

Things to do (in addition to the things in my earlier review) :
- At backup_stage stage start, force rotate of aria log files. This
  allows us to copy all old logs without any locks
- Copy all transactional tables and old aria logs under BACKUP_START (as
- maria-backup does)
- Copy the active aria log file under block commit (Only one file as aria
  log rotation is disabled while backup is running.
- Improve speed of copying aria tables by copy files in up to 1M
  blocks and run checksum on the blocks and only re-read blocks with
-  wrong checksum.
- Copy non transactional files under BACKUP_PHASE_NO_BEGIN_NON_TRANS.
  Note that Aria does not support the documented
  BACKUP_PHASE_NO_DML_NON_TRANS . The BACKUP_PHASE_NO_BEGIN_NON_TRANS
  state is already blocking changes to non transactional tables
2026-09-17 14:58:03 +03:00

49 lines
1.7 KiB
C

#ifndef BACKUP_INCLUDED
#define BACKUP_INCLUDED
/* Copyright (c) 2018, MariaDB Corporation
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
enum backup_stages
{
BACKUP_NONE= -1,
BACKUP_START, BACKUP_FLUSH, BACKUP_WAIT_FOR_FLUSH, BACKUP_LOCK_COMMIT,
BACKUP_END, BACKUP_FINISHED
};
extern TYPELIB backup_stage_names;
struct backup_log_info {
LEX_CSTRING query;
LEX_CUSTRING org_table_id; /* Unique id from frm */
LEX_CSTRING org_database, org_table;
LEX_CSTRING org_storage_engine_name;
LEX_CSTRING new_database, new_table;
LEX_CSTRING new_storage_engine_name;
LEX_CUSTRING new_table_id; /* Unique id from frm */
bool org_partitioned;
bool new_partitioned;
};
void backup_init();
bool run_backup_stage(THD *thd, backup_stages stage);
bool backup_end(THD *thd);
void backup_set_alter_copy_lock(THD *thd, TABLE *altered_table);
bool backup_reset_alter_copy_lock(THD *thd);
bool backup_lock(THD *thd, TABLE_LIST *table);
void backup_unlock(THD *thd);
void backup_log_ddl(const backup_log_info *info);
#endif /* BACKUP_INCLUDED */