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)

大家都在看

  • [Git专题] 环境搭建

    环境搭建 在正式使用 Git 之前,首先应当安装 Git 并完成一些基础配置,本章内容就教大家在 Ubuntu 和 CentOS 上安装 Git 的方法。 如果你使用的是基于 De…

    Linux 2023年6月14日
    028
  • Linux下修改mysql的root密码

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年8月24日
    0227
  • 001.IT运维面试问题-Linux基础

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年8月20日
    0240
  • Linux命令行如何实现sftp限速传输

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年9月10日
    01.0K
  • Ubuntu下安装多个JDK,并设置其中一个为默认JDK

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年10月15日
    0196
  • Ubuntu18.04 显卡驱动安装(解决各种疑难杂症)

    步骤 下载驱动 准备工作 进行安装 检查安装 下载驱动 首先,我们需要从官网下载显卡驱动。 [En] First of all, we need to download the v…

    Linux 2023年5月27日
    035
  • 使用VMware Workstation Player虚拟机安装Linux系统

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年8月26日
    0250
  • Linux之apt-get无sudo权限安装软件

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年8月24日
    0196
  • 认识2020年的苹果设计奖获奖者

    苹果设计奖表彰那些在苹果平台上反映最佳设计、创新和技术的开发者的创造性艺术和技术成就。 塑钢3DShapr3D Zrt. 运行CAD软件通常需要一台具有相当处理能力的台式电脑。Sh…

    Linux 2023年6月7日
    039
  • redis数据库

    这一次主要是接着redis服务器接着进行代码讲解,因为redis服务器中包含大量的数据库,因为redis也对每个数据库设计了结构体 redis数据库 在上面 redisServer…

    Linux 2023年6月13日
    045
  • powershell配置自动补全

    powershell配置自动补全 一、需求: 看到老师上课用mac命令行有自动补全功能,发现真的爽。但是自己的windows powershell不能使用自动补全功能。有了需求,就…

    Linux 2023年6月13日
    054
  • liunx安装docker (自我记录)

    1 安装 安装所需的软件包dnf install -y yum-utils device-mapper-persistent-data lvm2 安装 dnf install do…

    Linux 2023年6月7日
    054
  • ROS::message_filters中的一个报错(mt::TimeStamp……)

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年11月7日
    0148
  • powershell遇到错误即推出的方法

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年9月14日
    0132
  • Redis使用Swap,但系统可用内存充足

    最近生产环境遇到一个很奇怪的问题,系统内存32G,redis使用8G左右,剩余的内存都被系统cache使用,从表面上看系统可用内存有20G左右。但是系统运行过程中,redis时不时…

    Linux 2023年6月14日
    038
  • Filter、Interceptor、Aspect 区别及实现

    Fliter 过滤器 请求在到达Controller之前进行与返回去之后 调用 入参为 reuqest,response,chian,过滤器获取不了具体调用哪一个类,哪一个方法。 …

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