MySQL实现备份案例(2)

案例1:MySQL8.0实现数据库冷备份和还原

10.0.0.10 — MySQL8.0

#停止数据库
[root@CentOS8 my.cnf.d]# systemctl stop mysqld.service

#备份数据
[root@CentOS8 ~]# scp -pr  /var/lib/mysql 10.0.0.13:/mysql-bak

#备份配置文件
[root@CentOS8 ~]# scp -rp /etc/my.cnf  /etc/my.cnf.d/

10.0.0.13 — MySQL8.0

#安装MySQL8.0
[root@CentOS8 config]# yum insatll mysql-server -y

#替换拷贝过来的数据
[root@CentOS8 mysql]# cp -a mysql /var/lib/mysql

#替换配置文件
[root@CentOS8 config]# cp my.cnf /etc/
[root@CentOS8 config]# cp -a  my.cnf.d  /etc/

#更改文件权限
[root@centos8 ~]#chown -R mysql.mysql /var/lib/mysql/

#启动数据库测试
[root@CentOS8 config]# systemctl start mysqld.service

注意:scp -p:保留文件的访问和修改时间,文件的所有者和所有组会发生变化(建议使用rsync -a进行远程拷贝)

案例2:使用mysqldump进行完全备份并模拟数据库损坏:

1.使用musqldump的格式三备份数据库所有数据
[root@CentOS8 ~]# mysqldump -A >hello.sql

#查看备份的数据库
[root@CentOS8 ~]# grep -i '^create database' hello.sql;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ mysql /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ hellodb /*!40100 DEFAULT CHARACTER SET utf8 */;

2.模拟数据库损坏,清空数据库的所有文件,会自动初始化MySQL为重装的状态
[root@CentOS8 ~]# rm -rf /var/lib/mysql/*   #yum安装默认的数据存放路径为/var/lib/mysql/

3.启动数据库
[root@CentOS8 ~]# systemctl start mysqld.service

4.导入数据
[root@CentOS8 ~]# mysql < hello.sql

5.&#x6D4B;&#x8BD5;&#x662F;&#x5426;&#x6062;&#x590D;&#x6B63;&#x5E38;
mysql> show databases ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hellodb            |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

案例3: 利用二进制日志,还原数据库最新状态

&#x5229;&#x7528;--master-data&#x9009;&#x9879;&#x5728;&#x5907;&#x4EFD;&#x7684;&#x6587;&#x672C;&#x6587;&#x4EF6;&#x4E2D;&#x4ECE;&#x4E8C;&#x8FDB;&#x5236;&#x65E5;&#x5FD7;&#x4E2D;&#x6807;&#x8BB0;&#x5F53;&#x524D;&#x4F4D;&#x7F6E;&#x3002;

&#x524D;&#x63D0;&#xFF1A;&#x9700;&#x8981;&#x5F00;&#x542F;&#x4E8C;&#x8FDB;&#x5236;&#x65E5;&#x5FD7;

&#x6B65;&#x9AA4;&#xFF1A;
1.&#x4F7F;&#x7528;mysqldump&#x8FDB;&#x884C;&#x5B8C;&#x5168;&#x5907;&#x4EFD;
[root@CentOS8 ~]# mysqldump -A --master-data=2  > hellodb.sql

2.&#x66F4;&#x6539;&#x6570;&#x636E;&#x5E93;&#x4E2D;&#x7684;&#x6570;&#x636E;&#x4FE1;&#x606F;
mysql> insert into teachers values(null,'xiao ming',20,'M');
Query OK, 1 row affected (0.00 sec)

mysql> insert into teachers values(null,'xiao hong',18,'F');
Query OK, 1 row affected (0.00 sec)

mysql> insert into teachers values(null,'xiao he',19,'M');
Query OK, 1 row affected (0.00 sec)

3.&#x635F;&#x574F;&#x6570;&#x636E;&#x5E93;
[root@CentOS8 ~]# rm -rf /var/lib/mysql/*

