小刀博客
扫描关注小刀博客

手机扫描二维码

MySQL数据库通过mysqldump来备份与恢复

小刀博客2019-07-21MySQL 876

最近在做阿里云数据库的迁移,做个笔记,方便后面用到,支持远程迁移。

首先是备份数据的命令:mysqldump -uroot -h127.0.0.1 database -p --set-gtid-purged=OFF > 20190721.sql;因为当前库GTID_EXECUTED已经有值,所以加上--set-gtid-purged=OFF。按回车后输入密码即可开始备份数据。还可以加--single-transaction参数,作用是设置事务的隔离级别为可重复读,即REPEATABLE READ,这样能保证在一个事务中所有相同的查询读取到同样的数据,也就大概保证了在dump期间,如果其他innodb引擎的线程修改了表的数据并提交,对该dump线程的数据并无影响,在这期间不会锁表。

2019-11-19记录:mysqldump还可以备份指定表中符合条件的记录,只需要在数据库后面加上表名和条件(--where "id<10"),就像这样:mysqldump -uroot -h127.0.0.1 database table_name  -p --set-gtid-purged=OFF --where "id<10" > 20191119.sql

然后是恢复数据的命令:mysql -uroot -h127.0.0.1 database -p < 20190721.sql;很简单的操作,要用的同学将数据库信息对应修改即可。唯一要注意的是,这2条命令无须先行连接数据库操作,直接在命令行执行即可。如果出现这样的错误信息(ERROR at line 1011: Unknown command '\"'),添加--default-character-set=utf8,即:mysql -uroot -h127.0.0.1 --default-character-set=utf8 database-p < 20190721.sql

1.导出结构不导出数据

mysqldump --opt -d 数据库名 -u root -p > xxx.sql 

2.导出数据不导出结构

mysqldump -t 数据库名 -uroot -p > xxx.sql 

3.导出数据和表结构

mysqldump 数据库名 -uroot -p > xxx.sql 

4.导出特定表的结构

mysqldump -uroot -p -B数据库名 --table 表名 > xxx.sql 



发表评论