MySQL备份恢复
华子目录
- MySQL日志管理
- `为什么需要日志`
- `日志作用`
- `日志文件查看方法`
- `错误日志`
- `通用查询日志`
- `慢查询日志`
- 示例
- `撤销日志`
- `重做日志`
- `二进制日志`---`重要`
- `中继日志`
- MySQL备份
- 备份类型
- 逻辑备份优缺点
- 备份内容
- 备份工具
- 导入sql文件
MySQL日志管理
为什么需要日志
- 用于
排错
- 用来做
数据分析
- 了解
程序
的运行情况
,了解MySQL
的性能
日志作用
- 在
数据库
保存数据
时,有时候不可避免
会出现数据丢失
或者被破坏
,这样情况下,就必须保证数据
的安全性
和完整性
,则需要使用日志
来查看
或者恢复数据
日志文件查看方法
- 由于
多种
安装mysql
的方法
可能导致文件存储位置
和名称不同
,需要先通过mysql配置文件
确定错误日志文件位置
及名称
[root@mysql ~]# cat /etc/my.cnf
log-error=/var/log/mysqld.log #错误日志
- 查看
mysql数据目录
中的日志文件
[root@mysql ~]# cat /etc/my.cnf
datadir=/var/lib/mysql
错误日志
错误日志
记录以下信息:
服务器启动
和关闭过程
中的信息
服务器运行过程
中的错误信息
事件调度器
运行一个时间
是产生的信息
- 在
从服务器
上启动从服务器
进程是产生的信息
#查看错误日志位置及文件名,一般以主机名.err方式命名
mysql> show variables like "log_error";
+---------------+---------------------+
| Variable_name | Value |
+---------------+---------------------+
| log_error | /var/log/mysqld.log | #错误日志文件在主机中的存储位置
+---------------+---------------------+
错误日志
信息需要注意三类
:[System]
、[Warning]
、[Error]
-
[System]
:- 描述:
[System]
级别的日志条目通常记录
的是系统级
的信息
,比如MySQL服务
的启动
和停止时间
、配置文件
读取情况、系统变量
设置等。 - 用途:这些信息对于理解
数据库服务器
的启动过程、配置文件的加载
以及系统变量的最终设置状态
非常有用。
- 描述:
-
[Warning]
:- 描述:
[Warning]
级别的日志条目记录
的是警告信息
,这些信息表明数据库操作
中存在潜在的问题
或不符合预期
的行为
,但这些问题通常不会
导致数据库
立即停止工作
或数据丢失
。 - 用途:
警告信息
可以帮助数据库管理员
(DBA
)识别
和解决可能的问题源
,从而避免未来可能出现的更严重问题。
- 描述:
-
[Error]
:- 描述:
[Error]
级别的日志条目记录
的是错误信息
,这些信息表明数据库
操作中遇到了严重问题
,可能会导致数据库功能受限
、性能下降
或数据损坏
。 - 用途:
错误信息
对于快速定位
和解决问题
至关重要。DBA
应该立即关注这些条目
,并根据错误信息
进行故障排除
和修复
- 描述:
通用查询日志
- 由于
数据库
一般有多条连接
,不一定
是本地连接
,所以需要记录每个连接客户端
的所有操作
,包括启动
和关闭MySQL服务
、更新语句
和查询语句
等,从而产生查询日志
- 查看
设置状态
mysql> show global variables like "%general_log%";
+------------------+--------------------------+
| Variable_name | Value |
+------------------+--------------------------+
| general_log | OFF | #默认关闭
| general_log_file | /var/lib/mysql/mysql.log | #通用日志文件存储位置
+------------------+--------------------------+
- 启动
通用查询日志
mysql> set global general_log=1;mysql> show global variables like "%general_log%";
+------------------+--------------------------+
| Variable_name | Value |
+------------------+--------------------------+
| general_log | ON |
| general_log_file | /var/lib/mysql/mysql.log |
+------------------+--------------------------+# 注意这是临时更改,若永久更改则在my.cnf中配置general-log=1,并重启服务
# 注意可以在my.cnf中设置 general_log_file=路径/文件名 的形式设置永久更改存储位置
- 设置日志记录
类型
(表
/文本文件
/空
)
mysql> show variables like "%log_output%";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output | FILE |
+---------------+-------+
#注意可以在my.cnf中设置log-output={TABLE|FILE|NONE}类型
注意
:
- 要启用
通用查询日志
,需要至少配置general-log=1
,log-output={TABLE|FILE}
general_log_file
如果没有指定
,默认名
是:主机名.log
默认通用查询日志
是不开启的
,因为会消耗
大量的磁盘空间
、CPU
以及内存
,所以当需要通过查询日志
还原操作场景
准确定位问题
时可以短时间开启
# 可以通过下面的查询测试查询日志的文件变化
mysql> show variables like "%general_log%";
+------------------+--------------------------+
| Variable_name | Value |
+------------------+--------------------------+
| general_log | ON |
| general_log_file | /var/lib/mysql/mysql.log |
+------------------+--------------------------+mysql> use view;mysql> show tables;
+----------------+
| Tables_in_view |
+----------------+
| class |
| student |
| viewInfo_stu |
| view_stu |
| view_stu1 |
+----------------+mysql> select * from student;
+----+-------+-----+--------+--------------------+---------+
| id | name | age | gender | address | classid |
+----+-------+-----+--------+--------------------+---------+
| 1 | 文 | 21 | M | 陕西省西安市 | 1003 |
| 2 | rong | 18 | F | 陕西省榆林市 | 1001 |
| 3 | yuan | 19 | M | 陕西省西安市 | 1002 |
| 5 | hua | 10 | M | 山西省 | 1001 |
| 6 | huazi | 9 | M | 山西省 | 1002 |
+----+-------+-----+--------+--------------------+---------+
[root@mysql ~]# cat /var/lib/mysql/mysql.log
/usr/sbin/mysqld, Version: 8.4.3 (MySQL Community Server - GPL). started with:
Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock
Time Id Command Argument
2024-11-30T07:52:20.060357Z 15 Init DB view
2024-11-30T07:52:20.061025Z 15 Query show databases
2024-11-30T07:52:20.061583Z 15 Query show tables
2024-11-30T07:52:20.062232Z 15 Query SELECT * FROM `class` LIMIT 0
2024-11-30T07:52:20.063133Z 15 Query SELECT * FROM `student` LIMIT 0
2024-11-30T07:52:20.063937Z 15 Query SELECT * FROM `viewInfo_stu` LIMIT 0
2024-11-30T07:52:20.064518Z 15 Query SELECT * FROM `view_stu` LIMIT 0
2024-11-30T07:52:20.064896Z 15 Query SELECT * FROM `view_stu1` LIMIT 0
2024-11-30T07:52:29.367548Z 15 Query show tables
2024-11-30T07:52:43.639933Z 15 Query select * from student
- 关闭通用查询日志
mysql> set global general_log=0;
Query OK, 0 rows affected (0.00 sec)mysql> show variables like "%general_log%";
+------------------+--------------------------+
| Variable_name | Value |
+------------------+--------------------------+
| general_log | OFF |
| general_log_file | /var/lib/mysql/mysql.log |
+------------------+--------------------------+
慢查询日志
慢日志记录
所有执行时间
超过long_query_time秒
的所有查询
或不使用索引
的查询
解释
:若某条查询语句
的执行时间过长
,超过
了设定的阈值
则就会记录
到慢日志
中,可以对其进行后期select语句
的优化
- 查看
慢查询日志
状态
mysql> show variables like "%slow_query_log%";
+---------------------+-------------------------------+
| Variable_name | Value |
+---------------------+-------------------------------+
| slow_query_log | ON | #开启状态
| slow_query_log_file | /var/lib/mysql/mysql-slow.log | #日志文件位置
+---------------------+-------------------------------+
- 开启
慢查询日志
mysql> set global slow_query_log=1;
# 注意:为了服务器调优,建议开启
慢日志
的时间阈值
mysql> show variables like "%long_query_time%";
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 10.00000 | #默认为10秒,精度可以到微秒
+-----------------+----------+
示例
mysql> show variables like "%slow_query_log%";
+---------------------+----------------------------------+
| Variable_name | Value |
+---------------------+----------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | /data/mysql/mysql-node1-slow.log |
+---------------------+----------------------------------+mysql> show variables like "%long_query_time%";
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+mysql> set global slow_query_log=1;mysql> select sleep(11);
#等待11秒
[root@mysql-node1 ~]# cd /data/mysql/
[root@mysql-node1 mysql]# cat mysql-node1-slow.log
/usr/local/mysql/bin/mysqld, Version: 5.7.44-log (Source distribution). started with:
Tcp port: 3306 Unix socket: /data/mysql/mysql.sock
Time Id Command Argument
# Time: 2024-12-01T14:05:19.572448Z
# User@Host: root[root] @ localhost [] Id: 2
# Query_time: 11.008686 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0
use db_hua;
SET timestamp=1733061919;
select sleep(11);
撤销日志
Undo-log日志
:即撤销日志
或回滚日志
,Undo
即撤销
的意思,在日常开发过程
中,如果代码敲错
了,一般会习惯性
的按下Ctrl+Z
撤销,而Undo-log
的作用也是如此
,但它是用来给MySQL
撤销SQL
操作的。Undo-log日志
记录内容:- 若是
insert
插入操作,则生成一个对应的delete
操作。 - 若是
delete
删除操作,InnoDB
中会修改隐藏字段deleted_bit=1
,则生成改为0
的语句。 - 若是
update
修改操作,如:将性别
从男
改成了女
,则就生成
一个从女
改回男
的操作
- 若是
- 可以理解为:当一条
写入类型
的SQL
执行时,都会在Undo-log
日志中生成相应
的反SQL
放入到Undo-log
中
#从mysql8.0.20版本开始存储位置
[root@mysql ~]# cd /var/lib/mysql/
[root@mysql mysql]# ls #以undo开头的文件是撤销日志
undo_001
undo_002
重做日志
InnoDB引擎
在设计时
是基于磁盘
存储数据的
,当MySQL
启动后就会在内存
中创建一个BufferPool
,运行过程
中会将大量操作
汇集在内存
中进行
,比如写入数据
时,先写到内存
中,然后由后台线程
再刷写
到磁盘
- 虽然使用
BufferPool
提升了MySQL
整体的读写性能
,但它是基于内存
的,也就意味着随着机器
的宕机
、重启
,其中保存的数据
会消失
,当向内存
中写入数据
后,MySQL
突然宕机
了,则这条未刷写
到磁盘
的数据
会丢失
,也正由于该原因
,redo-log
应运而生 redo-log
:重做日志
,是一种预写式日志
,即在向内存
写入数据
前,会先写日志
,当后续数据
未被刷写
到磁盘
、MySQL崩溃
时,就可以通过日志
来恢复数据
,确保所有提交
的事务
都会被持久化
mysql8
中Redo-log
存储在/var/lib/mysql/#innodb_redo
目录下,由32
个文件
组成有两种类型
的redo log文件
,一种是当前正在使用
的#ib_redoN
;另一种是空闲的文件名
为#ib_redoN_tmp
,多加了个_tmp
后缀
mysql> select * from performance_schema.innodb_redo_log_files\G;
*************************** 1. row ***************************FILE_ID: 148FILE_NAME: ./#innodb_redo/#ib_redo148START_LSN: 484671488END_LSN: 487946240SIZE_IN_BYTES: 3276800IS_FULL: 0
CONSUMER_LEVEL: 0
mysql> show status like "%innodb%redo%";
+-------------------------------------+-----------+
| Variable_name | Value |
+-------------------------------------+-----------+
| Innodb_redo_log_read_only | OFF |
| Innodb_redo_log_uuid | 952782583 |
| Innodb_redo_log_checkpoint_lsn | 486687544 |
| Innodb_redo_log_current_lsn | 486687544 |
| Innodb_redo_log_flushed_to_disk_lsn | 486687544 |
| Innodb_redo_log_logical_size | 512 |
| Innodb_redo_log_physical_size | 3276800 |
| Innodb_redo_log_capacity_resized | 104857600 |
| Innodb_redo_log_resize_status | OK |
| Innodb_redo_log_enabled | ON |
+-------------------------------------+-----------+
二进制日志
—重要
二进制日志
作用:
- 记录
所有更改数据
的语句
(insert、update、delete等
),不记录
查询语句 - 用于
主从复制
,因为从服务器
需要到主服务器
里拷贝二进制日志
,然后根据二进制日志
的内容
去执行SQL语句
,从而达到主从服务器
里的数据一模一样
- 用于
恢复数据
日志审计
的场景
:用户
可以通过二进制日志
中的信息
来进行审计
,判断
是否有对数据库
进行注入攻击
(mysql
注入攻击
:黑客
可以提交一段数据库查询代码
,根据程序返回的结果
,获得
某些想要得到的数据
)
#开启二进制日志
[root@mysql ~]# vim /etc/my.cnf
log-bin=mysql-bin #开启二进制日志
#二进制日志的位置
[root@mysql ~]# cd /var/lib/mysql/
[root@mysql mysql]# lsbinlog.000001binlog.000002binlog.000003binlog.000004binlog.000005binlog.000006binlog.000007binlog.000008binlog.000009
- 查看
二进制日志状态
mysql> show variables like "%log_bin%";
+---------------------------------+-----------------------------+
| Variable_name | Value |
+---------------------------------+-----------------------------+
| log_bin | ON |
| log_bin_basename | /var/lib/mysql/binlog |
| log_bin_index | /var/lib/mysql/binlog.index |
| log_bin_trust_function_creators | OFF |
| sql_log_bin | ON |
+---------------------------------+-----------------------------+
- 日志查看
#查看有哪些二进制日志文件
mysql> show binary logs;
+---------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+---------------+-----------+-----------+
| binlog.000001 | 26826 | No |
| binlog.000002 | 181 | No |
| binlog.000003 | 158 | No |
| binlog.000004 | 158 | No |
| binlog.000005 | 83200151 | No |
| binlog.000006 | 12162 | No |
| binlog.000007 | 181 | No |
| binlog.000008 | 2753 | No |
| binlog.000009 | 2651 | No |
+---------------+-----------+-----------+
#显示名称、容量单位字节、加密与否
# 查看当前正在使用的是哪一个二进制日志文件
mysql> show master status\G;
*************************** 1. row ***************************File: mysql-bin.000001Position: 154Binlog_Do_DB:Binlog_Ignore_DB:
Executed_Gtid_Set:
#查看二进制日志内容
mysql> show binlog events in "binlog.000001";
- 使用命令
mysqlbinlog
查看二进制日志内容
# 使用命令mysqlbinlog查看二进制日志内容
[root@mysql ~]# cd /var/lib/mysql/
[root@mysql mysql]# mysqlbinlog binlog.000001
分割日志
:新的操作
会记录的新的日志文件
中- 使用
mysqladmin
刷新日志
- 使用
#每刷新一次,就会产生一个binlog日志
[root@mysql ~]# mysqladmin flush-logs -uroot -p
Enter password:[root@mysql ~]# mysql -uroot -p#新建数据库
mysql> create database mydb12_journal;
# 查看当前正在使用的是哪一个二进制日志文件
mysql> show master status;mysql> show binary logs;
+---------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+---------------+-----------+-----------+
| binlog.000001 | 26826 | No |
| binlog.000002 | 181 | No |
| binlog.000003 | 158 | No |
| binlog.000004 | 158 | No |
| binlog.000005 | 83200151 | No |
| binlog.000006 | 12162 | No |
| binlog.000007 | 181 | No |
| binlog.000008 | 2753 | No |
| binlog.000009 | 2695 | No |
| binlog.000010 | 202 | No |
+---------------+-----------+-----------+
[root@mysql mysql]# mysqlbinlog binlog.000010
......
create database mydb12_journal
......
日志刷新
作用
:通过刷新日志
进行更新日志
,对缓存数据
进行磁盘I/O
,并强制mysqld
来关闭
和重新
打开日志文件
(或者在某些情况下
切换到一个新的日志
)- 由于
日志
的记录
不是直接
写入磁盘上的日志文件
中而是使用日志缓存
的方式
,当频繁
执行多条修改
的sql语句
时,为了避免
对磁盘频繁I/O
,会将日志记录
写入到内存
的特殊空间
即日志缓存
中,之后每隔一个固定时间间隔
将缓存的日志
写入到磁盘文件
中
刷新日志命令
格式
#每刷新一次,就会产生一个binlog文件
mysql> flush logs;
# 查看当前正在使用的是哪一个二进制日志文件
mysql> show master status;
#在shell中,通过mysqladmin命令执行日志刷新
[root@mysql ~]# mysqladmin flush-logs -uroot -p
Enter password:
#或,但是refresh会重置binlog文件,将之前的binlog文件全部删除,再新建一个binlog.00001文件
[root@mysql ~]# mysqladmin refresh -uroot -p
Enter password:
不小心删库后应该跑路吗?
- 如果
在线上
真的删库
了,哪就先别想着跑路
,你跑不掉!
bin-log日志
中会记录执行SQL
的连接会话信息
,同时一般规模较大的企业
,都会搭建
完善的监控系统
,会监控服务
的网络连接
- 因此当你
删库
后,他们可以顺着bin-log → session → network-connection
这条线确定执行
删库SQL
的IP
!如果你还未断开连接
,直接通过MySQL
的命令
就能定位到删库
的IP
,因此基本上删库
了,是可以定位
到责任人的
- 因此当你
删库
后,可以直接
去本地
找Bin-log
的日志文件
,然后拷贝出来一份
,再打开最后一个文件
,把里面删库
的记录
手动移除
,再利用mysqlbinlog
工具导出xx.SQL
文件,最后执行该SQL
文件即可恢复删库前
的数据
中继日志
-
Relay-log
:中继日志
,在单库
中是见不到的
,该类型
的日志
仅存在主从架构
中的从机
上 -
主从架构
中的从机
,其数据
基本上都是复制
主机bin-log日志
同步过来
并放在relay-log日志
中,中继日志
的作用
就跟它的名字
一样,仅仅只是作为主从同步
数据的“中转站
”
MySQL备份
备份类型
- 根据
服务器状态
,可以分为热备份
、温备份
、冷备份
热备份
:读、写不受影响
温备份
:仅
可以执行读操作
冷备份
:离线备份
;读、写操作均中止
- 从
对象
来分,可以分为物理备份
与逻辑备份
物理备份
:复制数据文件
逻辑备份
:将数据
导出至文本文件
中
- 从
数据收集
来分,可以完全备份
、增量备份
、差异备份
完全备份
:备份全部数据
增量备份
:仅备份
上次完全备份
或增量备份
以后变化的数据
差异备份
:仅备份
上次完全备份
以来变化的数据
逻辑备份优缺点
- 在
备份速度
上两种备份
要取决于不同的存储引擎
物理备份
的还原速度
非常快
。但是物理备份
的最小粒度
只能做到表
逻辑备份
保存的结构
通常都是纯ASCII
的,所以我们可以使用文本处理工具
来处理
逻辑备份
有非常强
的兼容性
,而物理备份
则对版本要求
非常高
逻辑备份
也对保持数据
的安全性
有保证
逻辑备份
的缺点
:逻辑备份
要对RDBMS
产生额外的压力
,而裸备份无压力
逻辑备份
的结果
可能要比源文件更大
。所以很多人都对备份
的内容
进行压缩
逻辑备份
可能会丢失浮点数
的精度信息
备份内容
数据文件
日志文件
(比如事务日志
,二进制日志
)存储过程
,存储函数
,触发器
配置文件
(十分重要
,各个配置文件
都要备份
)- 用于
实现数据库备份
的脚本
,数据库自身清理
的Crontab
等……
备份工具
MySQL
自带的备份工具
–mysqldump
,是mysql
数据库管理系统自带
的逻辑备份
工具,支持完全备份
+增加备份
,速度相对较慢
,适合中小型数据库
,支持所有引擎
,备份策略
:第一次完全备份
,每天
一次增量备份
,每周
再做一次完全备份
,如此一直重复
完全备份语法
[root@mysql ~]# mysqldump -u用户名 --password=密码 -A > 绝对路径\备份文件.sql
备份库
语法
[root@mysql ~]# mysqldump -u用户名 --password=密码 -B 数据库名1 数据库名2 > 绝对路径\备份文件.sql
备份库中表
语法
[root@mysql ~]# mysqldump -u用户名 --password=密码 数据库名 表1 表2 > 绝对路径\备份文件.sql
- 示例1:使用
mysqldump
工具实现全量备份
# 原理:必须先做全量备份,使得数据库有一个基准还原点,在做增量备份,还原差异数据
[root@mysql ~]# mysqldump -uroot --password=123456 -A > back1.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
#警告表示将密码显示在屏幕上不安全,备份的盘符一定要和MySQL安装目录在同一个盘符中,要不然会提示:拒绝访问# 进入mysql中,删库
[root@mysql ~]# mysql -uroot -p
Enter password:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| events |
| huazi |
| information_schema |
| mydb12_journal |
| mydb13_indexdb |
| mydb17_transcation |
| mysql |
| performance_schema |
| sys |
| view |
+--------------------+mysql> drop database events;
mysql> drop database huazi;
......
mysql> drop database view;mysql> show databases;
+--------------------+
| Database | #这3个库,root用户删不了
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+mysql> quit
Bye
[root@mysql ~]# mysql -uroot -p
Enter password:#全库恢复
mysql> source /root/back1.sql#发现没有对sys库做备份
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| events |
| huazi |
| information_schema |
| mydb12_journal |
| mydb13_indexdb |
| mydb17_transcation |
| mysql |
| performance_schema |
| view |
+--------------------+mysql> use view;mysql> show tables;
+----------------+
| Tables_in_view |
+----------------+
| class |
| student |
| viewInfo_stu |
| view_stu |
| view_stu1 |
+----------------+mysql> select * from student;
+----+-------+-----+--------+--------------------+---------+
| id | name | age | gender | address | classid |
+----+-------+-----+--------+--------------------+---------+
| 1 | 文 | 21 | M | 陕西省西安市 | 1003 |
| 2 | rong | 18 | F | 陕西省榆林市 | 1001 |
| 3 | yuan | 19 | M | 陕西省西安市 | 1002 |
| 5 | hua | 10 | M | 山西省 | 1001 |
| 6 | huazi | 9 | M | 山西省 | 1002 |
+----+-------+-----+--------+--------------------+---------+
- 示例2:
局部备份恢复
#对view库做备份
[root@mysql ~]# mysqldump -uroot --password=123456 -B view > back2.sql[root@mysql ~]# mysql -uroot -p
Enter password:#删除view库
mysql> drop database view;#开始恢复
mysql> source /root/back2.sql#发现已经恢复
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| events |
| huazi |
| information_schema |
| mydb12_journal |
| mydb13_indexdb |
| mydb17_transcation |
| mysql |
| performance_schema |
| view |
+--------------------+mysql> use view;mysql> show tables;
+----------------+
| Tables_in_view |
+----------------+
| class |
| student |
| viewInfo_stu |
| view_stu |
| view_stu1 |
+----------------+mysql> select * from student;
+----+-------+-----+--------+--------------------+---------+
| id | name | age | gender | address | classid |
+----+-------+-----+--------+--------------------+---------+
| 1 | 文 | 21 | M | 陕西省西安市 | 1003 |
| 2 | rong | 18 | F | 陕西省榆林市 | 1001 |
| 3 | yuan | 19 | M | 陕西省西安市 | 1002 |
| 5 | hua | 10 | M | 山西省 | 1001 |
| 6 | huazi | 9 | M | 山西省 | 1002 |
+----+-------+-----+--------+--------------------+---------+
文件系统
备份工具cp命令
,冷备份
,支持所有引擎
,复制命令
,只能
实现冷备
,物理备份
。使用归档工具
,cp命令
,对其进行备份时,备份速度快
,还原速度
几乎最快
,但是灵活度很低
,可以跨系统
,但是跨平台
能力很差
lvm
几乎是热备份
,支持所有引擎
,基于快照
(LVM
,ZFS
)的物理备份
,速度非常快
,几乎
是热备
。只影响数据几秒钟
而已。但是创建快照
的过程
本身就影响到了数据库在线
的使用
,所以备份速度
比较快
,恢复速度
比较快
,没有什么弹性空间
,而且LVM
的限制
:不能
对多个逻辑卷
同一时间
进行备份
,所以数据文件
和事务日志
等各种文件
必须放在同一个LVM
上。而ZFS
则非常好
的可以在多逻辑卷之间
备份
其它工具
ibbackup
商业工具MyISAM
是温备份
,InnoDB
是热备份
,备份
和还原
速度都很快
,这个软件
它的服务器授权版本
是5000美元
xtrabackup
开源工具MyISAM
是温备份
,InnoDB
是热备份
,是ibbackup
商业工具
的替代工具
mysqlbackup ORACLE
公司也提供了针对企业
的备份
软件MySQL Enterprise Backup
简称:mysqlbackup
导入sql文件
- 交互式
mysql> source sql文件路径
- 非交互式
[root@mysql ~]# mysql -uroot -p123456 库名 < sql文件
相关文章:
MySQL备份恢复
华子目录 MySQL日志管理为什么需要日志日志作用日志文件查看方法错误日志通用查询日志慢查询日志示例 撤销日志重做日志二进制日志---重要中继日志 MySQL备份备份类型逻辑备份优缺点备份内容备份工具导入sql文件 MySQL日志管理 为什么需要日志 用于排错用来做数据分析了解程序…...
flask内存马的真谛!!!
flask内存马 1.概念 常用的Python框架有Django、Flask, 这两者都可能存在SSTI漏洞. Python 内存马利用Flask框架中SSTI注入来实现, Flask框架中在web应用模板渲染的过程中用到render_template_string进行渲染, 但未对用户传输的代码进行过滤导致用户可以通过注入恶意代码来实…...
【机器学习02--模型评估】
机器学习 --- 模型评估 你需要得到更好的模型,怎么判断模型更好呢?你需要先得到训练集和测试集,怎么划分它们呢?训练完模型之后,在验证集上测试的时候,用什么指标衡量好坏呢?云里雾里࿰…...
【人工智能】深入解析Python中的聚类算法:从K-Means到DBSCAN
解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 聚类是一种无监督学习的核心技术,用于将数据点分组到不同的簇中,使得同一簇内的点相似度最大化,不同簇间的点差异性最大化。K-Means和DBSCAN是两种最常见的聚类算法,分别适用于密度驱动和形状复杂的数据分组需…...
【STM32 Modbus编程】-作为主设备读取线圈和输入
作为主设备读取线圈和输入 文章目录 作为主设备读取线圈和输入1、硬件准备与连接1.1 RS452模块介绍1.2 硬件配置与接线1.3 软件准备2、读取线圈2.1 主设备发送请求2.2 从设备响应请求2.3 主机接收数据3、读取输入4、结果本文将在前面文章的基础上,实现主设备通过ModBus协议对从…...
数据结构(栈Stack)
1.前言: 在计算机科学中,栈(Stack)是一种基础而存在的数据结构,它的核心特性是后进先出(LIFO,Last In, First Out)。想象一下,在现实生活中我们如何处理一堆托盘——我们…...
Maven 中scope 的provided、compile、runtime、test、system 含义
在 Maven 中,<scope> 定义了依赖的可见性和生命周期。不同的 scope 值指示 Maven 在编译、测试和运行时如何处理这些依赖。以下是 Maven 中的几种常用依赖范围及其详细说明: 1. <scope>provided</scope> 含义:provided 范…...
Nginx 负载均衡和反向代理
Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,广泛应用于负载均衡中。它的负载均衡功能支持多种策略,可以有效分配流量到后端服务器,提升系统的可靠性和可用性。 负载均衡 首先,Nginx 负载均衡配置是通过在 Nginx 配置文件…...
【网络安全】数据集合集!
本文将为您介绍经典、热门的数据集,希望对您在选择适合的数据集时有所帮助。 1 SecGPT 更新时间:2024-05-08 访问地址: GitHub 描述: SecGPT的愿景是将人工智能技术引入网络安全领域,以提高网络防御的效率和效果。其使命是推动…...
大数据(一)MaxCompute
一、引言 作者后面会使用MaxCompute,所以在进行学习研究,总会有一些疑问产生,这里讲讲作者的疑问和思路 二、介绍 MaxCompute(原名 ODPS - Open Data Processing Service)是阿里云提供的大数据处理平台,专…...
数据科学与大数据之间的区别
什么是数据科学? 数据科学是一个跨学科领域,它将统计学和计算方法相结合,旨在从数据中提取见解和知识。它涉及收集、处理、分析以及解读数据,以揭示可用于为决策过程提供依据并推动创新的模式、趋势和关系。 数据科学涵盖了广泛…...
IP 地理位置定位技术原理概述
本文深入探讨 IP 地理位置定位技术的原理。介绍了 IP 地址的基本概念及其在网络中的作用,随后阐述了基于数据库查询、基于网络拓扑分析以及基于机器学习算法的三种主要 IP 地理位置定位技术原理中的基于IP数据库查询。 IP 地址基础 IP 地址是互联网协议࿰…...
多进程multiprocessing通信multiprocessing.Queue
multiprocessing.Queue 通常只能在主模块(即 if __name__ "__main__": 块)中创建和使用。这是因为 multiprocessing 模块在 Windows 系统上需要通过 if __name__ "__main__": 块来避免递归导入问题。 from multiprocessing import…...
工业—使用Flink处理Kafka中的数据_ChangeRecord2
使用 Flink 消费 Kafka 中 ChangeRecord 主题的数据,每隔 1 分钟输出最近 3 分钟的预警次数最多的 设备,将结果存入Redis 中, key 值为...
微信小程序4-内容溢出滚动条
感谢阅读,初学小白,有错指正。 一、功能描述 在前一篇文章的隐藏框页面的功能里(《微信小程序3-显标记信息和弹框》),我想添加一个内容溢出的时候,可通过滑动滚动条,实现查看溢出部分的内容&a…...
python源码实例游戏开发小程序办公自动化网络爬虫项目开发源码(250+个项目、26.6GB)
文章目录 源代码下载地址项目介绍预览 项目备注源代码下载地址 源代码下载地址 点击这里下载源码 项目介绍 python源码实例游戏开发小程序办公自动化网络爬虫项目开发源码(250个项目、26.6GB) 预览 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情…...
ProjectSend 身份认证绕过漏洞复现(CVE-2024-11680)
0x01 产品描述: ProjectSend 是一个开源文件共享网络应用程序,旨在促进服务器管理员和客户端之间的安全、私密文件传输。它是一款相当流行的应用程序,被更喜欢自托管解决方案而不是 Google Drive 和 Dropbox 等第三方服务的组织使用。0x02 漏洞描述: ProjectSend r1720 之前…...
算法训练-搜索
搜索 leetcode102. 二叉树的层序遍历 法一:广度优先遍历 leetcode103. 二叉树的锯齿形层序遍历 法一:双端队列 法二:倒序 法三:奇偶逻辑分离 leetcode236. 二叉树的最近公共祖先 法一:递归 leetcode230. 二叉…...
【C++】map和set
个人主页 : zxctscl 如有转载请先通知 文章目录 1. 关联式容器2. 键值对3. set3.1 set的模板参数列表3.2 set的构造3.3 set的迭代器3.4 set的容量3.5 set修改操作3.6 multiset 4. map4.1 map的模板参数说明4.2 map的构造4.3 map的迭代器4.4 map的容量与元素访问4.5 …...
MongoDB安装|注意事项
《疯狂Spring Boot讲义》是2021年电子工业出版社出版的图书,作者是李刚 《疯狂Spring Boot终极讲义》不是一本介绍类似于PathVariable、MatrixVariable、RequestBody、ResponseBody这些基础注解的图书,它是真正讲解Spring Boot的图书。Spring Boot的核心…...
使用playwright自动化测试时,npx playwright test --ui打开图形化界面时报错
使用playwright自动化测试时,npx playwright test --ui打开图形化界面时报错 1、错误描述:2、解决办法3、注意符号的转义 1、错误描述: 在运行playwright的自动化测试项目时,使用npm run test无头模式运行正常,但使用…...
Linux ufw 命令详解
简介 UFW(Uncomplicated Firewall) 简单防火墙是一款基于 iptables 构建的、用于管理防火墙规则的用户友好型工具。它简化了在 Linux 系统上配置防火墙的过程。 安装 在 Ubuntu/Debian 上安装 sudo apt update sudo apt install ufw在 CentOS/Red Hat 上安装 sudo yum ins…...
3248. 矩阵中的蛇
3248. 矩阵中的蛇 题目链接:3248. 矩阵中的蛇 代码如下: class Solution { public:int finalPositionOfSnake(int n, vector<string>& commands){int i 0, j 0;for (string& command : commands){if (command "LEFT") { j…...
图片的懒加载
目录 懒加载的来源 事件监听 IntersectionObserver 懒加载的来源 图片的来加载其实就是延迟加载,我们知道浏览器的可视范围是有限的,现在网页的内容越来越丰富,一般网页的内容都是需要滚动才能完成浏览 如果网页有很多图片,然…...
网络脚本生成器
网络官网地址 网络配置生成工具 终端-接入-汇聚-核心-防火墙-互联网路由器 一 开局配置 华为设备配置命令 system-viewsysname SW-JR-Switchvlan 10 vlan 20 vlan 30 vlan 40 quitinterface Vlan-interface 40 ip address 192.168.40.1 255.255.255.0 quitip route-static 1…...
Kibana server is not ready yet
遇到“Kibana server is not ready yet”错误通常表示Kibana无法连接到Elasticsearch。以下是一些常见原因及其解决方案: 1.常见原因 1.1.Elasticsearch未运行: 确保Elasticsearch服务已启动并正常运行。您可以通过访问 http://localhost:9200 来检查…...
Git 高频命令及其功能、作用与使用场景
在软件开发的世界里,Git 已经成为了版本控制的代名词。无论你是开发小型项目还是参与大型团队协作,Git 都是你不可或缺的得力助手。今天我们来聊聊 Git 中的一些高频命令,了解它们的功能、作用以及常见的使用场景,帮助你在日常开发…...
将word里自带公式编辑器编辑的公式转换成用mathtype编辑的格式
文章目录 将word里自带公式编辑器编辑的公式转换成用mathtype编辑的格式MathType安装问题MathType30天试用延期MathPage.wll文件找不到问题 将word里自带公式编辑器编辑的公式转换成用mathtype编辑的格式 word自带公式编辑器编辑的公式格式: MathType编辑的格式&a…...
【HarmonyOS】Component组件引入报错 does not meet UI component syntax.
【HarmonyOS】Component组件引入报错 一、问题背景 有时会碰到引入组件时,无法import引入组件,导致引入的组件报错。 或者提示does not meet UI component syntax. (不符合UI组件语法。) 如下图所示,在引入组件时&a…...
力扣-图论-1【算法学习day.51】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…...
使用lumerical脚本语言创建定向耦合器并进行数据分析(纯代码实现)
本文使用lumerical脚本语言创建定向耦合器波导、计算定向耦合器的偶数和奇数模式、分析定向耦合器的波长依赖性、分析定向耦合器的间隙依赖性(代码均有注释详解)。 一、绘制定向耦合器波导 1.1 代码实现 # 这段代码主要实现了绘制定向耦合器波导几何结构的功能。通过定义各种…...
Java面试要点50 - List的线程安全实现:CopyOnWriteArrayList
文章目录 一、引入二、实现原理解析2.1 写时复制机制2.2 读写分离策略 三、性能测试分析四、应用场景分析4.1 事件监听器管理4.2 缓存实现 五、最佳实践建议5.1 性能优化技巧5.2 常见陷阱规避 总结 一、引入 在并发编程中,线程安全的集合类扮演着重要角色。CopyOnWriteArrayLi…...
python脚本实现csv中百度经纬度转84经纬度
数据准备 csv文件,带百度经纬度字段:bd09_x,bd09_y 目的 将百度经纬度转换为84经纬度,并在csv文件中添加两个字段:84_x,84_y python脚本 from ChangeCoordinate import ChangeCoordimport pandas as pd import numpy as npcoord = ChangeCoord()def bd09_to_wgs84...
Vue2和Vue3的区别
响应式系统 Vue 2 技术基础:使用 Object.defineProperty 实现响应式。局限性: 无法监听新增属性:如果在创建实例后添加新属性,这些属性不会自动成为响应式的。数组变更检测问题:直接通过索引设置值或长度不会触发更新…...
JavaEE-经典多线程样例
文章目录 单例模式设计模式初步引入为何存在单例模式饿汉式单例模式饿汉式缺陷以及是否线程安全懒汉式单例模式基础懒汉式缺陷以及是否线程安全懒汉式单例模式的改进完整代码(变量volatile) 阻塞队列生产者消费者模型生产者消费者模型的案例以及优点请求与响应案例解耦合削峰填…...
Android显示系统(04)- OpenGL ES - Shader绘制三角形
一、前言: OpenGL 1.0采用固定管线,OpenGL 2.0以上版本重要的改变就是采用了可编程管线,Shader 编程是指使用着色器(Shader)编写代码来控制图形渲染管线中特定阶段的处理过程。在图形渲染中,着色器是在 GP…...
PMP–一、二、三模、冲刺–分类–10.沟通管理
文章目录 技巧十、沟通管理 一模10.沟通管理--1.规划沟通管理--文化意识--军事背景和非军事背景人员有文化差异5、 [单选] 项目团队由前军事和非军事小组成员组成。没有军事背景的团队成员认为前军事团队成员在他们的项目方法中过于结构化和僵化。前军事成员认为其他团队成员更…...
flutter windows 使用c++、dll等实践记录
在flutter的windows平台引入dll文件 https://juejin.cn/post/7223676609794015287 google官方说法(感觉不太实用) https://groups.google.com/a/dartlang.org/g/misc/c/fyh2W38AEVo Using a C DLL in Flutter Windows desktop app(未尝试&…...
JUnit介绍:单元测试
1、什么是单元测试 单元测试是针对最小的功能单元编写测试代码(Java 程序最小的功能单元是方法)单元测试就是针对单个Java方法的测试。 2、为什么要使用单元测试 确保单个方法运行正常; 如果修改了代码,只需要确保其对应的单元…...
电脑插入耳机和音响,只显示一个播放设备
1. 控制面板-硬件和声音-Realtek高清音频-扬声器-设备高级设置-播放设备里选择使用前部和后部输出设备同时播放两种不同的音频流 在声音设置中就可以看到耳机播放选项...
【每日刷题】Day162
【每日刷题】Day162 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 3302. 字典序最小的合法序列 - 力扣(LeetCode) 2. 44. 通配符匹配 - 力扣&…...
使用 EasyExcel 实现高效的 Excel 读写操作
在日常开发中,Excel 文件的读写操作是一个常见的需求。EasyExcel 是阿里巴巴开源的一个高性能、易用的 Excel 读写库,可以大幅提高处理 Excel 文件的效率。它通过事件驱动模型优化了大数据量 Excel 的读写性能,非常适合处理大文件或高并发场景…...
千益畅行,旅游卡有些什么优势?
千益畅行共享旅游卡是一种创新的旅游服务模式,旨在通过整合各类旅游资源,为用户提供一站式的旅游解决方案。这张旅游卡支持2至6人同行,涵盖了接机、酒店、用餐、大巴、导游、景区门票等服务,用户只需自行承担往返交通费用即可享受…...
Hive分区裁剪(Partition Pruning)详解
Hive分区裁剪是一种优化技术,旨在查询时只读取与条件匹配的分区,从而减少不必要的数据扫描。这种机制依赖于分区表的设计和查询优化器的工作,特别是在处理大规模数据时,分区裁剪可以显著提高查询性能。 1. 什么是分区裁剪…...
云原生数据库 PolarDB
PolarDB 是阿里云推出的一款云原生数据库,旨在为企业提供高性能、高可靠性的数据库解决方案。它基于云计算环境设计,特别适用于云上的大规模数据处理和存储需求。PolarDB 是一种兼具关系型数据库(RDS)和分布式数据库特性的新型数据…...
数据库原理-期末基础知识
1、数据库管理系统有哪些功能? 数据定义功能、数据操作功能、数据库的运行管理、数据库的建立与维护。 2、数据库设计分哪几个阶段? 需求分析->概念设计->逻辑设计->物理设计->数据库实施->数据的运营与维护 3、简述三级封锁协议的内…...
Java版-速通数据结构-树基础知识
现在面试问mysql,红黑树好像都是必备问题了。动不动就让手写红黑树或者简单介绍下红黑树。然而,我们如果直接去看红黑树,可能会一下子蒙了。在看红黑树之前,需要先了解下树的基础知识,从简单到复杂,看看红黑树是在什么…...
量化交易系统开发-实时行情自动化交易-8.4.MT4/MT5平台
19年创业做过一年的量化交易但没有成功,作为交易系统的开发人员积累了一些经验,最近想重新研究交易系统,一边整理一边写出来一些思考供大家参考,也希望跟做量化的朋友有更多的交流和合作。 接下来会对于MT4/MT5平台介绍。 MetaT…...
Git 的基本概念和使用方式
Git是一个分布式版本控制系统,用于跟踪文件内容的变化和协作开发。 Git的主要概念包括: 仓库(Repository):存储代码和历史记录的地方。可以是本地仓库(Local Repository)或远程仓库(…...
Conda-Pack打包:高效管理Python环境
在Python开发中,环境管理是一个不可忽视的重要环节。Conda是一个流行的包管理器和环境管理器,它允许用户创建隔离的环境,以避免不同项目之间的依赖冲突。Conda-pack是一个工具,可以帮助我们将一个conda环境打包成一个可移植文件&a…...