Linux学习之MySQL备份

2023-09-13 16:40:33

xtrabackup资源下载

完全备份与恢复

# 1.物理备份与恢复
# 冷备份,需停止数据库服务 适合线下服务器。
[root@mysql50 ~]# systemctl stop mysqld
[root@mysql50 ~]# mkdir /bakdir
[root@mysql50 ~]# cp -r /var/lib/mysql /bakdir/mysql.bak
[root@mysql50 ~]# cd /var/lib/mysql
[root@mysql50 mysql]# tar -zcvf /bakdir/mysql.tar.gz ./*
			...
[root@mysql50 mysql]# ls /bakdir/
mysql.bak  mysql.tar.gz
# 删除数据
[root@mysql50 mysql]# rm -rf /var/lib/mysql/*
# 恢复数据(也可以使用cp拷贝的备份文件恢复数据)
[root@mysql50 mysql]# tar -xf /bakdir/mysql.tar.gz -C /var/lib/mysql/
[root@mysql50 mysql]# systemctl start mysqld
[root@mysql50 mysql]# mysql -uroot -p
Enter password: 
...

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db1                |
| information_schema |
| mysql              |
| performance_schema |
| phpmyadmin         |
| studb              |
| sys                |
| tarena             |
| tarena1            |
+--------------------+
9 rows in set (0.00 sec)
# 2.mysqldump备份与恢复
# 热备份,备份和恢复数据库服务必须是运行的
# 备份1张表
[root@mysql50 mysql]# mysqldump -uroot -p123456 tarena salary> /bakdir/tarena_salary.sql;
# 备份多张表
[root@mysql50 mysql]# mysqldump -uroot -p123456 tarena employees departments> /bakdir/tarena_departments_employees.sql;
# 备份1个库
[root@mysql50 mysql]# mysqldump -uroot -p123456 -B tarena >/bakdir/tarena.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
# 备份多个库
[root@mysql50 mysql]# mysqldump -uroot -p123456 -B studb db1 >/bakdir/stu_db1.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
# 备份所有库
[root@mysql50 mysql]# mysqldump -uroot -p123456 -A > /bakdir/allbak.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
# 恢复数据(覆盖恢复数据)
[root@mysql50 mysql]# mysql -uroot -p
Enter password: 
...
mysql> 
mysql> drop database tarena;            # 删除库
Query OK, 6 rows affected (1.83 sec)
mysql> exit
Bye
[root@mysql50 mysql]# mysql -uroot -p123456 < /bakdir/tarena.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@mysql50 mysql]# mysql -uroot -p
Enter password: 
...
mysql> use tarena; # 进库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;      # 看表
+------------------+
| Tables_in_tarena |
+------------------+
| departments      |
| employees        |
| salary           |
| user             |
| user2            |
| wage_grade       |
+------------------+
6 rows in set (0.00 sec)
# 删除表记录
mysql> delete from salary; //删除表记录
Query OK, 8055 rows affected (0.11 sec)
mysql> exit
Bye
# 使用备份文件恢复数据
[root@mysql50 ~]# mysql -uroot -p123456  tarena < /bakdir/tarena_salary.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql> select count(*) from tarena.salary;
+----------+
| count(*) |
+----------+
|     8055 |
+----------+
1 row in set (0.00 sec)
# 分析[Mysqldump 备份和恢复数据时会锁表,锁表期间无法对表做写访问,mysqldump适合备份数据量比较小的数据或在数据库服务器访问量少的时候备份。]

# 通过备份脚本定时备份数据库
[root@mysql50 mysql]# vim /root/backsql.sh
#!/bin/bash
mysqldump -uroot -p123456 -B tarena > /bakdir/"tarena_$(date +%F)".sql
[root@mysql50 mysql]# chmod +x /root/backsql.sh 
# 设定计划任务,每天18:00备份数据库,可以根据自己需求来设定时间
[root@mysql50 mysql]# crontab -e
00 18 * * * /root/backsql.sh
分 时 日 月 周

增量备份与恢复

增量备份:备份上次备份后,新产生的数据。
Percona Xtrabackup是一款强大的在线热备份工具,备份过程中不锁库表,适合生产环境。支持完全备份与恢复、增量备份与恢复、差异备份与恢复。

# 数据增量备份
# 解压源码(在50,51两台机器上安装)
[root@mysql50 ~]# tar xf percona-xtrabackup-8.0.26-18-Linux-x86_64.glibc2.12-minimal.tar.gz 
# 安装依赖
[root@mysql50 ~]# yum install -y perl-DBD-MySQL
# 移动并改名
[root@host50 ~ ]# mv percona-xtrabackup-8.0.26-18-Linux-x86_64.glibc2.12-minimal /usr/local/percona
//把命令添加到系统环境变量
[root@host50 ~ ]# vim /etc/bashrc
export PATH=/usr/local/percona/bin:$PATH  添加在文件末尾
:wq
[root@host50 ~ ]# source  /etc/bashrc
//查看帮助信息
[root@host50 ~ ]# man xtrabackup (按q 退出)
#对数据做增量备份前,必须先有一次备份,也就是首次备份,通常是备份所有数据;比如每周周日完全备份,接下来进行增量备份。

