• 【MySQL】mysqldump使用指南


    1.mysqldump不会备份sys库。但在使用mysqldump在执行--all-databases会清空mysql.proc导致sys无法正常使用;这是一个BUG,并且只存在于MySQL 5.7.x


    2解决方案:
    (1)mysql_upgrade install or upgrade sys schema
    这个方案适用于sys库已经因为mysqldump导入而损坏的情况下使用。

    # 删除 sys schema (An error occurs if a sys schema exists but has no version view)
    mysql> DROP DATABASE sys;
    
    # 这个时候 sys schema 不应该存在
    mysql> SHOW DATABASES;
    
    # 最后,执行 mysql_upgrade sys schema 以恢复正常
    mysql_upgrade --upgrade-system-tables --skip-verbose --force
    
    mysql> SHOW DATABASES;
    mysql> SELECT COUNT(*) FROM mysql.proc;

    注意:mysql_upgrade 在修理 sys 库的同时,还修理 mysql 库和用户库表(期间加锁且速度一般),有极小可能会误伤;使用 mysql_upgrade 的时候要加上 --upgrade-system-tables,不然会扫描用户库表。

    (2)全备时同时备份 sys 库

    这个方案适用于需要还原的数据库,sys 库也不太正常的情况下使用;在全备后额外再备份一份 sys 库用于修复。

    mysqldump -A --set-gtid-purged=OFF --master-data=2 --single-transaction --routines --events --triggers  > all.sql
    mysqldump --databases --routines sys > sys_dump_`mysql -V|awk '{print $5}'|cut -b 1-6`.sql

    注意:不适用于做主从时使用它。
    注意:不适用于做主从时使用它。

    (3)使用databases全备
    这个方案适用于所有场景的全备需求,100% 安全。

    select_databases="                                                                 
        SELECT
            GROUP_CONCAT(schema_name SEPARATOR ' ') 
        FROM 
            information_schema.schemata 
        WHERE 
            schema_name NOT IN ('performance_schema','information_schema');"
    
    databases=`mysql -NBe "$select_databases"`
    mysqldump --set-gtid-purged=OFF --master-data=2 \
    --single-transaction --routines --events --triggers \
    --max_allowed_packet=256M  --databases > all.sql

    (4)使用 mysql-sys 开源代码
    如果你的数据库 sys 全部中招了,又是生产库。那你只能用这个方法;

    mysql-sys:
    https://github.com/mysql/mysql-sys

    中记录了sys库的创建语句将文件下载到本地,然后根据数据库版本,执行以下命令即可。

    # 安装前操作,内容是禁用掉 sql_log_bin,不记录到日志中。
    mysql> source before_setup.sql
    
    # 创建 sys 库,实际会调用其他文件夹中的 sql 语句
    # 来进行表、视图、存储过程、触发器的创建
    mysql> source sys_57.sql
    
    # 安装后的操作,内容是将 sql_log_bin 恢复到操作前的状态
    mysql> source after_setup.sql

    MySQL 8,具体原因是从MySQL 8.0.0起就移除了mysql.proc这张表。


    https://www.toutiao.com/article/6894154794278224395/

  • 相关阅读:
    从对比学习(Contrastive Learning)到对比聚类(Contrastive Clustering)
    国际学术会议英文口头报告(Oral presentation)常用语句
    物以类聚人以群分:聚类分析的一些挑战和进展
    多视图子空间聚类/表示学习(Multi-view Subspace Clustering/Representation Learning)
    关于“Unsupervised Deep Embedding for Clustering Analysis”的优化问题
    【Swift】TableView显示多列数据,锁定第一列位置
    【Swift】 WKWebView https 加载不受信任的站点
    【Swift】Starscream 实现socket连接
    【Swift】GRDB数据库本地存储聊天记录
    【Swift/Objective-c】公司项目优化(二)
  • 原文地址:https://www.cnblogs.com/abclife/p/16540034.html
Copyright © 2020-2023  润新知