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)

大家都在看

  • rocksdb列族笔记

    1、简介 列族(Column Families)是rocksdb3.0提出的一个机制,用于对同一个数据库的记录(键值对)进行逻辑划分。默认情况下所有的记录都会存储在一个默认列族里(…

    Linux 2023年6月7日
    0100
  • 什么是视频编码?编解码器和压缩技术

    想知道什么是视频编码,为什么它很重要? 在本文中,我们将研究编码、编解码器和压缩技术的过程。这包括什么使得一个推荐的编解码器,虽然是取决于情况。它还涵盖了为什么某些伪影,与压缩有关…

    Linux 2023年6月7日
    0109
  • 微信白名单获取

    公司在微信WIFI登录项目中,需要在BRAS设备上添加微信服务器的IP地址到白名单列表中,以实现用户连接热点后,能够使用微信中的功能(如:添加公众号),但不能使用其他应用进行上网操…

    Linux 2023年6月14日
    099
  • Typora详细教程以及下载

    发现一篇非常不错的 Typora 教程,分享给大家。 原文链接:https://www.cnblogs.com/hyacinthLJP/p/16123932.html 作者:MEl…

    Linux 2023年6月7日
    0134
  • Linux 0.11源码阅读笔记-高速缓冲

    高速缓冲 概念 高速缓冲区是内存中的一块内存,它充当块设备和内核中其他程序之间的桥梁。如果内核程序需要访问块设备中的数据,则需要通过高速缓冲区进行间接操作。 [En] The hi…

    Linux 2023年5月27日
    065
  • Spring Boot连接数据库,从MySql5.13飞跃到MySql8.0.18的坑

    Spring Boot连接数据库,从MySql5.13飞跃到MySql8.0.18的坑 1.驱动名 驱动包用的是:mysql-connector-java-8.0.18.jar 驱…

    Linux 2023年6月7日
    077
  • 【原创】Linux虚拟化KVM-Qemu分析(十一)之virtqueue

    背景 Read the fucking source code! –By 鲁迅 A picture is worth a thousand words. –…

    Linux 2023年6月8日
    076
  • Linux安装宝塔,OCI8,连接ORACLE数据库

    基础环境 centos7 安装BT宝塔 &#x7F51;&#x5740;&#xFF1A;https://www.bt.cn/download/linux.h…

    Linux 2023年6月6日
    0103
  • 每天一个 HTTP 状态码 205

    205 Reset Content 表示服务器成功地处理了客户端的请求,要求客户端… 205 Reset Content 205 Reset Content 表示服务器…

    Linux 2023年6月7日
    0111
  • Mybatis源码解读-插件

    注册 xml方式的注册,是在XMLConfigBuilder#pluginElement完成的。 不明觉厉的同学,请参考上一篇文章:Mybatis源码解读-配置加载和Mapper的…

    Linux 2023年6月7日
    092
  • Redis的slot迁移

    1) 在目标节点B 上执行,从节点A 导入slot 到节点B : CLUSTER SETSLOT8 IMPORTING src– A-node-id 对于迁移的slot…

    Linux 2023年5月28日
    068
  • Linux系统查看hosts配置与dns域名配置

    ;gutter:true;方法1:for i incat /etc/hosts | grep -v ^$ | grep -v “127.0.0.1” | g…

    Linux 2023年6月13日
    081
  • Linux Ubuntu 添加新用户

    1. 了解配置文件 Linux下与用户信息相关的配置文件有 /etc/passwd、 /etc/group、 /etc/shadow等,其权限分别如下: /etc/passwd:保…

    Linux 2023年6月14日
    088
  • Redis 常见面试题(2020最新版)

    https://www.cnblogs.com/javazhiyin/p/13839357.html 概述 什么是Redis Redis(Remote Dictionary Ser…

    Linux 2023年5月28日
    097
  • JavaScript快速入门-05-基本语句

    5 基本语句 5.1 if 语句 if 语句常用语法如下所示: if (condition) { statement1; } else { statement2; } 或 if (…

    Linux 2023年6月7日
    0129
  • 哨兵+redis主从部署架构-docker部署

    架构图 哨兵的介绍 sentinel , 中文是哨兵。 哨兵是redis 集群架构中非常重要的一个组件,主要功能如下: (1)集群监控:负责监控reidis master 和sla…

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