# ---周日完全备份
[root@mysql50 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --target-dir=/fullbak --datadir=/var/lib/mysql
...
xtrabackup: Transaction log of lsn (23970132) to (23970152) was copied.
230913 14:37:47 completed OK!
# ---开始增量备份
[root@mysql50 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --target-dir=/new2 --incremental-basedir=/fullbak --datadir=/var/lib/mysql
# ----在50服务器上创建一个数据库并创建一个表
mysql> create database first;
Query OK, 1 row affected (0.09 sec)

mysql> use first;
Database changed
mysql> create table s1(id int,name varchar(30));
Query OK, 0 rows affected (0.78 sec)

# 数据增量恢复
1.准备恢复数据
2.合并数据
3.清空数据库目录
4.拷贝数据
5.修改数据库目录所有者/组为mysql
6.重启数据库服务
# 将50服务器上备份的数据拷贝到51服务器
[root@mysql51 ~]# scp -r 192.168.88.50:/fullbak /root/
[root@mysql51 ~]# scp -r 192.168.88.50:/new2 /root/
# 准备恢复数据
[root@mysql51 ~]# xtrabackup --prepare --apply-log-only --target-dir=/root/fullbak
# 合并数据,如果有多个增量,同理,将所有增量数据依次进行合并,都合并至完全备份目录
[root@mysql51 ~]# xtrabackup --prepare --apply-log-only --target-dir=/root/fullbak --incremental-dir=/root/new2/
# 清空数据库目录
[root@mysql51 ~]# rm -rf /var/lib/mysql/*
# 拷贝数据
[root@mysql51 ~]# xtrabackup --copy-back --target-dir=/root/fullbak
# 修改数据库目录所有者/组
[root@mysql51 ~]# chown -R mysql.mysql /var/lib/mysql
# 重启数据库
[root@mysql51 ~]# systemctl start mysqld
# 连接数据库查看信息,能查看到first数据库
[root@mysql51 ~]# mysql -uroot -p123456
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db1                |
| first              |
| information_schema |
| mysql              |
| performance_schema |
| phpmyadmin         |
| studb              |
| sys                |
| tarena             |
| tarena1            |
+--------------------+
10 rows in set (0.00 sec)

差异备份与恢复

差异备份:备份完全备份后,新产生的数据。

# 对数据做差异备份前,必须先有一次备份,也就是首次备份,通常是备份所有数据;比如每周周一完全备份,周二到周日差异备份。
# 完全备份数据
[root@mysql50 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --datadir=/var/lib/mysql --target-dir=/allbak
# 添加增量数据
[root@mysql50 ~]# mysql -uroot -p
Enter password: 

mysql> create database second;
Query OK, 1 row affected (0.49 sec)

mysql> use second;
Database changed
mysql> create table a1(id int,name char(10));
Query OK, 0 rows affected (1.09 sec)
# 差异备份和增量备份类似,只是每次备份是基于完全备份的
[root@mysql50 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --datadir=/var/lib/mysql --target-dir=/dir2 --incremental-basedir=/allbak
# 在second库的a1表中插入数据
mysql> insert into a1 values(1,'a'),(2,'b');
# 再次差异备份
[root@mysql50 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --datadir=/var/lib/mysql --target-dir=/dir3 --incremental-basedir=/allbak

# 差异恢复
1.准备恢复数据
2.合并数据
3.清空数据库目录
4.拷贝数据
5.修改数据库目录所有者/组用户为mysql
6.重启数据库服务
# MySQL51 拷贝 MySQL50 的备份文件到 本机的根目录下,拷贝时只需要拷贝完全备份和最后一次差异备份的目录即可
[root@mysql51 ~]# scp -r 192.168.88.50:/allbak /root/
[root@mysql51 ~]# scp -r 192.168.88.50:/dir3 /root/
# 准备恢复数据
[root@mysql51 ~]# xtrabackup --prepare --apply-log-only --target-dir=/root/allbak
# 合并数据
[root@mysql51 ~]# xtrabackup --prepare --apply-log-only --target-dir=/root/allbak --incremental-dir=/root/dir3
# 清空数据库目录
[root@mysql51 ~]# rm -rf /var/lib/mysql/*
# 拷贝数据
[root@mysql51 ~]# xtrabackup --copy-back --target-dir=/root/allbak
# 修改数据库目录所有者/组
[root@mysql51 ~]# chown -R mysql.mysql /var/lib/mysql
# 启动数据库服务器
[root@mysql51 ~]# systemctl start mysqld
# 连接服务查看数据
[root@mysql51 ~]# mysql -uroot -p
Enter password: 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db1                |
| first              |
| information_schema |
| mysql              |
| performance_schema |
| phpmyadmin         |
| second             |
| studb              |
| sys                |
| tarena             |
| tarena1            |
+--------------------+
11 rows in set (0.01 sec)

mysql> select * from second.a1;
+------+------+
| id   | name |
+------+------+
|    1 | a    |
|    2 | b    |
+------+------+
2 rows in set (0.00 sec)
更多推荐

R语言绘制染色体变异位置分布图,RIdeogram包

变异位点染色体分布图今天分享的内容是通过RIdeogram包绘制染色体位点分布图,并介绍一种展示差异位点的方法。在遗传学研究中,通过测序等方式获得了基因组上某些位置的基因型信息。如下表,第一列是变异位点的ID,第二列是染色体,第三列是物理位置,最后两列是两个样品的基因型。这个文件通常有好几万行,要想快速从中获得有效信息

数字孪生行业相关政策梳理--智慧水利领域相关政策(可下载)

&nbsp;&nbsp;&nbsp;&nbsp;自2021年国家“十四五”规划纲要提出“探索建设数字孪生城市”以来,国家发展和改革委员会、工业和信息化部、住房和城乡建设部、水利部、农业农村部等部门纷纷出台政策,大力推动数字孪生在千行百业的落地发展。这些政策不仅为数字孪生的应用提供了广阔的舞台,也为相关产业的发展提供了坚

数据结构----链式栈

目录前言链式栈操作方式1.存储结构2.初始化3.创建节点4.判断是否满栈5.判断是否空栈6.入栈7.出栈8.获取栈顶元素9.遍历栈10.清空栈完整代码前言前面我们学习过了数组栈的相关方法,(链接:线性表-----栈(栈的初始化、建立、入栈、出栈、遍历、清空等操作)_灰勒塔德的博客-CSDN博客)那么今天我们就开始学习新

初识Java 9-1 内部类

目录创建内部类到外部类的链接使用.this和.new内部类和向上转型在方法和作用域中的内部类匿名内部类嵌套类接口中的类从多嵌套的内部类中访问外部人员本笔记参考自:《OnJava中文版》定义在另一个类中的类称为内部类。利用内部类,将逻辑上存在关联的类组织在一起,并且可以控制一个类在另一个类中的可见性。创建内部类创建内部类

企业工程项目管理系统源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)

工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理工程项目各模块及其功能点清单一、系统管理1、数据字典:实现对数据字典标签的增删改查操作2、编码管理:实现对系统编码的增删改查操作3、用户管理:管理和查看用户角

2023/9/14 -- C++/QT

作业:仿照Vector实现MyVector,最主要实现二倍扩容#include<iostream>usingnamespacestd;template<typenameT>classMyVector{private:T*data;size_tsize;size_tV_capacity;public://无参构造MyVe

想了解RPA看这篇就够了(全面又清晰)

想了解RPA看这篇就够了(全面又清晰)本文目录如下:(1)什么是RPA(2)RPA技术发展路线(3)RPA应用场景(4)RPA对比人工的优势(5)RPA的核心能力(1)什么是RPARPA(RoboticProcessAutomation,机器人流程自动化)是一种通过软件机器人模拟和执行规则化、重复性的任务来提高工作效率

大模型重构行业,百度网盘再度抢跑?

随着ChatGPT爆火出圈,AI大模型逐渐渗透到各个行业和领域,诸多大厂也纷纷发布了自己的大模型产品。而在国内AI大模型的市场上,百度的文心大模型无疑是其中较为有名的一个。于是,在国内大厂都在探索如何在大模型时代取得更多优势时,百度大模型也不再局限于某个特定领域,而是将目光放在了网盘应用上。自百度网盘经历“百盘大战”进

Vue3中watch用法

在Vue3中的组合式API中,watch的作用和Vue2中的watch作用是一样的,他们都是用来监听响应式状态发生变化的,当响应式状态发生变化时,都会触发一个回调函数。当需要在数据变化时执行异步或开销较大的操作时,computed是无法操作异步数据的,所以需要使用watch进行侦听。侦听器watch作用是侦听一个或多个

斗地主案例及一些实现规则

4.斗地主发牌4.1案例介绍按照斗地主的规则,完成洗牌发牌的动作。具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。4.2案例分析准备牌:牌可以设计为一个ArrayList<String>,每个字符串为一张牌。每张牌由花色数字两部分组成,我们可以使用花色集合与数字集合嵌套迭

Visual Studio复制、拷贝C++项目与第三方库配置信息到新的项目中

本文介绍在VisualStudio软件中,复制一个已有的、配置过多种第三方库的C++项目,将其拷贝为一个新的项目,同时使得新项目可以直接使用原有项目中配置好的各类**C++**配置、第三方库等的方法。在撰写C++代码时,如果需要用到他人撰写的第三方库,那么每次新建一个项目时都需要重新配置一次环境,相对比较麻烦;而如果我

热文推荐