& mysql简单定时增量全量备份
1. 检查是log_bin是否开启#
增量备份需要开启log_bin
若状态为on
则是已经开启log_bin
若没开启log_bin,则修改mysql配置文件my.cnf,添加以下配置,重启mysql使配置生效
server-id=1
log-bin = /usr/local/mysql/mysql-bin
binlog-do-db = pay
binlog-do-db = cemao_carpool
例:
[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/tmp/mysql.sock
server-id=1
log-bin = /usr/local/mysql/mysql-bin
binlog-do-db = pay
binlog-do-db = cemao_carpool
user=mysql
port=3306
character-set-server=utf8
2. 全量备份#
mysqldump参数说明
--quick : 该选项在导出大表时很有用,它强制 mysqldump 从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中。
--all-databases : 导出所有数据库
--flush-logs : 生成新的二进制日志文件
--single-transaction : 此选项会将隔离级别设置为:REPEATABLE READ。并且随后再执行一条START TRANSACTION语句,让整个数据在dump过程中保证数据的一致性,这个选项对InnoDB的数据表很有用,且不会锁表。但是这个不能保证MyISAM表和MEMORY表的数据一致性。 为了确保使用--single-transaction命令时,保证dump文件的有效性。需没有下列语句ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE,因为一致性读不能隔离上述语句。所以如果在dump过程中,使用上述语句,可能会导致dump出来的文件数据不一致或者不可用。
3. 备份恢复#
简单的定时增量全量备份案例:#
增量备份脚本
/usr/local/mysql/bin/mysqladmin -uroot -pxxxxx flush-logs;
全量备份脚本
backupDatabase=mysql
fileName=${backupDatabase}`date +"%Y-%m-%d_%H:%M:%S"`
baseDir=/usr/local/mysql/backup/
/usr/local/mysql/bin/mysqldump -uroot -pxxxxx --databases pay cemao_carpool --flush-logs --delete-master-logs --single-transaction -R > ${baseDir}${fileName}.sql
tar -zcvf ${baseDir}${fileName}.sql.tar.gz ${baseDir}${fileName}.sql
rm -f ${baseDir}${fileName}.sql;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix