MySQL 逻辑备份mysqldump

news2024/9/25 17:18:50

逻辑备份mysqldump

在这里插入图片描述

  • MySQL 自带的逻辑备份工具。可以保证数据的一致性和服务的可用性
  • 原理是通过协议连接到 MySQL 数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的 insert 语句,当我们需要还原这些数据时,只要执行这些 insert 语句,即可将对应的数据还原。

备份命令

mysqldump [选项] 数据库名 [表名] > 脚本名
mysqldump [选项] --数据库名 [选项 表名] > 脚本名
mysqldump [选项] --all-databases [选项] > 脚本名
--备份所有数据库
 mysqldump -uroot -p --all-databases > /backup/mysqldump/all.db
 
 --备份指定数据库
 mysqldump -uroot -p test > /backup/mysqldump/test.db
 
 --备份指定数据库的数据表
 mysqldump -uroot -p mysql db event > /backup/mysqldump/2table.db
 
 --备份指定数据库 排除某些表
  mysqldump -uroot -p test --ignore-table=test.t1 --ignore-table=test.t2 > /backup/mysqldump/test2.db
  
  

还原命令

 --在导入备份数据库前,db_name如果没有,是需要创建的; 而且与db_name.db中数据库名是一样的才可以导入。
 
 mysqladmin -uroot -p create db_name 
 mysql -uroot -p db_name < /backup/mysqldump/db_name.db
 
 --source方法
mysql > use db_name
mysql > source /backup/mysqldump/db_name.db

MySQL环境

系统版本mysql版本安装方式
centos75.7.42yum

完整备份与恢复

  • 修改配置文件,开启二进制日志

    [root@mysql ~]# cat /etc/my.cnf | grep "mysql\|server-id"
    # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
    [mysqld]
    basedir=/server/mysql
    datadir=/server/mysql/data
    socket=/var/lib/mysql/mysql.sock
    server-id = 8
    log-bin=/var/log/mysql/bin-log
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    
    
  • 创建所需目录,并授权

    [root@mysql ~]# mkdir /server/mysql/data -p
    [root@mysql ~]# chown -R mysql:mysql /server/mysql/*
    [root@mysql ~]# mkdir -p /var/log/mysql
    [root@mysql ~]# chown -R mysql:mysql /var/log/mysql
    [root@mysql ~]# mkdir -p /backup/mysql -p
    [root@mysql ~]# chown -R mysql:mysql /backup/mysql/
    #重启mysql
    [root@mysql ~]# systemctl restart mysqld
    
    
  • 创建数据库

    --创建数据库mydb
    
    create database mydb;
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mydb               |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    
    
  • 进行全量备份

     mysqldump -uroot -hlocalhost -p'Rkun18.mysql' -P3306 --all-databases --triggers --routines --events --single-transaction --master-data=1 --flush-logs --set-gtid-purged=OFF > /backup/mysql/$(date +%F%H)-mysql-all.sql
     
     [root@mysql ~]# ll /backup/mysql
    总用量 868
    -rw-r--r--. 1 root root 888191 612 17:15 2023-06-1217-mysql-all.sql
    
    
  • 模拟文件被清除

    [root@mysql ~]# systemctl stop mysqld
    [root@mysql ~]# rm -rf /server/mysql/data/*
    
    [root@mysql ~]# systemctl restart mysqld
    #mydb数据库消失
    [root@mysql ~]# ls /server/mysql/data/
    auto.cnf    client-cert.pem  ibdata1      ibtmp1              private_key.pem  server-key.pem
    ca-key.pem  client-key.pem   ib_logfile0  mysql               public_key.pem   sys
    ca.pem      ib_buffer_pool   ib_logfile1  performance_schema  server-cert.pem
    
    #重新启动后可能密码无法登录 需要查找初始化密码后自己修改
    [root@mysql ~]# cat /var/log/mysqld.log | grep 'password'
    2023-06-12T15:11:08.867826Z 1 [Note] A temporary password is generated for root@localhost: 8s*e9<_d=SI&
    2023-06-12T15:36:16.343471Z 5 [Note] Access denied for user '-p'@'localhost' (using password: NO)
    2023-06-12T20:15:48.106914Z 0 [Note] Shutting down plugin 'validate_password'
    2023-06-12T20:15:49.937428Z 0 [Note] Shutting down plugin 'sha256_password'
    2023-06-12T20:15:49.937433Z 0 [Note] Shutting down plugin 'mysql_native_password'
    2023-06-12T20:49:02.437269Z 0 [Note] Shutting down plugin 'sha256_password'
    2023-06-12T20:49:02.437272Z 0 [Note] Shutting down plugin 'mysql_native_password'
    2023-06-12T20:49:03.808190Z 1 [Note] A temporary password is generated for root@localhost: aw,MeyEg-26E
    2023-06-12T21:34:41.847131Z 0 [Note] Shutting down plugin 'sha256_password'
    2023-06-12T21:34:41.847136Z 0 [Note] Shutting down plugin 'mysql_native_password'
    2023-06-12T21:38:57.499224Z 1 [Note] A temporary password is generated for root@localhost: >erR;TW#s1k1
    
    
    #追加不记录二进制日志
    
    [root@mysql ~]# sed -i '23a SET sql_log_bin=0;' /backup/mysql/2023-06-1217-mysql-all.sql 
    
    
    
  • 恢复数据(数据库内部操作)

    set sql_log_bin=0;
    
    mysql> source /backup/mysql/2023-06-1217-mysql-all.sql;
    
    set sql_log_bin=1;
    --导入后密码并不改变 当更新权限后 密码又恢复到备份时密码
    
    flush privileges ;
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mydb               |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    
    

