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)

大家都在看

  • Ubuntu 18.04替换默认软件源

    安装Ubuntu 18.04后,默认源在国外,可以替换为国内的源以提升访问速度 参考https://mirrors.ustc.edu.cn/repogen/ sudo vi /et…

    Linux 2023年6月6日
    0102
  • Python之NMAP详解

    NMap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。 nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些…

    Linux 2023年6月14日
    0125
  • JavaScript编程基础(一)

    目的: 熟练掌握JavaScript的语言基础,包括数据类型、常量和变量、运算符和表达式、基本语句和函数。 理解JavaScript如何动态产生HTML代码,以及控制CSS。 要求…

    Linux 2023年6月13日
    099
  • docker 安装redis

    1: 搜索镜像, docker search redis2:&#xA0;<strong>docker pull redis:6.0.6</strong&g…

    Linux 2023年5月28日
    099
  • CentOS系统磁盘目录空间调整

    前几天装了几台linux服务器,安装操作系统的时候,选择了默认磁盘分区,结果导致后面主目录分区空间不够用了,需要把其他分区的空间划分给主分区一点。 下面以CentOS6.5演示: …

    Linux 2023年6月6日
    0104
  • 教你写Spring组件

    一、宗旨 在如日中天的 Spring 架构体系下,不管是什么样的组件,不管它采用的接入方式如何眼花缭乱,它们永远只有一个目的: 接入Spring容器 二、Spring 容器 Spr…

    Linux 2023年6月6日
    0124
  • MACOS Terminal终端:更改zsh模式到bash模式(切换shell)

    MACOS Terminal终端:更改zsh模式到bash模式(切换shell) 一、GUI界面切换: preferences… -> shell open wi…

    Linux 2023年5月28日
    0178
  • 为知笔记迁移到印象笔记-从入门到放弃

    最新进展 已经放弃了,目前正在逐步把笔记迁移到本地,用icloud来同步。 为什么放弃迁移? 没有找到好的迁移方案,迁移过去文档不方便查找和使用 为什么放弃印象笔记? 1.主要使用…

    Linux 2023年6月14日
    092
  • 手把手搭建一个属于自己的在线 IDE

    背景 这几个月在公司内做一个跨前端项目之间共享组件/区块的工程,主要思路就是在 Bit 的基础上进行开发。Bit 主要目的是实现不同项目 共享 与 同步 组件/区块,大致思路如下:…

    Linux 2023年6月14日
    0114
  • shell脚本echo打印错位

    问题描述 在脚本中使用curl命令请求Jenkins的API获取job的编号,随后将编号和其他字符串拼接后,使用echo命令打印出来,但打印后字符串错位了。 脚本大致如下: num…

    Linux 2023年6月8日
    0124
  • 2021年3月-第01阶段-Linux基础-Linux系统概念-Linux命令

    Linux系统基本概念 图形界面: Ctrl+Shift +号 //调整命令终端变大 Ctrl – 号 //调整命令终端变小 命令终端: ~ 家目录:用户的私有场所,其…

    Linux 2023年6月8日
    0107
  • Mysql实战技能全解

    一、数据库原理 1 数据的分类 结构化的数据:即有固定格式和有限长度的数据。例如填的表格就是结构化的数据,国籍:中华人民共和国,民族:汉,性别:男,这都叫结构化数据 非结构化的数据…

    Linux 2023年6月7日
    0146
  • (Java初学篇)IDEA项目新建流程和软件配置优化以及怎么彻底删除项目

    相信很多小伙伴们在初学 Java 时都会出现这样的情况,就是在网上一顿搜索加捣鼓终于把 JDK 和IDEA 这两款软件安装配置好,但是发现面对这个陌生的软件此时却无从下手,那么接下…

    Linux 2023年6月6日
    0147
  • 字符设备驱动

    1.字符设备驱动概述 Linux用户空间与内核空间之间的虚拟内存是分开的,用户空间不能直接写入内核空间,如果用户空间和内核空间需要传递数据就需要字符设备驱动。 2.结构体以及函数介…

    Linux 2023年6月8日
    0148
  • go将青龙面板里面的脚本文件都下载到本地

    纯粹练手用的,大家轻喷青龙面板的脚本文件可以下载到本地,这样的话自己可以研究一下对应的脚本文件,能学到更多的知识,原理其实很简单,F12一下就知道了,青龙面板使用Request H…

    Linux 2023年6月7日
    0151
  • QT删除整个文件夹

    故事背景:因为客户端要清理旧版本以及日志文件,所以需要删除一个月以前的所有文件夹 技术调研:在程序中我想把文件夹直接删除,但是调用QDir中的rmdir()或者rmpath()时要…

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