• Daniel Black's avatar
    MDEV-23630: mysqldump logically dump system table information · d6ea03fa
    Daniel Black authored
    Add --system={all, users, plugins, udfs, servers, stats, timezones}
    
    This will dump system information from the server in
    a logical form like:
    * CREATE USER
    * GRANT
    * SET DEFAULT ROLE
    * CREATE ROLE
    * CREATE SERVER
    * INSTALL PLUGIN
    * CREATE FUNCTION
    
    "stats" is the innodb statistics tables or EITS and
    these are dumped as INSERT/REPLACE INTO statements
    without recreating the table.
    
    "timezones" is the collection of timezone tables
    which are important to transfer to generate identical
    results on restoration.
    
    Two other options have an effect on the SQL generated by
    --system=all. These are mutually exclusive of each other.
    * --replace
    * --insert-ignore
    
    --replace will include "OR REPLACE" into the logical form
    like:
    * CREATE OR REPLACE USER ...
    * DROP ROLE IF EXISTS (MySQL-8.0+)
    * CREATE OR REPLACE ROLE ...
    * UNINSTALL PLUGIN IF EXISTS (10.4+) ... (before INSTALL PLUGIN)
    * DROP FUNCTION IF EXISTS (MySQL-5.7+)
    * CREATE OR REPLACE [AGGREGATE] FUNCTION
    * CREATE OR REPLACE SERVER
    
    --insert-ignore uses the construct " IF NOT EXISTS" where
    supported in the logical syntax.
    
    'CREATE OR REPLACE USER' includes protection against
    being run as the same user that is importing the mysqldump.
    
    Includes experimental support for dumping mysql-5.7/8.0
    system tables and exporting logical SQL compatible with MySQL.
    
    Updates mysqldump man page, including this information and
    (removing obsolute bug reference)
    
    Reviewed-by: anel@mariadb.org
    d6ea03fa
mysqldump-system.test 4.81 KB