Not the answer you need?
Register and ask your own question!

Safest way to add primary key to table

dis45927dis45927 EntrantCurrent User Role Novice
I created a table without a primary key and an UPDATE statement caused the cluster to lock up due to this issue https://www.percona.com/blog/2013/10/18/innodb-scalability-issues-tables-without-primary-keys/

My question is, what's the best way to add a primary key to this table:

1. Use an ALTER table statement.
2. TRUNCATE table, then issue an ALTER statement to add the primary key and then INSERT rows.
3. DROP table and then issue a CREATE table with a primary key then INSERT rows.

I don't want to lock the cluster up again.

The table in questions has about 50k rows and is 10MB in size.

Comments

  • lorraine.pocklingtonlorraine.pocklington Percona Community Manager Legacy User Role Patron
    Could you just update with the versions and environment information?
  • dis45927dis45927 Entrant Current User Role Novice
    We have a Percona XtraDB Cluster of 3 nodes, all running version 5.6.24. The OS on each node is CentOS 6, 4GB RAM, Intel(R) Xeon(TM) CPU 2.80GHz (dual core).

    The result of a SHOW GLOBAL VARIABLES; statement is as follows (split over 2 posts):

    Variable_name;Value
    auto_increment_increment;3
    auto_increment_offset;2
    autocommit;ON
    automatic_sp_privileges;ON
    avoid_temporal_upgrade;OFF
    back_log;80
    basedir;/usr
    big_tables;OFF
    bind_address;*
    binlog_cache_size;32768
    binlog_checksum;CRC32
    binlog_direct_non_transactional_updates;OFF
    binlog_error_action;IGNORE_ERROR
    binlog_format;ROW
    binlog_gtid_simple_recovery;OFF
    binlog_max_flush_queue_time;0
    binlog_order_commits;ON
    binlog_row_image;FULL
    binlog_rows_query_log_events;OFF
    binlog_stmt_cache_size;32768
    binlogging_impossible_mode;IGNORE_ERROR
    block_encryption_mode;aes-128-ecb
    bulk_insert_buffer_size;8388608
    character_set_client;latin1
    character_set_connection;latin1
    character_set_database;latin1
    character_set_filesystem;binary
    character_set_results;latin1
    character_set_server;latin1
    character_set_system;utf8
    character_sets_dir;/usr/share/percona-xtradb-cluster/charsets/
    collation_connection;latin1_swedish_ci
    collation_database;latin1_swedish_ci
    collation_server;latin1_swedish_ci
    completion_type;NO_CHAIN
    concurrent_insert;AUTO
    connect_timeout;10
    core_file;OFF
    csv_mode;
    datadir;/var/lib/mysql/
    date_format;%Y-%m-%d
    datetime_format;%Y-%m-%d %H:%i:%s
    default_storage_engine;InnoDB
    default_tmp_storage_engine;InnoDB
    default_week_format;0
    delay_key_write;ON
    delayed_insert_limit;100
    delayed_insert_timeout;300
    delayed_queue_size;1000
    disconnect_on_expired_password;ON
    div_precision_increment;4
    end_markers_in_json;OFF
    enforce_gtid_consistency;ON
    enforce_storage_engine;
    eq_range_index_dive_limit;10
    event_scheduler;OFF
    expand_fast_index_creation;OFF
    expire_logs_days;3
    explicit_defaults_for_timestamp;OFF
    extra_max_connections;1
    extra_port;0
    flush;OFF
    flush_time;0
    foreign_key_checks;ON
    ft_boolean_syntax;+ -><()~*:""&|
    ft_max_word_len;84
    ft_min_word_len;4
    ft_query_expansion_limit;20
    ft_stopword_file;(built-in)
    general_log;OFF
    general_log_file;/var/lib/mysql/database01.log
    group_concat_max_len;102400
    gtid_deployment_step;OFF
    gtid_executed;aecfffa4-55b2-ee1a-5417-31ed7d9e97c3:1-149104818,
    eb55dadf-db4d-11e5-ae62-0011259dcb16:1-4193930
    gtid_mode;ON
    gtid_owned;aecfffa4-55b2-ee1a-5417-31ed7d9e97c3:61403833#14885144:61966645#15068932:61973098#15063624:62677904#15298043:61839513#15034335:61954783#15065496:61956753#15067169:62216955#15137921:61967200#15068932:61973079#15063624:61973095#15063624:61483418#14899277:61973112#15063624:61973114#15063624:61973680#15063624:62751587#15306881:62199223#15135974:62187813#15134559:62420886#15197500:61483772#14899277
    gtid_purged;aecfffa4-55b2-ee1a-5417-31ed7d9e97c3:1-148608286,
    eb55dadf-db4d-11e5-ae62-0011259dcb16:1-4193930
    have_backup_locks;YES
    have_compress;YES
    have_crypt;YES
    have_dynamic_loading;YES
    have_geometry;YES
    have_openssl;DISABLED
    have_profiling;YES
    have_query_cache;YES
    have_rtree_keys;YES
    have_snapshot_cloning;YES
    have_ssl;DISABLED
    have_statement_timeout;YES
    have_symlink;DISABLED
    host_cache_size;278
    hostname;database01
    ignore_builtin_innodb;OFF
    ignore_db_dirs;
    init_connect;
    init_file;
    init_slave;
    innodb_adaptive_flushing;ON
    innodb_adaptive_flushing_lwm;10
    innodb_adaptive_hash_index;ON
    innodb_adaptive_hash_index_partitions;1
    innodb_adaptive_max_sleep_delay;150000
    innodb_additional_mem_pool_size;8388608
    innodb_api_bk_commit_interval;5
    innodb_api_disable_rowlock;OFF
    innodb_api_enable_binlog;OFF
    innodb_api_enable_mdl;OFF
    innodb_api_trx_level;0
    innodb_autoextend_increment;64
    innodb_autoinc_lock_mode;2
    innodb_buffer_pool_dump_at_shutdown;OFF
    innodb_buffer_pool_dump_now;OFF
    innodb_buffer_pool_filename;ib_buffer_pool
    innodb_buffer_pool_instances;1
    innodb_buffer_pool_load_abort;OFF
    innodb_buffer_pool_load_at_startup;OFF
    innodb_buffer_pool_load_now;OFF
    innodb_buffer_pool_populate;OFF
    innodb_buffer_pool_size;1310720000
    innodb_change_buffer_max_size;25
    innodb_change_buffering;all
    innodb_checksum_algorithm;innodb
    innodb_checksums;ON
    innodb_cleaner_lsn_age_factor;high_checkpoint
    innodb_cmp_per_index_enabled;OFF
    innodb_commit_concurrency;0
    innodb_compression_failure_threshold_pct;5
    innodb_compression_level;6
    innodb_compression_pad_pct_max;50
    innodb_concurrency_tickets;5000
    innodb_corrupt_table_action;assert
    innodb_data_file_path;ibdata1:12M:autoextend
    innodb_data_home_dir;
    innodb_disable_sort_file_cache;OFF
    innodb_disallow_writes;OFF
    innodb_doublewrite;ON
    innodb_empty_free_list_algorithm;backoff
    innodb_fake_changes;OFF
    innodb_fast_shutdown;1
    innodb_file_format;Antelope
    innodb_file_format_check;ON
    innodb_file_format_max;Antelope
    innodb_file_per_table;ON
    innodb_flush_log_at_timeout;1
    innodb_flush_log_at_trx_commit;1
    innodb_flush_method;
    innodb_flush_neighbors;1
    innodb_flushing_avg_loops;30
    innodb_force_load_corrupted;OFF
    innodb_force_recovery;0
    innodb_foreground_preflush;exponential_backoff
    innodb_ft_aux_table;
    innodb_ft_cache_size;8000000
    innodb_ft_enable_diag_print;OFF
    innodb_ft_enable_stopword;ON
    innodb_ft_max_token_size;84
    innodb_ft_min_token_size;3
    innodb_ft_num_word_optimize;2000
    innodb_ft_result_cache_limit;2000000000
    innodb_ft_server_stopword_table;
    innodb_ft_sort_pll_degree;2
    innodb_ft_total_cache_size;640000000
    innodb_ft_user_stopword_table;
    innodb_io_capacity;200
    innodb_io_capacity_max;2000
    innodb_kill_idle_transaction;0
    innodb_large_prefix;OFF
    innodb_lock_wait_timeout;50
    innodb_locking_fake_changes;ON
    innodb_locks_unsafe_for_binlog;OFF
    innodb_log_arch_dir;./
    innodb_log_arch_expire_sec;0
    innodb_log_archive;OFF
    innodb_log_block_size;512
    innodb_log_buffer_size;8388608
    innodb_log_checksum_algorithm;innodb
    innodb_log_compressed_pages;ON
    innodb_log_file_size;50331648
    innodb_log_files_in_group;2
    innodb_log_group_home_dir;./
    innodb_lru_scan_depth;1024
    innodb_max_bitmap_file_size;104857600
    innodb_max_changed_pages;1000000
    innodb_max_dirty_pages_pct;75
    innodb_max_dirty_pages_pct_lwm;0
    innodb_max_purge_lag;0
    innodb_max_purge_lag_delay;0
    innodb_mirrored_log_groups;1
    innodb_monitor_disable;
    innodb_monitor_enable;
    innodb_monitor_reset;
    innodb_monitor_reset_all;
    innodb_old_blocks_pct;37
    innodb_old_blocks_time;1000
    innodb_online_alter_log_max_size;134217728
    innodb_open_files;2000
    innodb_optimize_fulltext_only;OFF
    innodb_page_size;16384
    innodb_print_all_deadlocks;ON
    innodb_purge_batch_size;300
    innodb_purge_threads;1
    innodb_random_read_ahead;OFF
    innodb_read_ahead_threshold;56
    innodb_read_io_threads;4
    innodb_read_only;OFF
    innodb_replication_delay;0
    innodb_rollback_on_timeout;OFF
    innodb_rollback_segments;128
    innodb_sched_priority_cleaner;19
    innodb_show_locks_held;10
    innodb_show_verbose_locks;0
    innodb_sort_buffer_size;1048576
    innodb_spin_wait_delay;6
    innodb_stats_auto_recalc;ON
    innodb_stats_method;ulls_equal
    innodb_stats_on_metadata;OFF
    innodb_stats_persistent;ON
    innodb_stats_persistent_sample_pages;20
    innodb_stats_sample_pages;8
    innodb_stats_transient_sample_pages;8
    innodb_status_output;OFF
    innodb_status_output_locks;OFF
    innodb_strict_mode;OFF
  • dis45927dis45927 Entrant Current User Role Novice
    innodb_support_xa;ON
    innodb_sync_array_size;1
    innodb_sync_spin_loops;30
    innodb_table_locks;ON
    innodb_thread_concurrency;0
    innodb_thread_sleep_delay;10000
    innodb_track_changed_pages;OFF
    innodb_undo_directory;.
    innodb_undo_logs;128
    innodb_undo_tablespaces;0
    innodb_use_atomic_writes;OFF
    innodb_use_global_flush_log_at_trx_commit;ON
    innodb_use_native_aio;ON
    innodb_use_sys_malloc;ON
    innodb_version;5.6.24-72.2
    innodb_write_io_threads;4
    interactive_timeout;28800
    join_buffer_size;262144
    keep_files_on_create;OFF
    key_buffer_size;8388608
    key_cache_age_threshold;300
    key_cache_block_size;1024
    key_cache_division_limit;100
    large_files_support;ON
    large_page_size;0
    large_pages;OFF
    lc_messages;en_US
    lc_messages_dir;/usr/share/percona-xtradb-cluster/
    lc_time_names;en_US
    license;GPL
    local_infile;ON
    lock_wait_timeout;31536000
    locked_in_memory;OFF
    log_bin;ON
    log_bin_basename;/var/lib/mysql/database01
    log_bin_index;/var/lib/mysql/database01.index
    log_bin_trust_function_creators;OFF
    log_bin_use_v1_row_events;OFF
    log_error;/var/log/mysqld.log
    log_output;FILE
    log_queries_not_using_indexes;OFF
    log_slave_updates;ON
    log_slow_admin_statements;OFF
    log_slow_filter;
    log_slow_rate_limit;1
    log_slow_rate_type;session
    log_slow_slave_statements;OFF
    log_slow_sp_statements;ON
    log_slow_verbosity;
    log_throttle_queries_not_using_indexes;0
    log_warnings;2
    log_warnings_suppress;
    long_query_time;5.000000
    low_priority_updates;OFF
    lower_case_file_system;OFF
    lower_case_table_names;1
    master_info_repository;FILE
    master_verify_checksum;OFF
    max_allowed_packet;4194304
    max_binlog_cache_size;18446744073709547520
    max_binlog_files;0
    max_binlog_size;52428800
    max_binlog_stmt_cache_size;18446744073709547520
    max_connect_errors;100
    max_connections;150
    max_delayed_threads;20
    max_digest_length;1024
    max_error_count;64
    max_heap_table_size;16777216
    max_insert_delayed_threads;20
    max_join_size;18446744073709551615
    max_length_for_sort_data;1024
    max_prepared_stmt_count;16382
    max_relay_log_size;0
    max_seeks_for_key;18446744073709551615
    max_slowlog_files;0
    max_slowlog_size;0
    max_sort_length;1024
    max_sp_recursion_depth;0
    max_statement_time;0
    max_tmp_tables;32
    max_user_connections;0
    max_write_lock_count;18446744073709551615
    metadata_locks_cache_size;1024
    metadata_locks_hash_instances;8
    min_examined_row_limit;0
    multi_range_count;256
    myisam_data_pointer_size;6
    myisam_max_sort_file_size;9223372036853727232
    myisam_mmap_size;18446744073709551615
    myisam_recover_options;OFF
    myisam_repair_threads;1
    myisam_sort_buffer_size;8388608
    myisam_stats_method;ulls_unequal
    myisam_use_mmap;OFF
    net_buffer_length;16384
    net_read_timeout;30
    net_retry_count;10
    net_write_timeout;60
    new;OFF
    old;OFF
    old_alter_table;OFF
    old_passwords;0
    open_files_limit;5000
    optimizer_prune_level;1
    optimizer_search_depth;62
    optimizer_switch;index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,subquery_materialization_cost_based=on,use_index_extensions=on
    optimizer_trace;enabled=off,one_line=off
    optimizer_trace_features;greedy_search=on,range_optimizer=on,dynamic_range=on,repeated_subselect=on
    optimizer_trace_limit;1
    optimizer_trace_max_mem_size;16384
    optimizer_trace_offset;-1
    performance_schema;ON
    performance_schema_accounts_size;100
    performance_schema_digests_size;10000
    performance_schema_events_stages_history_long_size;10000
    performance_schema_events_stages_history_size;10
    performance_schema_events_statements_history_long_size;10000
    performance_schema_events_statements_history_size;10
    performance_schema_events_waits_history_long_size;10000
    performance_schema_events_waits_history_size;10
    performance_schema_hosts_size;100
    performance_schema_max_cond_classes;80
    performance_schema_max_cond_instances;3500
    performance_schema_max_file_classes;50
    performance_schema_max_file_handles;32768
    performance_schema_max_file_instances;7693
    performance_schema_max_mutex_classes;200
    performance_schema_max_mutex_instances;16200
    performance_schema_max_rwlock_classes;40
    performance_schema_max_rwlock_instances;9100
    performance_schema_max_socket_classes;10
    performance_schema_max_socket_instances;320
    performance_schema_max_stage_classes;150
    performance_schema_max_statement_classes;179
    performance_schema_max_table_handles;4000
    performance_schema_max_table_instances;12500
    performance_schema_max_thread_classes;50
    performance_schema_max_thread_instances;400
    performance_schema_session_connect_attrs_size;512
    performance_schema_setup_actors_size;100
    performance_schema_setup_objects_size;100
    performance_schema_users_size;100
    pid_file;/var/lib/mysql/database01.pid
    plugin_dir;/usr/lib64/mysql/plugin/
    port;3306
    preload_buffer_size;32768
    profiling;OFF
    profiling_history_size;15
    protocol_version;10
    query_alloc_block_size;8192
    query_cache_limit;1048576
    query_cache_min_res_unit;4096
    query_cache_size;1048576
    query_cache_strip_comments;OFF
    query_cache_type;OFF
    query_cache_wlock_invalidate;OFF
    query_prealloc_size;8192
    range_alloc_block_size;4096
    read_buffer_size;131072
    read_only;OFF
    read_rnd_buffer_size;262144
    relay_log;
    relay_log_basename;
    relay_log_index;
    relay_log_info_file;relay-log.info
    relay_log_info_repository;FILE
    relay_log_purge;ON
    relay_log_recovery;OFF
    relay_log_space_limit;0
    report_host;
    report_password;
    report_port;3306
    report_user;
    rpl_stop_slave_timeout;31536000
    secure_auth;ON
    secure_file_priv;
    server_id;1
    server_id_bits;32
    server_uuid;eb55dadf-db4d-11e5-ae62-0011259dcb16
    sha256_password_private_key_path;private_key.pem
    sha256_password_public_key_path;public_key.pem
    show_old_temporals;OFF
    simplified_binlog_gtid_recovery;OFF
    skip_external_locking;ON
    skip_name_resolve;ON
    skip_networking;OFF
    skip_show_database;OFF
    slave_allow_batching;OFF
    slave_checkpoint_group;512
    slave_checkpoint_period;300
    slave_compressed_protocol;OFF
    slave_exec_mode;STRICT
    slave_load_tmpdir;/tmp
    slave_max_allowed_packet;1073741824
    slave_net_timeout;3600
    slave_parallel_workers;0
    slave_pending_jobs_size_max;16777216
    slave_rows_search_algorithms;TABLE_SCAN,INDEX_SCAN
    slave_skip_errors;OFF
    slave_sql_verify_checksum;ON
    slave_transaction_retries;10
    slave_type_conversions;
    slow_launch_time;2
    slow_query_log;ON
    slow_query_log_always_write_time;10.000000
    slow_query_log_file;/var/log/slow.log
    slow_query_log_timestamp_always;OFF
    slow_query_log_timestamp_precision;second
    slow_query_log_use_global_control;
    socket;/var/lib/mysql/mysql.sock
    sort_buffer_size;262144
    sql_auto_is_null;OFF
    sql_big_selects;ON
    sql_buffer_result;OFF
    sql_log_bin;ON
    sql_log_off;OFF
    sql_mode;NO_ENGINE_SUBSTITUTION
    sql_notes;ON
    sql_quote_show_create;ON
    sql_safe_updates;OFF
    sql_select_limit;18446744073709551615
    sql_slave_skip_counter;0
    sql_warnings;OFF
    ssl_ca;
    ssl_capath;
    ssl_cert;
    ssl_cipher;
    ssl_crl;
    ssl_crlpath;
    ssl_key;
    storage_engine;InnoDB
    stored_program_cache;256
    super_read_only;OFF
    sync_binlog;0
    sync_frm;ON
    sync_master_info;10000
    sync_relay_log;10000
    sync_relay_log_info;10000
    system_time_zone;GMT
    table_definition_cache;1400
  • dis45927dis45927 Entrant Current User Role Novice
    table_open_cache;2000
    table_open_cache_instances;1
    thread_cache_size;9
    thread_concurrency;10
    thread_handling;one-thread-per-connection
    thread_pool_high_prio_mode;transactions
    thread_pool_high_prio_tickets;4294967295
    thread_pool_idle_timeout;60
    thread_pool_max_threads;100000
    thread_pool_oversubscribe;3
    thread_pool_size;4
    thread_pool_stall_limit;500
    thread_stack;262144
    thread_statistics;OFF
    time_format;%H:%i:%s
    time_zone;SYSTEM
    timed_mutexes;OFF
    tmp_table_size;16777216
    tmpdir;/tmp
    transaction_alloc_block_size;8192
    transaction_prealloc_size;4096
    tx_isolation;REPEATABLE-READ
    tx_read_only;OFF
    unique_checks;ON
    updatable_views_with_limit;YES
    userstat;OFF
    version;5.6.24-72.2-56-log
    version_comment;Percona XtraDB Cluster (GPL), Release rel72.2, Revision 1, WSREP version 25.11, wsrep_25.11
    version_compile_machine;x86_64
    version_compile_os;Linux
    wait_timeout;28800
    wsrep_OSU_method;TOI
    wsrep_auto_increment_control;ON
    wsrep_causal_reads;OFF
    wsrep_certify_nonPK;ON
    wsrep_cluster_address;gcomm://[CLUSTER IP'S HERE]
    wsrep_cluster_name;my_wsrep_cluster
    wsrep_convert_LOCK_to_trx;OFF
    wsrep_data_home_dir;/var/lib/mysql/
    wsrep_dbug_option;
    wsrep_debug;OFF
    wsrep_desync;OFF
    wsrep_drupal_282555_workaround;OFF
    wsrep_forced_binlog_format;NONE
    wsrep_load_data_splitting;ON
    wsrep_log_conflicts;OFF
    wsrep_max_ws_rows;131072
    wsrep_max_ws_size;1073741824
    wsrep_mysql_replication_bundle;0
    wsrep_node_address;
    wsrep_node_incoming_address;AUTO
    wsrep_node_name;database01
    wsrep_notify_cmd;
    wsrep_on;ON
    wsrep_preordered;OFF
    wsrep_provider;/usr/lib64/libgalera_smm.so
    wsrep_provider_options;base_dir = /var/lib/mysql/; base_host = [ip here]; base_port = 4567; cert.log_conflicts = no; debug = no; evs.auto_evict = 0; evs.causal_keepalive_period = PT1S; evs.debug_log_mask = 0x1; evs.delay_margin = PT1S; evs.delayed_keep_period = PT30S; evs.inactive_check_period = PT0.5S; evs.inactive_timeout = PT15S; evs.info_log_mask = 0; evs.install_timeout = PT7.5S; evs.join_retrans_period = PT1S; evs.keepalive_period = PT1S; evs.max_install_timeouts = 3; evs.send_window = 4; evs.stats_report_period = PT1M; evs.suspect_timeout = PT5S; evs.use_aggregate = true; evs.user_send_window = 2; evs.version = 0; evs.view_forget_timeout = P1D; gcache.dir = /var/lib/mysql/; gcache.keep_pages_size = 0; gcache.mem_size = 0; gcache.name = /var/lib/mysql//galera.cache; gcache.page_size = 128M; gcache.size = 128M; gcs.fc_debug = 0; gcs.fc_factor = 1.0; gcs.fc_limit = 16; gcs.fc_master_slave = no; gcs.max_packet_size = 64500; gcs.max_throttle = 0.25; gcs.recv_q_hard_limit = 9223372036854775807; gcs.recv_q_soft_limit = 0.25; gcs.sync_donor = no; gmcast.listen_addr = tcp://0.0.0.0:4567; gmcast.mcast_addr = ; gmcast.mcast_ttl = 1; gmcast.peer_timeout = PT3S; gmcast.segment = 0; gmcast.time_wait = PT5S; gmcast.version = 0; ist.recv_addr = [ip here]; pc.announce_timeout = PT3S; pc.checksum = false; pc.ignore_quorum = false; pc.ignore_sb = false; pc.linger = PT20S; pc.npvo = false; pc.recovery = true; pc.version = 0; pc.wait_prim = true; pc.wait_prim_timeout = P30S; pc.weight = 1; protonet.backend = asio; protonet.version = 0; repl.causal_read_timeout = PT30S; repl.commit_order = 3; repl.key_format = FLAT8; repl.max_ws_size = 2147483647; repl.proto_max = 7; socket.checksum = 2;
    wsrep_recover;OFF
    wsrep_reject_queries;NONE
    wsrep_replicate_myisam;OFF
    wsrep_restart_slave;OFF
    wsrep_retry_autocommit;1
    wsrep_slave_FK_checks;ON
    wsrep_slave_UK_checks;OFF
    wsrep_slave_threads;1
    wsrep_sst_auth;********
    wsrep_sst_donor;
    wsrep_sst_donor_rejects_queries;OFF
    wsrep_sst_method;xtrabackup-v2
    wsrep_sst_receive_address;AUTO
    wsrep_start_position;5130005b-aa4d-11e5-abe8-ce128261683c:5420391
    wsrep_sync_wait;0
  • matthewbmatthewb Senior [email protected] Percona Staff Role
    1. Yes. ALTER TABLE foo ADD PRIMARY KEY(existingColumn);
    You may need to add a new column if you do not already have a column that can be used as PRIMARY KEY. Simplest is to just add a INT UNSIGNED AUTO_INCREMENT column and make that your primary key.
Sign In or Register to comment.

MySQL, InnoDB, MariaDB and MongoDB are trademarks of their respective owners.
Copyright ©2005 - 2020 Percona LLC. All rights reserved.