增量备份与恢复

  • 备份环境与恢复
  • 数据库完整备份+数据库增量备份
  • 新建数据表,进行全量备份,随时间推移,数据库突然崩溃

/etc/my.cnf


[mysqld]

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-bin=/var/lib/mysql/bin-log
server-id=2
log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

备份前

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
create database mydb;
create table mydb.t1(id int,name varchar(20));
mysql> insert into mydb.t1 values(1,"test1");
Query OK, 1 row affected (0.01 sec)

mysql> insert into mydb.t1 values(2,"test2");
Query OK, 1 row affected (0.01 sec)

mysql> select * from mydb.t1;
+------+-------+
| id   | name  |
+------+-------+
|    1 | test1 |
|    2 | test2 |
+------+-------+


基于当前状态做一次全备

mysqldump -uroot -hlocalhost -p'Rkun18.mysql' -P3306 --all-databases --triggers --routines --events --single-transaction --master-data=1 --flush-logs --set-gtid-purged=OFF > /backup/mysql/$(date +%F%H)-mysql-all.sql

进入数据库再插入数据

mysql> insert into mydb.t1 values(3,"test3");
Query OK, 1 row affected (0.00 sec)

mysql> insert into mydb.t1 values(4,"test4");
Query OK, 1 row affected (0.00 sec)

mysql> select * from mydb.t1;
+------+-------+
| id   | name  |
+------+-------+
|    1 | test1 |
|    2 | test2 |
|    3 | test3 |
|    4 | test4 |
+------+-------+

模拟数据库崩溃

  • 重启初始化,启动数据库,更改默认密码

    [root@mysql ~]# systemctl stop mysqld
    [root@mysql ~]# rm -rf /var/lib/mysql/*
    [root@mysql ~]# systemctl start mysqld
    #使用最新密码
    [root@mysql ~]# grep 'A temporary password' /var/log/mysqld.log 
    2023-06-12T15:11:08.867826Z 1 [Note] A temporary password is generated for root@localhost: 8s*e9<_d=SI&
    2023-06-12T20:25:48.353946Z 1 [Note] A temporary password is generated for root@localhost: /u,8HyZnHgKn
    
    [root@mysql ~]# mysql -uroot -p'/u,8HyZnHgKn'
    
    mysql> alter user 'root'@'localhost' identified by 'Rkun18.mysql'
        -> ;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> \q
    Bye
    
    
    [root@mysql ~]# mysql -uroot -p'Rkun18.mysql'
    
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    
    
  • 恢复全量数据

    [root@mysql ~]# sed -i '23a SET sql_log_bin=0;' /backup/mysql/2023-06-1216-mysql-all.sql [root@mysql ~]# mysql -uroot -p'Rkun18.mysql' < /backup/mysql/2023-06-1216-mysql-all.sql 
    mysql: [Warning] Using a password on the command line interface can be insecure.
    [root@mysql ~]# mysql -uroot -p'Rkun18.mysql' -e "select * from mydb.t1"
    mysql: [Warning] Using a password on the command line interface can be insecure.
    +------+-------+
    | id   | name  |
    +------+-------+
    |    1 | test1 |
    |    2 | test2 |
    +------+-------+
    
    
  • 恢复增量备份

    [root@mysql ~]# sed -n '22p' /backup/mysql/2023-06-1216-mysql-all.sql  #全量备份到154位置
    CHANGE MASTER TO MASTER_LOG_FILE='bin-log.000002', MASTER_LOG_POS=154;
    
  • 查看数据库中二进制文件

    mysql> show binary logs;
    +----------------+-----------+
    | Log_name       | File_size |
    +----------------+-----------+
    | bin-log.000001 |       177 |
    | bin-log.000002 |       398 |
    +----------------+-----------+
    
    
  • 根据MASTER_LOG_POS恢复增量数据

     #这里只有两个bin-log 从2开始就到最后了
     mysqlbinlog --start-position=154 bin-log.000002  | mysql -uroot -pRkun18.mysql;
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/688960.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

