一、备份(全量+增量)
# 全量备份
mysqldump -uroot -proot --databases 数据库名> /home/mysql-backup/数据库名_`date +%Y%m%d`.sql;
#删除增量数据
mysql -uroot -p数据库密码
# 删除当前的binlog文件
reset master;
# 删除slave的中继日志
reset slave;
# 删除指定日期前的日志索引中binlog日志文件
purge master logs before '2019-03-09 14:00:00';
# 删除指定日志文件
purge master logs to 'master.000003';
exit
二、恢复
#登录msql
mysql -uroot -proot
show master status;
show binlog events in 'back.000001';
exit
mysqlbinlog --no-defaults back.000001 | mysql -uroot -p数据库密码
# 从日志开头截止到某个时间点的恢复
mysqlbinlog --no-defaults --database=数据库名 --stop-datetime="2023-02-16 19:43:00" back.000001 | mysql -uroot -proot -s -N -f -D 数据库名
# 从某个时间点到日志结尾的恢复
mysqlbinlog --no-defaults --database=数据库名 --start-datetime="2023-02-16 19:43:00" back.000001 | mysql -uroot -proot -s -N -f -D 数据库名
# 从开始position到结束position,一般是SET @@SESSION.GTID_NEXT= 'ANONYMOUS'之前的position
mysqlbinlog --start-position=开始节点 --stop-position=结束节点 --skip-gtids back.000001|mysql -uroot -p数据库密码 -s -N -f
三、测试
# 创建表
CREATE TABLE IF NOT EXISTS `t_user`(
`id` INT UNSIGNED AUTO_INCREMENT,
`name` VARCHAR(100) NOT NULL,
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
# 增删查
insert into t_user(name) values('cgh');
delete from t_user where name='cgh';
select * from t_user;