4.&#x6267;&#x884C;&#x8FD8;&#x539F;&#x64CD;&#x4F5C;
[root@CentOS8 ~]# ll /data/logbin/*
-rw-r----- 1 mysql mysql 1024 Sep 19 18:26 /data/logbin/mysql-bin.000001
-rw-r----- 1 mysql mysql  154 Sep 19 18:26 /data/logbin/mysql-bin.000002
-rw-r----- 1 mysql mysql   60 Sep 19 18:26 /data/logbin/mysql-bin.index
[root@CentOS8 ~]# mysqlbinlog --start-position=154 /data/logbin/mysql-bin.000001 > binlog.sql
[root@CentOS8 ~]# mysqlbinlog  /data/logbin/mysql-bin.000002 >> binlog.sql

5.&#x5173;&#x95ED;&#x4E8C;&#x8FDB;&#x5236;&#x65E5;&#x5FD7; -- &#x6570;&#x636E;&#x6062;&#x590D;&#x671F;&#x95F4;&#x4E0D;&#x8BB0;&#x5F55;&#x4E8C;&#x8FDB;&#x5236;&#x65E5;&#x5FD7;
mysql> set sql_log_bin=0;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@sql_log_bin;
+---------------+
| @@sql_log_bin |
+---------------+
|             0 |
+---------------+
1 row in set (0.00 sec)

6.&#x6062;&#x590D;&#x6570;&#x636E;&#x5E93;
root@CentOS8 ~]# mysql < hellodb.sql
[root@CentOS8 ~]# mysql < binlog.sql

7.&#x68C0;&#x67E5;

案例4:恢复误删除的表

案例说明:每天凌晨3点定时做完全备份,早上10:00误删除了表students,10:10才发现故障,现需要将数
据库还原到10:10的状态,且恢复被删除的students表


&#x5B8C;&#x5168;&#x5907;&#x4EFD;&#xFF08;3&#xFF09;&#x70B9;--------->&#x5220;&#x9664;&#x4E86;&#x8868;students(10&#xFF1A;00)----->&#x53D1;&#x73B0;&#x6545;&#x969C;&#xFF08;10&#xFF1A;10&#xFF09;

&#x601D;&#x8DEF;&#xFF1A;
1.&#x5C06;&#x6570;&#x636E;&#x5E93;&#x6062;&#x590D;&#x5230;3&#x70B9;&#x65F6;&#x5019;&#x7684;&#x72B6;&#x6001;
2.&#x901A;&#x8FC7;&#x4E8C;&#x8FDB;&#x5236;&#x65E5;&#x5FD7;&#x5C06;&#x4E09;&#x70B9;&#x5230;&#x5341;&#x4E00;&#x70B9;&#x7684;&#x6570;&#x636E;&#x8FDB;&#x884C;&#x8FD8;&#x539F;&#xFF08;&#x9700;&#x8981;&#x5220;&#x9664;&#x4E8C;&#x8FDB;&#x5236;&#x65E5;&#x5FD7;&#x4E2D;&#x5220;&#x9664;students&#x8FD9;&#x6761;&#x8BED;&#x53E5;&#xFF09;

实现:

&#x524D;&#x63D0;&#xFF1A;mysql&#x9700;&#x8981;&#x5F00;&#x542F;&#x4E8C;&#x8FDB;&#x5236;&#x65E5;&#x5FD7;

1.&#x51CC;&#x6668;&#x4E09;&#x70B9;&#x8FDB;&#x884C;&#x5B8C;&#x5168;&#x5907;&#x4EFD;&#xFF1A;
[root@CentOS8 ~]# mysqldump -uroot -p -A -F --single-transaction --master-data=2 > /data/back/all_back_date +"%F:%T".sql

2.&#x6A21;&#x62DF;&#x4E09;&#x70B9;&#x5230;&#x5341;&#x70B9;&#x4E4B;&#x95F4;&#x6709;&#x6570;&#x636E;&#x66F4;&#x65B0;
mysql> insert students (name,age,gender) values('rose',20,'f');
Query OK, 1 row affected (0.01 sec)

mysql> insert students (name,age,gender) values('jack',22,'M');
Query OK, 1 row affected (0.00 sec)

3.&#x6A21;&#x62DF;&#x8BEF;&#x5220;&#x9664;&#x4E86;students
mysql> drop table students;
Query OK, 0 rows affected (0.01 sec)

4.&#x5176;&#x4ED6;&#x8868;&#x4ECD;&#x7136;&#x66F4;&#x65B0;&#x6570;&#x636E;
mysql> insert teachers (name,age,gender)values('xiao wang ',30,'M');
Query OK, 1 row affected (0.00 sec)

