【总结+踩坑】MySQL导出导入用法/最大连接数以及其他常见问题

数据库管理 同时被 3 个专栏收录
15 篇文章 0 订阅
23 篇文章 0 订阅
8 篇文章 1 订阅

总结MySQL导出导入用法,采坑了一些问题,希望能帮到你少走点弯路

导出

使用mysqldump命令导出

1. 导出整个数据库(结构+数据)
用法:mysqldump -u 用户名 -p 数据库名 > 导出的文件名
案例:mysqldump -u dbuser -p dbname > dbname.sql

2. 导出某一个或者几张表
用法:
    单表:mysqldump -u 用户名 -p 数据库名 表名 > 导出的文件名
    多表:mysqldump -u 用户名 -p 数据库名 表名1 表名2 表名3 > 导出的文件名

案例:mysqldump -u dbuser -p dbname users> dbname_users.sql

注:尝试了模糊某一类表名导出,mysqldump却不支持


导入

有两种方式

1. 首先建空数据库
mysql>create database abc;

2、导入
方式一:
(1)登录mysql
mysql -uroot -p
(2)然后选择数据库
mysql> use abc;
如果想省略这一步,则(1)为:mysql -uroot -p abc
(3)设置数据库编码
mysql> set names utf8mb4;
(4)导入数据(注意sql文件的路径)
mysql> source /home/abc/abc.sql;

方式二:
用法:mysql -u用户名 -p密码 数据库名 < 数据库名.sql
案例:mysql -uabc -p123456 abc < abc.sql


附加说明:

1. 如果是远程操作,则在mysqldump或mysql命令中,使用-h参数,填写主机名或ip即可
案例:mysqldump -h hostname -u dbuser -p dbname > dbname.sql

2. 如果想不阻塞同步执行,即后台运行,则使用nohup
案例:nohup mysqldump -h hostname -u dbuser -p dbname > dbname.sql &
 

常见问题

问题1:登录mysql,卡住,提示Reading table information for completion of table and column names......

原因:预读数据库信息,由于数据库太大,即数据库中表非常多,所以预读数据库信息将非常慢,就会卡住,如果数据库中表非常少,将不会出现问题

解决办法:登录mysql时,使用-A参数

案例:mysql -uroot -p -A

问题2:导入数据时,提示ERROR 1064 (42000) at line 93: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near....

原因:导入数据时的默认编码(utf8)与导出文件的默认编码(utf8mb4)不一致

解决办法1:导入数据时,使用了导入的方式一

解决办法2:加上--force 这个参数

案例:mysql -uabc -p123456 --default-character-set=utf8mb4 --force abc < abc.sql

问题3:导入数据时(从5.6导入到5.7版本),提示[Err] 1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation....

原因:
    1. 导入RDS for MySQL 实例时,SQL 语句中含有需要 Supper 权限才可以执行的语句,而 RDS for MySQL不提供 Super 权限,因此需要去除这类语句。
    2. 本地 MySQL 实例没有启用 GTID。

可能的解决办法:
    1. 去除DEFINER子句:
        a. 检查 SQL 文件,去除下面类似的子句。
            DEFINER=`root`@`%` 
        b. 在 Linux 平台下,可以尝试使用下面的语句去除。
            sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/ ' your.sql > your_revised.sql

    2. 去除GTID_PURGED子句
        a. 检查 SQL 文件,去除下面类似的子句。
            SET @@GLOBAL.GTID_PURGED='d0502171-3e23-11e4-9d65-d89d672af420:1-373,
d5deee4e-3e23-11e4-9d65-d89d672a9530:1-616234';
        b. 在 Linux 平台下,可以尝试使用下面的语句去除。
            awk '{ if (index($0,"GTID_PURGED")) { getline; while (length($0) > 0) { getline; } } else { print $0 } }' your.sql | grep -iv 'set @@' > your_revised.sql
        c. 导出的时候在mysqldump命令后添加参数 --set-gtid-purged=off来取消输出GTID_PURGED 子句.

我使用了c的方式(此问题详见阿里云帮助文档):

案例:导出时使用 mysqldump --set-gtid-purged=off -u dbuser -p dbname > dbname.sql

问题4:Mysql命令行下如何kill掉会话

步骤1:登录数据库

## 查看mysql中现在执行的 所有线程

步骤2:show processlist 或 show full processlist

##  kill 掉 指定的第一列线程id

步骤3:kill thread_id

附加其他用法:

修改Mysql最大连接数的其中一种方式如下:

     命令行查看和修改最大连接数(max_connections)

     >mysql -uuser -ppassword(命令行登录MySQL)

    mysql> show variables like 'max_connections';   (查可以看当前的最大连接数)
    msyql> set global max_connections=1000;    (设置最大连接数为1000,可以再次查看是否设置成功)
    mysql> exit  

 

参考资料:

 

------------------------------------------------------

------------------------------------------------------

 

关于我(个人域名)

我的开源项目集Github

 

期望和大家一起学习,共同进步,共勉,O(∩_∩)O谢谢

欢迎交流问题,可加个人QQ 469580884,

或者,加我的群号 751925591,一起探讨交流问题

不讲虚的,只做实干家

Talk is cheap,show me the code

展开阅读全文
  • 1
    点赞
  • 0
    评论
  • 5
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值