红帽“背叛”开源:限制RHEL源码访问,突袭下游发行版

红帽决定停止公开提供其企业发行版 Red Hat Enterprise Linux (RHEL) 源代码。 从现在开始&#xff0c;CentOS Stream 将成为公共 RHEL 相关源代码发布的唯一仓库&#xff0c;付费客户和合作伙伴可通过 Red Hat Customer Portal 访问到源代码。 CentOS Stream 是由 Red Hat 公…

UNIX环境高级编程——网络IPC:套接字

16.1 引言 本章将考察不同计算机&#xff08;通过网络相连&#xff09;上的进程相互通信的机制&#xff1a;网络进程间通信&#xff08;network IPC&#xff09;。 16.2 套接字描述符 为创建一个套接字&#xff0c;调用socket函数&#xff1a; #include <sys/socket.h&g…

图像增强之图像锐化(边缘增强)之robot算子

目录 note code test note matx (-1,0;1,0) maty (0,-1;1,0) code // 图像增强之图像锐化(边缘增强)之robot算子 void GetRobot(Mat& robotX, Mat& robotY) {robotX (Mat_<int>(2,2) << -1,0,1,0);robotY (Mat_<int>(2,2) << 0,-1,1…

bug汇集-二

1、多个表格 设置 只让当前选中行对应的表格行--高亮 问题&#xff1a;只能设置一个表格高亮&#xff0c;选中一个表格某行高亮&#xff0c;另一行就不高亮 解决&#xff1a; 1、在 表格属性配置里&#xff0c; 把 current-changecurrentChange 写成 current-change"…

多账号矩阵管理系统技术嫁接开发源代码

