我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql数据表导出导入过程详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql数据表导出导入过程详解

一、mysqldump导出sql文件

内网导出sql文件速度快,推荐内网导出。外网导出的时候容易断连接,外网导出时使用nohup后台运行,一般不会断。但是一些无效的报警信息会进入到sql文件首行里,导致sql文件不能使用,需要剔除掉这种无效报警信息。

#不加密码(交互式输入密码):mysqldump --skip-lock-tables --set-gtid-purged=OFF   -h  10.x.x.x   -P 3306  -utest_user   test_db  test_table >testfile_20230525.sql  -p        (sql文件无无效的警告信息)#加密码时,密码要带引号:mysqldump --skip-lock-tables   --set-gtid-purged=OFF  -h  10.x.x.x   -P 3306  -utest_user   test_db  test_table >testfile_20230525.sql  -p'test_password'(sql文件无无效的警告信息)#ctl+c后仍在运行,但关闭ssh会话后不可以运行:mysqldump --skip-lock-tables  --set-gtid-purged=OFF   -h  10.x.x.x   -P 3306  -utest_user   test_db  test_table >testfile_20230525.sql  -p'test_password' &(sql文件无无效的警告信息)#关闭ssh会话后仍可以运行:nohup  mysqldump --skip-lock-tables  --set-gtid-purged=OFF   -h  10.x.x.x   -P 3306  -utest_user   test_db  test_table >testfile_20230525.sql  -p'test_password' &(但sql文件首行可能有无效的警告信息,需要用sed剔除一下)#使用screen后台运行#优点:单独开一个会话放到后台,无效的报警信息会被打印到该后台终端,而不会被写入sql文件,而且可以满足交互式场景下后台运行。(总体来说比nohup更优秀)#安装screenyum -y install screen#创建有名字的screen任务(执行该命令后,其实就进入了screen的shell环境,此时执行的操作 都是放在screen里的)screen -S task_name#查看到系统中所有的screen任务的pidscreen -ls#或者ps -ef来查找screen的任务ps -ef | grep task_name#进入screen任务以后,就可以运行相要后台跑的任务了mysqldump --skip-lock-tables  --set-gtid-purged=OFF   -h  10.x.x.x   -P 3306  -utest_user   test_db  test_table >testfile_20230525.sql  -p'test_password' &#然后把该screen放后台方法1:快捷键  ctrl+a+d方法2:再开一个终端screen -d task_name#进入screen任务screen -r pid或者screen -r task_name#删除screen任务screen -r task_nameexitmysqldump参数简介:(其中-u和-p参数后要紧接用户名或密码,不能加空格)-h:mysql主机的IP。-P:mysql服务对应的端口。-u:mysql用户名。-p(密码两端需要加单引号):mysql密码。skip-lock-tables:--skip-lock-tables参数指示mysqldump实用程序在获取将在每个表上获取READ锁的转储之前,不要发出LOCK TABLES命令。 数据库中的所有表都应被锁定,以提高备份过程的一致性。 即使使用了skip-lock-tables,在转储表时,它也不会收到任何INSERT或UPDATE,因为由于需要SELECT才能从表中获取所有记录,因此它将被锁定。set-gtid-purged=OFF:加了--set-gtid-purged=OFF时,在会记录binlog日志,如果不加,不记录binlog日志,所以在我们做主从用了gtid时,用mysqldump备份时就要加--set-gtid-purged=OFF,否则你在主上导入恢复了数据,主没有了binlog日志,同步则不会被同步。

当用nohup后台导出sql文件时,一些无效的报警信息可能会被写入sql文件的前几行。
这时候需要剔除掉这些信息,不然的话sql文件就不能正常导入mysql了。

#报警信息示例:#密码写入命令行报警#Warning: Using a password on the command line interface can be insecure.#没加--set-gtid-purged=OFF的报警信息#Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events. #sql文件一般很大,所以不要直接vim打开。用head和tail查看,用sed修改。#定位sql文件前几行有报警信息#默认head查看文件前10行,tail查看文件后10行head xxx.sqltail xxx.sql#查看sql文件前三行信息(以此类推即可)head -n 3  xxx.sql#查看sql文件后三行信息(以此类推即可)tail -n 3 xxx.sql#删除sql文件里无效的报警信息。#删除文件 1到n行sed -i '1,nd' 文件名 #列如,前3行是无效的报警信息,则sed -i '1,3d' xxx.sql

编写shell脚本来循环导出多张数据表。

#!/bin/bash# 需要导出的表名列表TABLE_LIST=( "table_1" "table_2" "table_3" "table_4" )# 循环导出每个表for i in "${TABLE_LIST[@]}"do    # 构造导出文件名    FILE_NAME="${i}_20230525.sql"    echo ${FILE_NAME}    # 使用 mysqldump 命令导出表数据    mysqldump --skip-lock-tables --set-gtid-purged=OFF    -h  10.x.x.x   -P 3306  -utest_user  -p'test_password'    test_db   ${i} > ${FILE_NAME}done

验证是否导出成功:

# 查看sql文件最后一行。tail -n 1 xxx.sql

如果有dump completed on 日期。
说明dump成功了,有时候因为会话中断等原因,dump失败,就没有这一行。

二、sql文件从云服务器备份到本地Linux服务器:
1.压缩文件下所有文件

tar -zcvf mysql_dump_20230525.tar.gz  ./mysql_dump/

1使用scp传到本地服务器:(但是scp传大文件容易断掉stalled)

