备份:
语法:msyqldump -u 用户名 -p 密码 数据库 表名 > 备份的文件名
--all-databases , -A
导出全部数据库。
备份多个表:
语法:msyqldump -u 用户名 -p 密码 数据库 表名1 表名2 > 备份的文件名
mysqldump -uroot -p123456 oldboy course1 course2 > /opt/two_tables.sql
-B参数:
导出多个数据库。参数后面所有名字参量都被看作数据库名。
备份msyql所有库和表 –A -B
Mysqldump –uroot –p’oldboy123’ –A –B –events|gzip > /opt/a.sql.gz
备份所有库
mysqldump -uroot -poldboy -S /data/3306/mysql.sock -F -B -A|gzip > /server/backup/mysqlbak_$(date+%F).sql.gz
备份一个库
mysqldump -uroot -poldboy -S /data/3306/mysql.sock -F -B oldboy|gzip > /server/backup/mysqlbak_$(date+%F).sql.gz
其他参数说明:
生产场景:增加binlog日志文件和对应位置点,锁表
恢复:
2,
1 2 | gzip -d mysql-bak.sql.gz mysql -uroot -p 'oldboy123' 库名(备份的时候没有指定-B 需要创建库加库名)oldboy < /opt/mysql_bak.sql |
增量备份:
优点:恢复时间短,维护成本低
缺点:占用空间多,占用系统资源多,经常锁表影响用户体验
#全备 并刷新binlog 记录binlog位置 --master-data=2
mysqldump -uroot -p123456 -S /data/3306/mysql.sock -F -B --master-data=2 oldboy|gzip > /opt/mysqlbak.sql.gz
#此时binlog日志
-rw-rw----. 1 mysql mysql 1087 6月 17 2018 mysql-bin.000013
-rw-rw----. 1 mysql mysql 150 6月 17 2018 mysql-bin.000014
-rw-rw----. 1 mysql mysql 150 6月 17 2018 mysql-bin.000015
-rw-rw----. 1 mysql mysql 150 6月 17 2018 mysql-bin.000016
-rw-rw----. 1 mysql mysql 150 6月 17 2018 mysql-bin.000017
-rw-rw----. 1 mysql mysql 150 6月 17 11:54 mysql-bin.000018
-rw-rw----. 1 mysql mysql 150 6月 17 12:03 mysql-bin.000019
#刷新binlog 重新生成一个新的binlog (这样新增的或者修改的数据就到了新的binlog中 ,方便后面查找binlog)
mysqladmin -uroot -p123456 -S /data/3306/mysql.sock flush-logs
#此时binlog日志
-rw-rw----. 1 mysql mysql 150 6月 17 2018 mysql-bin.000014
-rw-rw----. 1 mysql mysql 150 6月 17 2018 mysql-bin.000015
-rw-rw----. 1 mysql mysql 150 6月 17 2018 mysql-bin.000016
-rw-rw----. 1 mysql mysql 150 6月 17 2018 mysql-bin.000017
-rw-rw----. 1 mysql mysql 150 6月 17 11:54 mysql-bin.000018
-rw-rw----. 1 mysql mysql 150 6月 17 12:03 mysql-bin.000019
-rw-rw----. 1 mysql mysql 107 6月 17 12:03 mysql-bin.000020
状况一:oldboy库此时不小心被删除了怎么恢复
停止数据库的写入 flush tables with read lock;
然后查看备份文件的binlog位置
[root@localhost opt]# gzip -d /opt/mysqlbak.sql.gz
[root@localhost opt]# grep -i 'CHANGE' ./mysqlbak.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000019', MASTER_LOG_POS=107;
然后把数据库mysql-bin.000019后面的binlon拷贝到其它地方
cp /data/3306/mysql-bin.000024 /opt/
[root@localhost opt]# ll
总用量 8
-rw-r--r--. 1 root root 2219 6月 17 15:33 mysqlbak.sql
-rw-r-----. 1 root root 910 6月 17 15:39 mysql-bin.000024
解析sql,把binlog日志写入到文件中 查找并删除sql文件的【DROP DATABASE `oldboy`】 保存文件
mysqlbinlog -d oldboy /opt/mysql-bin.000024 > /opt/mysql-bin.000024.sql
恢复全被到数据备份到数据库中
mysql -uroot -p123456 -S /data/3306/mysql.sock < /opt/mysqlbak.sql
恢复增量备份到数据
mysql -uroot -p123456 -S /data/3306/mysql.sock oldboy < /opt/mysql-bin.000024.sql
本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/p/9129994.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能