多账号矩阵管理系统技术嫁接开发源代码 文章目录 一、剪辑部分源代码开发示例二、发布投放部分源代码示例 1.账号绑定一码多扫技术应用开发代码示例2.定时挂载投放源代码示例 一、剪辑部分源代码开发示例 创建工程项目 */ public function createProjectAction() { …

windows电脑如何设置通电自启

原来电脑是需要摁启动摁扭才能开机&#xff0c;现在需要给服务器设置成通电自启 开机后摁del或者F2键进入bois设置&#xff0c;再摁F7进入高级设置&#xff0c;进入Advanced---APM Configuration 进入后 Restore AC Power Loss选择开启。

Selenium教程__获取元素文本、属性值、尺寸(8)

本文将介绍如何使用Selenium来获取元素的文本内容、属性值和尺寸&#xff0c;并展示一些实际应用场景。 学习本文内容将能够轻松地获取并利用元素的相关信息&#xff0c;从而更好地进行元素的验证、操作和断言。 from selenium import webdriverdriver webdriver.Chrome() …

【软考网络管理员】2023年软考网管初级常见知识考点(16)-网络安全与病毒

涉及知识点 网络安全要素&#xff0c;DDOS攻击&#xff0c;网络安全威胁&#xff0c;常见的病毒类型&#xff0c;软考网络管理员常考知识点&#xff0c;软考网络管理员网络安全&#xff0c;网络管理员考点汇总。 原创于&#xff1a;CSDN博主-《拄杖盲学轻声码》&#xff0c;获…

RabbitMQ学习笔记3(小滴课堂)RabbitMQ的安装和web 管控台的讲解

在安装之前我们先要启动docker: docker pull rabbitmq:management 我们现在去运行rabbitmq&#xff1a; 我们可以看到rabbitmq的日志&#xff1a; 可以用之前学过的命令去查看已经运行的容器。 账号admin 密码password 就能登录进去了&#xff1a; 我们可以加一个虚拟主机。

matlab绘制指定球心坐标及半径球面

[x,y,z]sphere(40);%先绘制单位球面&#xff0c;后面都是对此基础上进行更改完成预期的球面&#xff0c;40为分割球面的块数 r2;%球面半径 xx*r;yy*r;zz*r; xx1;yy1;zz1;%球心坐标 axis equal; surf(x,y,z);%绘图axis tight;% 坐标轴样式 square shading flat;% 着色方式light(…

分布式锁工具 Redisson,贼香!!

一、Redisson概述 二、分布式锁 三、Redisson分布式锁 四、RLock 五、公平锁 六、总结 一、Redisson概述 什么是Redisson&#xff1f; Redisson是一个在Redis的基础上实现的Java驻内存数据网格&#xff08;In-Memory Data Grid&#xff09;。它不仅提供了一系列的分布式…

docker搭建redis

一、Docker搜索redis镜像 命令&#xff1a;docker search <镜像名称> docker search redis docker pull redis#若不加版本号默认下载最新版 三、Docker挂载配置文件 接下来就是要将redis 的配置文件进行挂载&#xff0c;以配置文件方式启动redis 容器。&#xff08;挂载&…

js通过原型链的形式封装方法为组件

首先我们可以看看下面一张图 控制区有两个功能&#xff0c;一方面是和前端做交互渲染&#xff0c;另一方面是调用缓存区中所返回回来的封装方法所产生的值 此处我们采用的是angular.js的形式 html文件为 <!DOCTYPE html> <html lang"en"><head>…

区块链运行原理

文章目录 前言区块链的结构区块链的交易过程区块链的共识机制区块链交易存在的问题特性总结 前言 上文《认识区块链》中可以知道区块链是一个通过各种加密算法、共识机制以及其他技术可以实现一个点对点的电子现金系统&#xff0c;从而达到去第三方的效果&#xff08;通常称之…

SNMP 计算机网络管理 实验3(三) SNMP协议工作原理验证与分析

&#x1f680;write in front&#x1f680; 一、实验目的 学习捕获SNMP报文&#xff0c;通过报文分析理解SNMP协议的工作过程。二、实验内容与设计思想 实验内容&#xff1a;编写代码&#xff0c;测试 1&#xff09;使用snmputilg发送SNMP数据包; 使用wireshark抓包&…

【css】实现单独一区域滚动,不影响整体滚动

来源&#xff1a;css实现单独一区域滚动&#xff0c;不影响整体滚动&#xff0c;两种方法 方法 第一种&#xff1a;就该区域高度固定&#xff0c;然后overflow-auto 第二种&#xff1a;使用属性overscroll-behavior: contain; .overfolw{position: absolute;width: 100%;ov…

mysql看视频---01

计算机上的易失和非易失存储器 什么是IO,IO消耗的时间,举例.内存条存什么. IO是指对数据流的输入和输出&#xff0c;就是读写数据,也称为IO流。Java所有的I/O机制都是基于数据流进行输入输出&#xff0c;这些数据流表示了字符或者字节数据的流动序列。 io消耗的时间(如下图)…

【Guava】Guava: Google Core Libraries for Java 好用工具类

文章目录 Guava前言Guava的优势官方网址guava类库使用基本工具类&#xff1a;让使用Java语言更令人愉悦。集合类&#xff1a;集合类库是 Guava 对 JDK 集合类的扩展。Guava 缓存: 本地缓存&#xff0c;可以很方便的操作缓存对象&#xff0c;并且支持各种缓存失效行为模式。Func…

python爬虫-逆向实例小记-1

注意&#xff01;&#xff01;&#xff01;&#xff01;某政府网站逆向实例仅作为学习案例&#xff0c;禁止其他个人以及团体做谋利用途&#xff01;&#xff01;&#xff01;&#xff01; 案例分析 第一步&#xff1a;下图标注出来的是获取请求断点&#xff0c;断点出自 请求…

Android实现拨打电话功能

Android实现拨打电话功能 先上UI效果图点击联系博主拒绝权限同意权限直接拨号 跳转到拨号界面跳转到拨号界面 同时附带号码 代码实现AndroidManifest.xml中添加权限点击联系博主判断是否有拨号权限申请权限回调直接拨号跳转到拨号界面跳转到拨号界面 同时附带号码 完整代码Main…