mysql> insert teachers (name,age,gender)values('xiao li',28,'M');
Query OK, 1 row affected (0.00 sec)

5.&#x53D1;&#x73B0;&#x8868;&#x5220;&#x9664;&#xFF0C;&#x8FDB;&#x884C;&#x8FD8;&#x539F;&#xFF08;&#x6B64;&#x65F6;&#x9700;&#x8981;&#x505C;&#x6B62;&#x6570;&#x636E;&#x5E93;&#x7684;&#x8BBF;&#x95EE;&#xFF09;
&#xFF08;1&#xFF09;#&#x4ECE;&#x5B8C;&#x5168;&#x5907;&#x4EFD;&#x4E2D;&#xFF0C;&#x627E;&#x5230;&#x4E8C;&#x8FDB;&#x5236;&#x4F4D;&#x7F6E;
[root@CentOS8 back]# cat all_back_2022-09-20\:00\:32\:05.sql  | grep -i "^-- change master"
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=156;

&#xFF08;2&#xFF09;&#x67E5;&#x770B;&#x5BF9;&#x5E94;&#x7684;&#x4E8C;&#x8FDB;&#x5236;&#x6587;&#x4EF6;&#x5E76;&#x751F;&#x6210;sql&#x8BED;&#x53E5;
[root@CentOS8 back]# mysqlbinlog /data/logbin/mysql-bin.000002 > binlog.sql
#mysqlbinlog&#x9ED8;&#x8BA4;&#x5C06;&#x4FE1;&#x606F;&#x8F93;&#x51FA;&#x5230;&#x5C4F;&#x5E55;

&#xFF08;3&#xFF09;&#x5220;&#x9664;binlog.sql&#x4E2D;&#x5173;&#x4E8E;&#x5220;&#x9664;&#x8868;&#x7684;&#x8BED;&#x53E5;
[root@CentOS8 back]# grep -i '^DROP TABLE' binlog.sql
DROP TABLE students /* generated by server */

[root@CentOS8 back]# sed -i.bak '/^DROP TABLE/d' binlog.sql
[root@CentOS8 back]# grep -i '^DROP TABLE' binlog.sql

&#xFF08;4&#xFF09;&#x6267;&#x884C;&#x6570;&#x636E;&#x6062;&#x590D;&#x811A;&#x672C;&#xFF08;&#x9700;&#x8981;&#x8FDB;&#x5165;&#x5230;mysql&#x91CC;&#x9762;&#x4F7F;&#x7528;source&#x547D;&#x4EE4;&#x6267;&#x884C;&#xFF09;
[root@centos8 ~]#mysql -uroot -p

#&#x4E0D;&#x5C06;&#x6570;&#x636E;&#x6062;&#x590D;&#x7684;&#x4FE1;&#x606F;&#x5199;&#x5165;&#x5230;&#x4E8C;&#x8FDB;&#x5236;&#x65E5;&#x5FD7;&#x91CC;&#x9762;
mysql> set sql_log_bin=0;
Query OK, 0 rows affected (0.00 sec)

mysql> source  /data/back/all_back_2022-09-20:00:32:05.sql&#xFF1B;

#&#x6267;&#x884C;&#x8FD9;&#x4E2A;&#x811A;&#x672C;&#x7684;&#x65F6;&#x5019;&#x6709;&#x4E00;&#x4E2A;&#x62A5;&#x9519;&#x4FE1;&#x606F;&#xFF0C;&#x4E0D;&#x7528;&#x7BA1;&#x4ED6;&#xFF0C;&#x6570;&#x636E;&#x4F9D;&#x7136;&#x80FD;&#x6B63;&#x5E38;&#x6062;&#x590D;
mysql> source  /data/back/binlog.sql;

mysql> set sql_log_bin=1;
Query OK, 0 rows affected (0.00 sec)

