全量恢复数据(全量备份+mysqlbinog)
现在凌晨三点了,数据库自动备份开始了,我们通过如下命令将数据库备份成 SQL 脚本
cd /www/server/data/backup;
ls -t |grep laravel | sed -n '3,$p' | xargs -I {} rm -rf {};
mysqldump -uroot -proot --flush-logs --lock-tables -B laravel | gzip >/www/server/data/backup/laravel`(date +%s)`.sql.gz
1.立刻设置全局只读,防止新增数据干扰。
进入数据库:set global read_only=1; #普通权限的用户只读,不能写数据
查看 show variables like '%read_only%';
2、备份当前数据库,以防万一。
3、进入MySQL查看日志,并生成新的binlog日志
show binary logs;
flush logs;
show binary logs;
4、复制binlog,并生成可读文件,用于分析误操作post节点或时间节点信息,
cp -v mysql-bin.000033 backup/;
cd backup;
/www/server/mysql/bin/mysqlbinlog --no-defaults --database=db --base64-output='decode-rows' -v mysql-bin.000033 > binlog_033.sql;
5、恢复备份数据库
gunzip < /www/server/data/backup/laravel1648552481.sql.gz | mysql -uroot -proot laravel
6、恢复mysqlbinlog增量数据
#开始位置到drop删除位置
/www/server/mysql/bin/mysqlbinlog mysql-bin.000033 --start-position 1040 --stop-position 1059 --database=laravel | mysql -uroot -proot laravel
#跳过drop删除位置,再到结束位置
/www/server/mysql/bin/mysqlbinlog mysql-bin.000035 --start-position 1086 --stop-position 1387 --database=laravel | mysql -uroot -proot laravel
或者
#开始位置到drop删除位置
/www/server/mysql/bin/mysqlbinlog mysql-bin.000033 --start-datetime='2022-02-11 00:00:00' --stop-datetime='2022-02-12 15:00:00' --database=laravel | mysql -uroot -proot laravel
#跳过drop删除位置,再到结束位置
/www/server/mysql/bin/mysqlbinlog mysql-bin.000035 --start-datetime='2022-02-12 16:00:00' --stop-datetime='2022-02-12 18:00:00' --database=laravel | mysql -uroot -proot laravel
7、恢复数据后,刷新binlog日志,生成新的binlog日志。
show binary logs;
reset master;
show binary logs;
8、恢复全局锁
set global read_only=0;
9、恢复之前为了避免产生没有用的二进制日志,可以关闭二进制日志的记录
SET SESSION sql_log_bin=0;
恢复完成,启用记录二进制日志
SET SESSION sql_log_bin=1;
恢复单表数据
一、处理需要恢复的单表binlog
1、将binlog日志复制到备份文件夹
cp -v mysql-bin.000033 backup/;
2、打开备份文件夹,从mysql-bin.000033中提取出想要的数据库binlog003.sql
cd backup;
/www/server/mysql/bin/mysqlbinlog --no-defaults --database=db --base64-output=decode-rows -v mysql-bin.000033 > binlog003.sql
3、从binlog003.sql中提取出想要的单表数据mytable_backup.sql;
cat binlog003.sql | grep -A1 -B3 -i -E '^insert|^update|^delete|^replace|^alter'| grep -A1 -B3 mytable > mytable_backup.sql;
4、需要手动vim编辑mytable_backup.sql,将那条drop语句剔除掉
二、处理需要恢复的备份sql
1、创建mytable_info.sql文件,添加使用数据库 use laravel,
echo -e '\n USE `laravel`; \n' > mytable_info.sql;
2、将备份的数据库提取出需要备份的表结构,追加到mytable_info.sql
sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `info`/!d;q' laravel1648610111.sql >> mytable_info.sql;
3、将备份的数据库提取出需要备份的表数据,追加到mytable_info.sql
grep 'INSERT INTO `info`' laravel1648610111.sql >> mytable_info.sql;
三、恢复单表数据(单表备份+单表mysqlbinlog)
先恢复mytable表的备份数据,然后执行binlog提取的mytable表增量数据。
mysql -uroot -proot database < mytable_backup.sql;
mysql -uroot -proot database < mytable_info.sql;
linux导入导出数据库操作
1、导出数据库
mysqldump -uroot -ppassword abc >db_abc.sql
如果要直接导出sql.zip或者gzip格式文件命令如下:
mysqldump -uroot -ppassword abc | gzip > db_abc.sql.tar.gz
2、导入数据库
mysql -uroot -ppassword database< /root/backup/db_abc.sql
如果是zip或gzip格式则使用下面的命令:
gunzip < /root/backup/abc.sql.tar.gz | mysql -uroot -ppassword abc
参考链接:
https://www.cnblogs.com/builderman/p/15835602.html
删除n天前的文件保留几份最新的文件
参考链接:
https://blog.csdn.net/mcfnhm/article/details/121290881
https://www.cnblogs.com/testpu/p/15545361.html
显示20分钟前的文件
find /home/prestat/bills/test -type f -mmin +20 -exec ls -l {} \;
删除20分钟前的文件
find /home/prestat/bills/test -type f -mmin +20 -exec rm {} \;
显示20天前的文件
find /home/prestat/bills/test -type f -mtime +20 -exec ls -l {} \;
删除20天前的文件
find /home/prestat/bills/test -type f -mtime +20 -exec rm {} \;
数据回闪
参考链接:
https://cloud.tencent.com/developer/article/1554668
https://www.cnblogs.com/tianfen/p/10001807.html
python加入环境变量:参考链接
https://blog.csdn.net/qq_36564503/article/details/122910412
pip下载某个模块
1、比如我刚开始安装tf2.0出现了错误,
pip install -i https://pypi.douban.com/simple tensorflow==2.0.0
通过设置 --trusted-host pypi.douban.com 信任该镜像源。
下面我们只需要改成如下即可:
pip install -i https://pypi.douban.com/simple --trusted-host pypi.douban.com tensorflow==2.0.0
2、其他常用镜像源
阿里云 http://mirrors.aliyun.com/pypi/simple
豆瓣 http://pypi.douban.com/simple
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple
中科大 http://pypi.mirrors.ustc.edu.cn/simple
网易云 https://mirrors.163.com/pypi/simple
#以清华源为例
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn 模块名