MySQL的备份与还原

MySQL的备份与还原

1、MySQL的备份说明

热备:

  • 在数据库正在运行下进行备份,备份期间,数据库读写均可以正常进行;

温备:

  • 数据库可用性弱于热备,备份期间,数据库只能进行读操作,不能进行写操作。

冷备:

  • 在备份期间,应用的读写操作不可进行。

2、基于mysqldump命令进行数据备份

#备份一个库
[root@Node1 ~]# mysqldump -uroot -p'123456' --databases LJW > /root/LJW.sql
	#这一行不是报错,而是警告,说你的密码暴露在命令行上
mysqldump: [Warning] Using a password on the command line interface can be insecure.

#备份多个库
[root@Node1 ~]# mysqldump -uroot -p'123456' --databases LJW WEB > /root/LJW-WEB.sql

#备份所有的数据库
[root@Node1 ~]# mysqldump -uroot -p'123456' --all-databases> /root/all.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.

#单独备份一个表格-->备份WEB.t1表格
[root@Node1 ~]# mysqldump -uroot -p'123456'  WEB t1 > /root/t1.sql

数据还原操作

  • 登陆mysql
  • 使用命令source 接上系统路径
#登陆mysql-->进行删除操作
[root@Node1 ~]# mysql -uroot -p'123456'
	#查看一下有什么数据库
mysql> show databases;
	#删除LJW和WEB数据库
mysql> drop database LJW;
mysql> drop database WEB;
Query OK, 1 row affected (0.01 sec)

#现在已经没有了LJW和WEB库;那么进行还原
mysql> source /root/LJW-WEB.sql
	#再次查看发现完全没有问题
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| LCQ                |
| LJW                |
| WEB                |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
7 rows in set (0.01 sec)
  • 也可以通过mysql的命令来进行还原操作
    • 必须存在库,只用还原库中的表格结构以及数据,如果数据库被删掉就无法自动创建出来
#登陆mysql-->进行删除操作
[root@Node1 ~]# mysql -uroot -p'123456'
	#查看一下有什么数据库
mysql> show databases;
	#删除LJW和WEB数据库
mysql> drop database LJW;
mysql> drop database WEB;
Query OK, 1 row affected (0.01 sec)

#使用mysql进行还原
[root@Node1 ~]# mysql -uroot -p'123456' < /root/LJW-WEB.sql
	#进入数据库查看
[root@Node1 ~]# mysql -uroot -p'123456' < /root/LJW-WEB.sql
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| LCQ                |
| LJW                |
| WEB                |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
7 rows in set (0.00 sec)

3、数据还原–>通过binlog的方式进行

  • 这里需要注意一个点,需要提前知道binlog号
  • 配置文件中也需要注意查看是否有bin-log的配置
  • binlog是默认开启的,日志的操作信息在/var/lib/mysql/目录下
#登陆一个mysql
[root@Node1 ~]# mysql -uroot -p'123456'

#刷新一个binlog
mysql> flush logs;
Query OK, 0 rows affected (0.01 sec)

#然后再次查看一下binlog号
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |      157 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

#创建一下表格
mysql> use LJW;
mysql> create table liangjiawei(id varchar(10),sex varchar(3),name varchar(20)); 
Query OK, 0 rows affected (0.00 sec)

#再次刷新一下binlog日志
mysql> flush logs;
Query OK, 0 rows affected (0.01 sec)
	#查看一下binlog号
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000004 |      157 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

#把004的binlog号归档
[root@Node1 ~]# mysqlbinlog --no-defaults --base64-output=decode-rows -v /var/lib/mysql/mysql-bin.000004

#然后进行删除数据
[root@Node1 ~]# mysql -uroot -p'123456'
..........
mysql> drop table LJW.liangjiawei;
Query OK, 0 rows affected (0.01 sec)

#然后查看是否删除了
mysql> use LJW;
mysql> show tables;
+---------------+
| Tables_in_LJW |
+---------------+
| t1            |
+---------------+
1 row in set (0.00 sec)

#然后进行还原操作
[root@Node1 ~]# mysqlbinlog --no-defaults /var/lib/mysql/mysql-bin.000004 | mysql -uroot -p123456

4、Xtrabackup备份工具

Xtrabackup是Percona团队开发的用于MySQL数据库物理热备份的开源备份工具,

特点:

  • 备份速度快、
  • 支持备份数据压缩、
  • 自动校验备份数据、
  • 支持流式输出、
  • 备份过程中几乎不影响业务等特点
  • 是目前各个云厂商普遍使用的MySQL备份工具。

下载地址:

  • https://www.percona.com/downloads

MySQL的备份与还原_第1张图片

具体操作如下:

#准备好xtrabackup的软件包
[root@Node1 ~]# ls percona-xtrabackup-80-8.0.33-27.1.el7.x86_64.rpm 
percona-xtrabackup-80-8.0.33-27.1.el7.x86_64.rpm

#直接rpm安装
[root@Node1 ~]# rpm -ivh --nodeps --force percona-xtrabackup-80-8.0.33-27.1.el7.x86_64.rpm 

#查看是否安装成功
[root@Node1 ~]# echo $?
0

#检查一下是否成功安装
[root@Node1 ~]# xtrabackup -v
2023-08-24T10:50:37.739035+08:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --datadir=/var/lib/mysql 
xtrabackup version 8.0.33-28 based on MySQL server 8.0.33 Linux (x86_64) (revision id: b3a3c3dd)

#创建一个data目录
[root@Node1 ~]# mkdir /data

#对数据进行备份
[root@Node1 ~]# xtrabackup --user=root --password=root --backup --target-dir=/data/mysql_backup
#查看执行是否成功
[root@Node1 ~]# echo $?
0
[root@Node1 ~]# ls /data/mysql_backup/
backup-my.cnf   mysql               xtrabackup_binlog_info
binlog.000002   mysql.ibd           xtrabackup_checkpoints
binlog.index    performance_schema  xtrabackup_info
ib_buffer_pool  sys                 xtrabackup_logfile
ibdata1         undo_001            xtrabackup_tablespaces
LJW             undo_002

# 还原先停mysql服务
[root@Node1 ~]# systemctl stop mysqld
	#然后直接删除mysql的数据-->来点狠点的
[root@Node1 ~]# cd  /var/lib/mysql/
[root@Node1 mysql]# 
[root@Node1 mysql]# rm -rf  LJW

#然后尝试恢复数据
[root@Node1 mysql]# xtrabackup --prerepare --target-dir=/data/mysql_backup
[root@Node1 mysql]# xtrabackup --copy-back --target-dir=/data/mysql_backup/

#修改/data/mysql所属权限,修改/etc/my.cnf配置中的datadir路径
chown -R mysql:mysql /data/mysql
sed -i "s#datadir=/var/lib/mysql#datadir=/data/mysql#g" /etc/my.cnf
[root@yue home]# grep datadir    /etc/my.cnf
datadir=/data/mysql

# 启动mysql服务,验证
systemctl start mysqld

你可能感兴趣的:(Linux-数据库管理篇,mysql,笔记)