MySQL-mysqldump
MySQL数据库备份的两种方式:MySQLdump,XBK
参考地址:http://dljz.nicethemes.cn/news/show-32053.html
1 First Meeting
简介:MySQLdump是MySQL用于备份和数据库转移的一个工具。
工作方式:主要产生一系列的SQL语句,可以封装到文件,该文件包含所有重建备份数据库所需要的SQL命令和create database、create table、insert等等。mysqldump 是将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法。
使用场景:一般在数据量很小(几个G)的时候,可以用于备份。当数据量比较大的情况下,不建议使用MySQLdump。可以用来实现轻量级的快速迁移或恢复数据库。
注意:使用MySQL dump的时候,把二进制日志、GTID事务唯一ID开启。
2 MySQLdump参数
参数 | 译 |
---|---|
--host | 指定要备份数据库的服务器 |
--password | 连接MySQL服务器的密码 |
--port | MySQL服务器的端口号 |
--user | 连接MySQL服务器的用户名 |
--all-databasess(-A) | 备份MySQL服务器上的所有数据库 |
--databases(-B) | 备份1或多个数据库,在参数后添加数据库名即可 |
--complete-insert (-c) | 使用完整的insert语句会包含表中的列信息,这么做可以提高插入效率。 |
-R | 存储过程和函数 |
--no-data(-d) | 只备份表结构,不备份表数据 |
--quick(-q) | 相当于加sql_no_query,意味着并不会读取缓存中的数据。 |
--add-drop-table | 在每个创建数据库表语句前添加删除数据库表的语句 |
--force | 当出现错误时仍然继续备份操作 |
--default-character-set | 指定默认字符集 |
--add-locks | 备份数据库表时锁定数据库表 |
--comments | 添加注释信息 |
--compact | 压缩模式,产生更少的输出 |
--where=name(-w) | 按条件备份出想要的数据 |
--triggers | 触发器 |
--master-data=2 | 值为1:change master to 语句可以被slave直接执行;值为2:change master会被注释 |
--single-transaction | 不加此参数为热备份,加了对于InnoDB表不锁表备份(快照备份),用于保证innodb备份数据时的一致性,配合RR隔离级别一起使用,当发起事务时,读取一个数据的快照,知道备份结束时,都不会读取到本事务开始提交的任何数据。 |
--set-gtid-purged=AUTO/ON | 使用AUTO/ON主从复制的时候 在从上备份的时候删除事务ID号 从新来 |
--set-gtid-purged=OFF | 仅是做普通的本机备份恢复时,可以添加, |
--max_allowed_packet=128M | 控制的是备份时传输单个数据包的大小 |
3 示例备份
以下命令全在数据库服务外使用,如果在服务内使用,所有命令前面加
system
备份所有数据库
# --set-gtid-purged=OFF(关闭事务id号处理)为了防止恢复数据的时候因事务ID号阻断恢复 # --single-transaction (快照备份、热备份) mysqldump -uroot -p -A -R --triggers --set-gtid-purged=OFF --master-data=2 --single-transaction > /tmp/backup.sql
如果出现:Error: Binlogging on server not active
解决办法:
vi /etc/my.cnf
在【mysqld】 最下方 加入:
log-bin=mysql-bin
重启mysqld生效。
导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u linuxde -p smgp_apps_linuxde > linuxde.sql
导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名 mysqldump -u linuxde -p smgp_apps_linuxde users > linuxde_users.sql
导出一个数据结构
mysqldump -u linuxde -p -d --add-drop-table smgp_apps_linuxde > linuxde_db.sql
4 其他
4.1 导出数据内容cvs
mysql -A xsd-prod -u root -p -e " SELECT a.id, a.order_num, a.license_number WHERE a.status=2 and a.total_cost > 0 and a.create_time >= '2022-02-11 00:00:00' AND a.create_time <= '2022-02-20 23:59:59' group by a.id order by create_time desc; " > order.csv
4.2 导入sql
# 数据库服务外 mysql -uroot -p <baskup.sql
# 数据库服务内 source /tmp/a.sql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具