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日志管理 为什么需要日志 用于排错用来做数据分析了解程序…...

鲲鹏麒麟安装离线版MySQL5.7
最近有项目需求,需要在鲲鹏ARM服务器上安装数据库MySQL5.7,服务器为鲲鹏920,操作系统Kylin Linux Advanced Server release V10 (Tercel) 安装包 下载地址:https://cloud.189.cn/t/JRVnmeEvMRZ3(访问码:t…...

【不稳定的BUG】__scrt_is_managed_app()中断
【不稳定的BUG】__scrt_is_managed_app函数中断 参考问题详细的情况临时解决方案 参考 发现出现同样问题的文章: 代码运行完所有功能,仍然会中断 问题详细的情况 if (!__scrt_is_managed_app())exit(main_result);这里触发了一个断点很奇怪,这中断就发生了一次,代…...

MyBatis 详解
MyBatis 是一个优秀的 持久层框架,它支持定制化 SQL、存储过程以及高级映射,能够很好地降低 Java 应用程序对数据库操作的复杂性。以下是对 MyBatis 的详细解析: 1. MyBatis 简介 MyBatis 是 Apache 的一款开源框架,其核心特性是…...

Cursor+Devbox AI开发快速入门
1. 前言 今天无意间了解到 Cursor 和 Devbox 两大开发神器,初步尝试以后发现确实能够大幅度提升开发效率,特此想要整理成博客以供大家快速入门. 简单理解 Cursor 就是一款结合AI大模型的代码编辑器,你可以将自己的思路告诉AI,剩下的目录结构的搭建以及项目代码的实现均由AI帮…...

编写按层次顺序(同一层自左至右)遍历二叉树的算法。或:按层次输出二叉树中所有结点;
解:思路:既然要求从上到下,从左到右,则利用队列存放各子树结点的指针是个好办法。 这是一个循环算法,用while语句不断循环,直到队空之后自然退出该函数。 技巧之处:当根结点入队后,会…...

