def export_databases(server_values, db_list, options): """Export one or more databases This method performs the export of a list of databases first dumping the definitions then the data. It supports dumping replication commands (STOP SLAVE, CHANGE MASTER, START SLAVE) for exporting data for use in replication scenarios. server_values[in] server connection value dictionary db_list[in] list of database names options[in] option dictionary Must include the skip_* options for copy and export """ from mysql.utilities.command.dbcopy import get_copy_lock from mysql.utilities.common.server import connect_servers export = options.get("export", "definitions") rpl_mode = options.get("rpl_mode", "master") quiet = options.get("quiet", False) verbosity = options.get("verbosity", 0) locking = options.get("locking", "snapshot") conn_options = { 'quiet' : quiet, 'version' : "5.1.30", } servers = connect_servers(server_values, None, conn_options) source = servers[0] # Lock tables first my_lock = get_copy_lock(source, db_list, options, True) # if --rpl specified, write initial replication command if rpl_mode: rpl_info = get_change_master_command(source, options) write_commands(rpl_info[_RPL_FILE], ["STOP SLAVE;"], options) # dump metadata if export in ("definitions", "both"): export_metadata(source, server_values, db_list, options) # dump data if export in ("data", "both"): if options.get("display", "brief") != "brief": print "# NOTE : --display is ignored for data export." export_data(source, server_values, db_list, options) # if --rpl specified, write replication end command if rpl_mode: write_commands(rpl_info[_RPL_FILE], rpl_info[_RPL_COMMANDS], options) write_commands(rpl_info[_RPL_FILE], ["START SLAVE;"], options) my_lock.unlock()
def export_databases(server_values, db_list, options): """Export one or more databases This method performs the export of a list of databases first dumping the definitions then the data. It supports dumping replication commands (STOP SLAVE, CHANGE MASTER, START SLAVE) for exporting data for use in replication scenarios. server_values[in] server connection value dictionary db_list[in] list of database names options[in] option dictionary Must include the skip_* options for copy and export """ from mysql.utilities.command.dbcopy import get_copy_lock from mysql.utilities.common.server import connect_servers export = options.get("export", "definitions") rpl_mode = options.get("rpl_mode", "master") quiet = options.get("quiet", False) verbosity = options.get("verbosity", 0) locking = options.get("locking", "snapshot") skip_gtids = options.get("skip_gtid", False) # default is to generate GTIDs conn_options = { 'quiet' : quiet, 'version' : "5.1.30", } servers = connect_servers(server_values, None, conn_options) source = servers[0] # Check for GTID support supports_gtid = servers[0].supports_gtid() if not skip_gtids and not supports_gtid == 'ON': skip_gtids = True elif skip_gtids and supports_gtid == 'ON': print _GTID_WARNING if not skip_gtids and supports_gtid == 'ON': # Check GTID version for complete feature support servers[0].check_gtid_version() warning_printed = False # Check to see if this is a full export (complete backup) all_dbs = servers[0].exec_query("SHOW DATABASES") for db in all_dbs: if warning_printed: continue if db[0].upper() in ["MYSQL", "INFORMATION_SCHEMA", "PERFORMANCE_SCHEMA"]: continue if not db[0] in db_list: print _GTID_BACKUP_WARNING warning_printed = True # Lock tables first my_lock = get_copy_lock(source, db_list, options, True) # if --rpl specified, write initial replication command rpl_info = None if rpl_mode: rpl_info = get_change_master_command(source, options) write_commands(rpl_info[_RPL_FILE], ["STOP SLAVE;"], options) # if GTIDs enabled and user requested the output, write the GTID commands if skip_gtids: gtid_info = None else: gtid_info = get_gtid_commands(source, options) if gtid_info: write_commands(sys.stdout, gtid_info[0], options) # dump metadata if export in ("definitions", "both"): export_metadata(source, server_values, db_list, options) # dump data if export in ("data", "both"): if options.get("display", "brief") != "brief": print "# NOTE : --display is ignored for data export." export_data(source, server_values, db_list, options) # if GTIDs enabled, write the GTID-related commands if gtid_info: write_commands(sys.stdout, [gtid_info[1]], options) # if --rpl specified, write replication end command if rpl_mode: write_commands(rpl_info[_RPL_FILE], rpl_info[_RPL_COMMANDS], options) write_commands(rpl_info[_RPL_FILE], ["START SLAVE;"], options) my_lock.unlock()
def export_databases(server_values, db_list, options): """Export one or more databases This method performs the export of a list of databases first dumping the definitions then the data. It supports dumping replication commands (STOP SLAVE, CHANGE MASTER, START SLAVE) for exporting data for use in replication scenarios. server_values[in] server connection value dictionary db_list[in] list of database names options[in] option dictionary Must include the skip_* options for copy and export """ from mysql.utilities.command.dbcopy import get_copy_lock from mysql.utilities.common.server import connect_servers export = options.get("export", "definitions") rpl_mode = options.get("rpl_mode", "master") quiet = options.get("quiet", False) verbosity = options.get("verbosity", 0) locking = options.get("locking", "snapshot") skip_gtids = options.get("skip_gtid", False) # default is to generate GTIDs conn_options = { 'quiet': quiet, 'version': "5.1.30", } servers = connect_servers(server_values, None, conn_options) source = servers[0] # Check for GTID support supports_gtid = servers[0].supports_gtid() if not skip_gtids and not supports_gtid == 'ON': skip_gtids = True elif skip_gtids and supports_gtid == 'ON': print _GTID_WARNING if not skip_gtids and supports_gtid == 'ON': # Check GTID version for complete feature support servers[0].check_gtid_version() warning_printed = False # Check to see if this is a full export (complete backup) all_dbs = servers[0].exec_query("SHOW DATABASES") for db in all_dbs: if warning_printed: continue if db[0].upper() in [ "MYSQL", "INFORMATION_SCHEMA", "PERFORMANCE_SCHEMA" ]: continue if not db[0] in db_list: print _GTID_BACKUP_WARNING warning_printed = True # Lock tables first my_lock = get_copy_lock(source, db_list, options, True) # if --rpl specified, write initial replication command rpl_info = None if rpl_mode: rpl_info = get_change_master_command(source, options) write_commands(rpl_info[_RPL_FILE], ["STOP SLAVE;"], options) # if GTIDs enabled and user requested the output, write the GTID commands if skip_gtids: gtid_info = None else: gtid_info = get_gtid_commands(source, options) if gtid_info: write_commands(sys.stdout, gtid_info[0], options) # dump metadata if export in ("definitions", "both"): export_metadata(source, server_values, db_list, options) # dump data if export in ("data", "both"): if options.get("display", "brief") != "brief": print "# NOTE : --display is ignored for data export." export_data(source, server_values, db_list, options) # if GTIDs enabled, write the GTID-related commands if gtid_info: write_commands(sys.stdout, [gtid_info[1]], options) # if --rpl specified, write replication end command if rpl_mode: write_commands(rpl_info[_RPL_FILE], rpl_info[_RPL_COMMANDS], options) write_commands(rpl_info[_RPL_FILE], ["START SLAVE;"], options) my_lock.unlock()