Original: https://www.cnblogs.com/heyongshen/p/16709687.html
Author: 背对背依靠
Title: MySQL实现备份案例(2)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578582/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux文本处理相关命令

    一、文本处理命令 Linux sort命令用于将文本文件内容加以排序。 sort 可针对文本文件的内容,以行为单位来排序。 语法格式如下: sort [参数]…[文件] 相关参…

    Linux 2023年5月27日
    098
  • Redis相关监控命令

    1、查询Redis并发量,连续统计模式redis-cli –stat 2、redis最大连接数config get maxclients 3、redis当前连接数、阻塞…

    Linux 2023年5月28日
    089
  • Golang 实现 Redis(6): 实现 pipeline 模式的 redis 客户端

    本文是使用 golang 实现 redis 系列的第六篇, 将介绍如何实现一个 Pipeline 模式的 Redis 客户端。 通常 TCP 客户端的通信模式都是阻塞式的: 客户端…

    Linux 2023年5月28日
    087
  • 用 shell 脚本制造连接频繁中断的场景

    问题的提出 最近在准备客户端的新版本,在内部灰度过程中,发现一类奇怪的 dump,通过查看日志和堆栈,可以确定是因为每次连上后台就被后台断开了、导致多次重连后随机发生的崩溃。dum…

    Linux 2023年6月6日
    094
  • redis

    redis 慢 开启 AOF 1、多加服务器 2、增加写的能力 +ssdb Original: https://www.cnblogs.com/y896926473/p/96929…

    Linux 2023年5月28日
    083
  • 数字图像处理

    1. 图像的基本概念 连续图像:二维坐标系上连续变化的图像,图像的像点无限稠密。 离散图像:用数字序列表示的图像,像素是组成图像的基本单位。 1.1 图像数字化采样 图像经过采样与…

    Linux 2023年6月14日
    092
  • nginx源码层面探究request_time、upstream_response_time、upstream_connect_time与upstream_header_time指标具体含义与区别

    背景概述 最近计划着重分析一下线上各api的HTTP响应耗时情况,检查是否有接口平均耗时、99分位耗时等相关指标过大的情况,了解到nginx统计请求耗时有四个指标:request_…

    Linux 2023年6月6日
    0106
  • 真·Android Zxing 扫码中文乱码解决

    Zxing3.2.1 之前遇到过Android Zxing扫码乱码的问题,网上搜了下解决了下。 今天又遇到了问题。 依然会乱码。 研究总结如下: Zxing 可以在Hints中添加…

    Linux 2023年6月13日
    083
  • 019 Linux tcpdump 抓包案例入门可真简单啊?

    1 tcpdump 是什么? 2 tcpdump 常用命令参数 3 tcpdump 抓包wss,配合Wireshark分析 4 tcpdump 抓包白度,配合Wireshark分析…

    Linux 2023年5月27日
    087
  • mycat数据库集群系列之mysql主从同步设置

    最近在梳理数据库集群的相关操作,现在花点时间整理一下关于mysql数据库集群的操作总结,恰好你又在看这一块,供一份参考。本次系列终结大概包括以下内容:多数据库安装、mycat部署安…

    Linux 2023年6月14日
    0102
  • 设计模式——中介者模式

    中介者模式定义 用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 Mediator抽象中介者角色 抽象中…

    Linux 2023年6月7日
    088
  • Docker容器镜像打成tar包

    简述需求: 在现在容器上保存镜像进行打包,在另一台服务上使用 首先查看下现有要打tar包的容器 接下来用commit参数进行保存镜像, -a 提交人的姓名 -m “提交…

    Linux 2023年6月8日
    093
  • springboot系列十、springboot整合redis、多redis数据源配置

    一、简介 Redis 的数据库的整合在 java 里面提供的官方工具包:jedis,所以即便你现在使用的是 SpringBoot,那么也继续使用此开发包。 二、redidTempl…

    Linux 2023年5月28日
    0120
  • CTF简介

    最近在学习渗透测试,后来发现CTF很有趣,发现对学习有所帮助,于是找了几个网站,下面推荐几个我觉得不错的网站 https://www.ctfhub.com/#/index http…

    Linux 2023年6月7日
    0105
  • python虚拟环境介绍与安装(不借助anaconda)

    1 虚拟环境介绍 (1) 虚拟环境能对不同的状况进行环境隔离,程序A的环境变动不会影响程序B的开发 (2)比较便携,因为虚拟环境中都有各自的python包,U盘复制环境,省去其他人…

    Linux 2023年6月7日
    0113
  • 30款提升组织效能 SaaS 工具,我们的宝藏工具箱大公开

    熟悉 Juicedata 的小伙伴知道,从2017年成立到第一款产品发布、从寻找PMF(Product Market Fit) 到开源,我们一直保持着一个精简的团队配置,不少人都很…

    Linux 2023年6月14日
    0193
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球