docker 安装mysql8.0.29
docker 安装mysql8.0.29 1、拉取镜像 docker pull mysql:8.0.292、启动容器 docker run -p 3306:3306 --name mysql8.0.29 -e MYSQL_ROOT_PASSWORDroot -d mysql:8.0.29-p 将本地主机的端口映射到docker容器端口(因为本机的3306端口已被其它版本占用,所以使用330…...

vue深入理解输入框字符限制的优化设计
文章目录 深入理解输入框字符限制的优化设计背景与挑战输入框限制的重要性常见需求 多种实现方法解析方法一:基于实时过滤的字符限制方法二:借助正则验证方法三:提交时二次校验 性能优化无障碍设计延伸场景与最佳实践1. 多语言国际化支持2. 动…...

完整指南:在Ubuntu 20.04 ROS 1环境中配置和使用Orbbec SDK
完整指南:在Ubuntu 20.04 ROS 1环境中配置和使用Orbbec SDK 要在Ubuntu 20.04系统中使用ROS 1环境配置和使用Orbbec SDK,可以遵循以下详细且系统化的步骤。这些步骤将引导您从下载必要的工具和SDK到学习如何使用这些资源,确保您能有效地利用…...

【Leetcode Top 100】138. 随机链表的复制
问题背景 给你一个长度为 n n n 的链表,每个节点包含一个额外增加的随机指针 r a n d o m random random,该指针可以指向链表中的任何节点或空节。 构造这个链表的 深拷贝。 深拷贝应该正好由 n n n 个 全新 节点组成,其中每个新节点的值…...

2024年12月HarmonyOS应用开发者基础认证全新题库
注意事项:切记在考试之外的设备上打开题库进行搜索,防止切屏三次考试自动结束,题目是乱序,每次考试,选项的顺序都不同 更新时间:2024年12月3日 这是基础认证题库,不是高级认证题库注意看清楚标…...

Flink问题总结
目录 1、Flink 的四大特征(基石) 2、Flink 中都有哪些 Source,哪些 Sink,哪些算子(方法) 3、什么是侧道输出流,有什么用途 4、Flink 中两个流如何合并为一个流 5、Flink 中两个流如何 join 6、Flink 中都有哪些 window,什么是滑动,滚动窗口 7、flink 中都有哪些…...

Day17 C++ vector 容器
2024.12.3 C vector 容器 C vector 容器 类比成数组 C 中的 vector 是一种序列容器,它允许你在运行时动态地插入和删除元素。 vector 是基于数组的数据结构,但它可以自动管理内存,这意味着你不需要手动分配和释放内存。 与 C 数组相比&a…...

常见Linux命令(详解)
文章目录 常见Linux命令文件目录类命令pwd 打印当前目录的绝对路径ls 列出目录内容cd 切换路径mkdir 建立目录rmdir 删除目录touch 创建空文件cp 复制文件或目录rm 移除文件或者目录mv 移动文件与目录或重命名cat 查看文件内容more 文件分屏查看器less 分屏显示文件内容head 显…...

AgGrid 组件封装设计笔记:自定义 icon 以及每个 icon 的点击事件处理
文章目录 问题目前解决效果 v1思路 目前解决效果 v0思路 代码V1 问题 自己封装的 AgGrid 如何自定义传递 icon ,以及点击事件的处理? 目前解决效果 v1 思路 目前解决效果 v0 思路 一张图片说明一下 代码 V1 父组件使用 <template><MyPageL…...

vb.net常用命名空间
.NET的命名空间分为两个主要部分。一个是与微软程序语言相关的microsoft,一个是与操作系统相关的system,其中system主要分为应用程序类的命名空间和WEB程序类的命名空间两部分。 下面是常见的命名空间: Microsoft.VisualBasic 包含VB.NET的RUNTIME和编译运行VB程序…...

Netty面试内容整理-Netty 工作原理
Netty 的工作原理主要基于异步、事件驱动的 I/O 模型,结合 Reactor 多线程模式和高效内存管理来实现高并发网络通信。以下是 Netty 的工作原理详细解析: Reactor 线程模型 Netty 基于 Reactor 模式 来处理并发连接和 I/O 操作,主要分为 单线程模型、多线程模型 和 主从多线程…...

CMD 介绍
CMD 介绍 CMD 是 Windows 操作系统中的命令提示符(Command Prompt)程序,它是一种命令行工具,可以让用户通过键入命令来与计算机进行交互。 DOS: disk operating system, 磁盘操作系统. 是利用命令行来操作计算机. DOS 不是 CMD…...

【项目日记】仿mudou的高并发服务器 --- 实现HTTP服务器
对于生命,你不妨大胆一点, 因为我们始终要失去它。 --- 尼采 --- ✨✨✨项目地址在这里 ✨✨✨ ✨✨✨https://gitee.com/penggli_2_0/TcpServer✨✨✨ 仿mudou的高并发服务器 1 前言2 Util工具类3 HTTP协议3.1 HTTP请求3.2 HTTP应答 4 上下文解析模块…...

Android 使用TabLayout + ViewPager2 实现标签页的视图切换
学习笔记 步骤概览 添加依赖创建布局文件创建 ViewPager2 适配器设置 TabLayout 和 ViewPager2 的联动自定义每个页面内容(Fragment)自定义 TabLayout 样式(可选) 1. 添加依赖 首先,你需要在 build.gradle 文件中添…...

vue 项目实现阻止浏览器记住密码
在各个浏览器中,登录输入密码一般都会弹出是否记住密码的功能,如果记住之后,会在各个密码框自动填充记住的密码,这无疑是一种不安全的操作,所以要实现禁用阻止浏览器记住密码的行为 查阅资料,也得到很多…...

7. 一分钟读懂“单例模式”
7.1 模式介绍 单例模式就像公司里的 打印机队列管理系统,无论有多少员工提交打印任务,大家的请求都汇总到唯一的打印管理中心,按顺序排队输出。这个中心必须全局唯一,避免多个队列出现资源冲突,保证打印任务井然有序。…...

28个炫酷的纯CSS特效动画示例(含源代码)
CSS是网页的三驾马车之一,是对页面布局的总管家,2024年了,这里列出28个超级炫酷的纯CSS动画示例,让您的网站更加炫目多彩。 文章目录 1. 涌动的弹簧效果2. 超逼真的3D篮球弹跳,含挤压弹起模态3. 鼠标放div上࿰…...

百问FB网络编程 - 主要函数介绍
6.3 网络编程主要函数介绍 下面全部函数的头文件都是 #include <sys/types.h> #include <sys/socket.h>6.3.1 socket函数 int socket(int domain, int type,int protocol);此函数用于创建一个套接字。 domain是网络程序所在的主机采用的通讯协族(AF_UNIX和AF_I…...

Unity类银河战士恶魔城学习总结(P155 More example on audio effects更多的音效细节)
【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ 本章节添加了更多的音效细节 音频管理器 AudioManager.cs 使得多个音效可以同时播放,注释掉以下代码 public void PlaySFX(in…...

【题解】—— LeetCode一周小结48
🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 【题解】—— 每日一道题目栏 上接:【题解】—— LeetCode一周小结47 25.网络延迟时间 题目链接:743. 网络延迟时间 …...

040集——CAD中放烟花(CAD—C#二次开发入门)
效果如下: 单一颜色的烟花: 渐变色的火花: namespace AcTools {public class HH{public static TransientManager tm TransientManager.CurrentTransientManager;public static Random rand new Random();public static Vector3D G new V…...

一文理解多模态大语言模型——下
作者:Sebastian Raschka 博士, 翻译:张晶,Linux Fundation APAC Open Source Evangelist 编者按:本文并不是逐字逐句翻译,而是以更有利于中文读者理解的目标,做了删减、重构和意译,…...

ROS2创建 base 包用于其他模块的参数配置和头文件依赖
Demo 背景 ROS2项目开发中存在以下需求:有多个包需要读取一些共同的配置项(以txt或者yaml形式存在),且依赖于一些公用的utils工具代码(C)。Solution: 创建一个 base_config 包来“存放” 配置文件和公用的头文件。gitee address: Gitee/CDal…...

自然语言处理期末试题汇总
建议自己做,写完再来对答案。答案可能存在极小部分错误,不保证一定正确。 一、选择题 1-10、C A D B D B C D A A 11-20、A A A C A B D B B A 21-30、B C C D D A C A C B 31-40、B B B C D A B B A A 41-50、B D B C A B B B B C 51-60、A D D …...