mydump 文件拆分
如何将mysqldump的输出拆分为较小的文件?
要将mysqldump的输出拆分为较小的文件,可以使用–max-allowed-packet和–single-transaction选项。
使用–max-allowed-packet选项设置每个查询允许的最大数据包大小。这将确保mysqldump在执行过程中不会因为数据包过大而导致错误。
使用–single-transaction选项来确保在执行mysqldump时,数据库不会被锁定。这将允许数据库在备份过程中继续运行,从而避免对业务造成影响。
具体操作步骤如下:
登录到MySQL服务器。
创建一个名为mysqldump-split的目录,用于存储拆分后的文件。
使用以下命令将数据库备份拆分为较小的文件:
mysqldump --user=USER --password=PASSWORD --host=HOST --port=PORT --single-transaction --max-allowed-packet=1M --databases DB_NAME | split -b 100M - mysqldump-split/db_name_
mysqldumpsplitter 分割
mysqldumpsplitter是一个用来分割MySQL dump文件的工具,它可以帮助你将一个大的dump文件分割成多个小的部分,以便于传输或者是按需加载。
以下是使用mysqldumpsplitter分割dump文件的基本步骤和示例代码:
首先,确保你已经安装了mysqldumpsplitter。如果没有安装,你可以从这里获取:https://github.com/wozdar/mysqldumpsplitter
使用以下命令来分割你的dump文件:
mysqldumpsplitter -t 10 -d /path/to/your/dump.sql -o /path/to/output/directory/
这个命令会将/path/to/your/dump.sql分割成最大为10MB的多个小文件,并将它们保存在/path/to/output/directory/目录下。
其中,参数解释如下:
-t 或 --size:指定每个分割文件的最大大小,单位为MB。
-d 或 --input:指定输入的dump文件路径。
-o 或 --output:指定输出文件的目录。
请注意,分割后的文件可能不会完全等于指定的大小,因为它们会被分割成包含完整语句的块。
如果你需要合并分割后的文件,可以使用以下命令:
mysqldumpsplitter -m /path/to/output/directory/
这将会把目录下的所有小文件合并为一个完整的dump文件。
请确保在使用mysqldumpsplitter时,你有足够的权限来读取输入文件,并且可以在输出目录中创建和写入文件。
max_allowed_packet是MySQL服务器的一个参数,用于控制单个网络数据包的最大大小。它的作用是限制客户端发送给服务器的单个查询或数据包的最大大小。
当客户端发送一个查询或数据包时,MySQL服务器会将其分成多个网络数据包进行传输。如果某个查询或数据包的大小超过了max_allowed_packet的设置值,服务器将拒绝接收该查询或数据包,并返回错误消息给客户端。
max_allowed_packet的默认值是4MB,可以通过修改MySQL配置文件或在MySQL命令行中使用SET GLOBAL命令来修改其值。
参数含义
max_allowed_packet参数指的是MySQL服务端或者客户端接收一次传送数据包的最大大小,MySQL服务端和客户端上都有这个限制。
查看max_allowed_packet参数值
登录到mysql数据库中,或者使用数据库链接工具,执行下述命令
show VARIABLES like '%max_allowed_packet%';
或者
select @@max_allowed_packet;
查询出的数据值单位是字节,图中查询出的大小换算后为:524288000 / 1024 /1024 = 500Mb
mysql> show VARIABLES like ‘%max_allowed_packet%’;
±-------------------------±-----------+
| Variable_name | Value |
±-------------------------±-----------+
| max_allowed_packet | 4194304 |
| slave_max_allowed_packet | 1073741824 |
±-------------------------±-----------+
2 rows in set (0.00 sec)
111
mysqldumpsplitter -t 恢复
mysqldumpsplitter是一个用于分割MySQL数据库备份文件的工具,但它不是MySQL官方工具的一部分,可能需要单独安装。
要使用mysqldumpsplitter工具进行备份文件的分割,你可以按照如下方式进行:
mysqldumpsplitter -t <线程数> -d <输出目录> <备份文件>
其中,-t 后面跟着的是分割的线程数,-d 后面跟着的是输出目录,备份文件是你的原始mysqldump文件。
要从分割后的文件进行恢复,你需要使用mysql客户端工具来导入数据。你可以手动执行每个分割后的文件,或者编写一个脚本来自动化这个过程。
下面是一个简单的恢复脚本示例:
#!/bin/bash
# 设置数据库名和用户
DATABASE='your_database_name'
USER='your_username'
# 分割备份文件的目录
SPLIT_DIR='path_to_split_backup_directory'
# 导入数据
mysql -u $USER -D $DATABASE < $SPLIT_DIR/mysql-db-schema.sql
# 循环导入分割后的数据文件
for FILE in $SPLIT_DIR/mysql-table.*.sql
do
mysql -u $USER -D $DATABASE < $FILE
done
确保你有足够的权限来执行这些脚本,并且替换其中的your_database_name、your_username和path_to_split_backup_directory为实际的数据库名、用户和分割备份文件的目录。
注意:如果你的备份文件包含了创建数据库的语句(如CREATE DATABASE),你可能需要在恢复之前先创建一个空数据库,或者确保mysql-db-schema.sql是备份文件中的第一个文件被导入。