0%

MySQL 数据库备份恢复

主要使用 mysqldump 进行操作

备份 MySQL 数据

image.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
export USERNAME=root PASSWORD="password" DB_NAME="back_db" DUMP_FILE="mysql.sql"
export IGNORE_TB_DATA=("ignore_db_1" "ignore_db_1")
mysql_dump_str="mysqldump --default-character-set=utf8 --quick --disable-keys --skip-triggers -u $USERNAME -p$PASSWORD --single-transaction -R -E --comments $DB_NAME"
mysql_dump_no_data="mysqldump --default-character-set=utf8 --quick --disable-keys --skip-triggers -u $USERNAME -p$PASSWORD --single-transaction --comments --no-data $DB_NAME"
# mysql_dump_str="mysqldump --parallel=4 --quick --disable-keys --skip-triggers -u $USERNAME -p$PASSWORD --single-transaction -R -E --comments $DB_NAME"
# --ignore-table=db1.tb1 > dump.sql

# 忽略指定表数据导出
for tb in "${IGNORE_TB_DATA[@]}"; do
mysql_dump_str="$mysql_dump_str --ignore-table=$DB_NAME.$tb"
done
# 只导出指定表结构
for tb in "${IGNORE_TB_DATA[@]}"; do
mysql_dump_no_data="$mysql_dump_no_data $tb"
done

echo $mysql_dump_str
eval $mysql_dump_str > $DUMP_FILE
echo $mysql_dump_no_data
eval $mysql_dump_no_data >> $DUMP_FILE

在导入数据时 如何手动重新启用触发器和外键检查。

在导入数据时,如果你禁用了触发器和外键检查,可以手动重新启用它们。下面是一些方法来重新启用触发器和外键检查:

  1. 启用触发器:
    如果在导入数据之前禁用了触发器,你可以使用以下语句来启用它们:
    1
    2
    3
    4
    5
    -- 启用单个表的触发器
    ALTER TABLE table_name ENABLE TRIGGER ALL;

    -- 启用整个数据库的触发器
    SET GLOBAL event_scheduler = ON;
    table_name 替换为你要启用触发器的表名。如果要启用整个数据库的触发器,可以使用 SET GLOBAL event_scheduler = ON; 语句。
  2. 启用外键检查:
    如果在导入数据之前禁用了外键检查,你可以使用以下语句来启用它们:
    1
    SET FOREIGN_KEY_CHECKS = 1;
    上述语句将 FOREIGN_KEY_CHECKS 系统变量设置为 **1**,从而启用外键检查。

请注意,在重新启用触发器和外键检查之前,确保你已经完成了数据导入操作。重新启用触发器和外键检查时,确保数据库中的数据符合相应的约束和触发器逻辑。

同时,记住在导入数据时禁用触发器和外键检查是出于性能和导入速度的考虑,以便更快地导入大量数据。在正常操作中,触发器和外键检查对数据完整性和一致性非常重要,应始终启用它们。

数据恢复

大约 20min

1
2
3
4
5
# 禁用 BINLOG
SET SQL_LOG_BIN = 0;
# 禁用外键检查和唯一性约束检查
SET FOREIGN_KEY_CHECKS = 0;
SET UNIQUE_CHECKS = 0;
1
2
3
4
5
export USERNAME=root PASSWORD="password" DB_NAME="back_db" DUMP_FILE="mysql.sql" IMPORT_DB_NAME="back_db_back"

mysql_input_str="mysql --default-character-set=utf8 -u $USERNAME -p$PASSWORD $IMPORT_DB_NAME"

eval $mysql_input_str < $DUMP_FILE

使用 mysql 命令行工具:

  • 准备一个包含要导入的数据的SQL文件,例如 **dump.sql**。
  • 打开终端或命令提示符,使用以下命令连接到MySQL服务器:
    1
    mysql -u username -p
    其中,**username** 是你的MySQL用户名。
  • 输入密码并按回车键,以登录到MySQL服务器。
  • 选择要导入数据的目标数据库:
    1
    USE database_name;
    其中,**database_name** 是目标数据库的名称。
  • 导入数据文件:
    1
    SOURCE /path/to/dump.sql;
    /path/to/dump.sql 替换为包含要导入的数据的SQL文件的路径。
-------------本文结束再接再厉-------------

本文标题:MySQL 数据库备份恢复

文章作者:IITII

发布时间:2024年10月10日 - 14:10

最后更新:2025年03月10日 - 14:03

原始链接:https://iitii.github.io/2024/10/10/1/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。