本地服务器运行:scp username@remote:/path/to/file /path/to/destination即scp 用户名@云服务器ip:云服务器文件路径 本地文件夹路径如果要将整个目录传输到本地Linux服务器中,可以使用-r参数,命令如下:scp -r 用户名@云服务器ip:云服务器文件夹路径 本地文件夹路径输入命令后按下回车键,然后输入云服务器的密码,就可以将文件从云服务器传输到本地Linux服务器了。如果云服务器使用密钥登录时,需要添加一个-i的参数,并输入对应密钥的路径即可。scp -i 对应密钥地址 用户名@云服务器ip:云服务器文件路径 本地文件夹路径如果报权限错误,那么需要 chmod 400 修改一下密钥文件的权限。即:chmod 400 密钥文件

2.也可以使用rsync传输文件:(可以断点续传,断了以后,重新运行该命令即可)

rsync   -P -e "ssh -i 密钥路径"  用户名@云服务器ip:云服务器文件路径 本地文件夹路径常用参数:--progress: 显示拷贝进度--partial:保留不完整文件,实现断点续传--partial-dir=DIR:指定不完整文件的存储目录,而不是默认存储到目的地目录。-P:包含--progress和--partial--rsh=ssh:使用ssh方式传输文件,注意:如果之前设置过ssh免密码登录,那么此时也就不需要密码了,非常方便-v:显示详细信息-a:归档模式。也就是以递归方式传输文件,并保持所有文件属性。-r:递归方式传输文件

解压缩文件:

tar -xzvf mysql_dump_20230525.tar.gz -C /home/mysql_dump   # -C 指定解压路径

三、导入sql文件:
1.linux下mysql导入sql文件方法1:
进入linux命令命令行下

mysql -uroot -p 回车 输入密码source fileName.sql

注意fileName.sql要有路径名,例如:source /home/user/data/fileName.sql

linux下mysql导入sql文件方法2:
进入linux命令命令行下:

mysql -uroot -p database < fileName.sql

注意fileName.sql要有路径名

导入数据库时报错:Variable ‘time_zone’ can’t be set to the value of ‘NULL’
这个问题的原因是因为数据sql文件内部有注释,去掉就可以了(也可以不用管),不影响数据导入。

参考文章:
关于mysql:skip-lock-tables和mysqldump https://www.codenong.com/7415698/

mysqldump关于–set-gtid-purged=OFF的使用 https://www.cnblogs.com/–smile/p/11464687.html

mysqldump --set-gtid-purged=OFF 参数解析https://www.cnblogs.com/ybyqjzl/p/12428039.html

SCP命令如何使用密钥传输 https://zhuanlan.zhihu.com/p/358987274

screen的使用方法 https://blog.csdn.net/weixin_43557605

linux使用scp时间为stalled,Linux命令学习(2): scp和rsync基本用法与断点续传 https://blog.csdn.net/weixin_36194553/article/details/116737707

来源地址:https://blog.csdn.net/qq_44821149/article/details/130866987

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql数据表导出导入过程详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql 表数据导出导入以及指定导入字段

load data local infile  "C:/1.csv" into table zlee fields terminated by "," lines terminated by "" (id,ia,ic,ie,ig); 1 . zlee为表名,最
mysql 表数据导出导入以及指定导入字段
2020-12-09

MySQL中数据导入和导出的方法详解

MySQL中数据导入和导出的方法详解导入和导出数据是数据库管理中常用的操作,在MySQL中也有多种方法可以实现。本文将详细介绍几种常见的方法,并提供相应的代码示例。一、导出数据使用SELECT ... INTO OUTFILE语句导出数据在
2023-10-22

mysql数据库导入、导出

终端命令操作(导出)1.导出整个库mysqldump -u 用户名 -p 数据库名 > 导出的文件名mysqldump -u root-p blog > ./blog.sql 2导出某个表mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名m
mysql数据库导入、导出
2020-08-22

MySQL 表数据的导入导出操作示例

本文实例讲述了MySQL 表数据的导入导出操作。分享给大家供大家参考,具体如下: 数据导出 1. 使用 SELECT ...INTO OUTFILE ...命令来导出数据,具体语法如下。mysql> SELECT * FROM table
2022-05-11

mysql编程日记:导入、出某表数据

登陆mysql后,输入:show variables like "%secure%";显示的secure_file_priv如果value值为null,则为禁止,如果有文件夹目录,则只允许改目录下文件(测试子目录也不行),如果为空,则不限制目录;修改配置可修改
mysql编程日记:导入、出某表数据
2021-03-03

sqlserver数据表怎么导入导出

在SQL Server中,可以使用以下方法来导入和导出数据表:导入数据表:使用SSMS(SQL Server Management Studio)导入向导:打开SSMS并连接到SQL Server数据库。在对象资源管理器中,右键单击要导入
sqlserver数据表怎么导入导出
2024-04-09

mysql数据库怎么导入导出

这篇文章将为大家详细讲解有关mysql数据库怎么导入导出,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.数据库导入mysql -uroot -p123456 --default-character-se
2023-06-28

mysql怎么导入导出数据库

mysql数据库导入导出步骤:连接数据库并选择数据库。导入:使用load data infile语句,指定数据文件、目标表和字段分隔符。导出:使用select * into outfile语句,指定目标文件、数据源表和字段分隔符。MySQL
mysql怎么导入导出数据库
2024-08-06

编程热搜

目录