学习过程中问题处理

1.如果只用redolog或者只用binlog可行吗
不可行

redo log称为重做日志,用于记录事务的变化,记录的是数据被修改之后的值。InnoDB采用redo log来保证事务更新的一致性和持久性。
在MySQL中,如果你要更新一条语句,需要带更新条件,比如update T set name = ‘god-jiang’ where id=6,一般都是先查询到id=6的语句,然后再进行更新操作。具体操作:当有一条记录需要更新的时候,InnoDB引擎会先把记录写到redo log中,并更新内存,这个时候更新就算完成了。同时,InnoDB引擎会在适当的时候(系统空闲时),将这个操作记录更新到磁盘中,这个更新往往是在系统比较空闲的时候。

binlog主要用来进行POINT-IN-TIME(PIT)的恢复及主从复制环境的建立。从表面上看它和redo log非常相似,都是记录了对于数据库操作的日志,但是从本质上看,还是有着非常大的不同。

redo log和binlog的区别:
首先,redo log是在InnoDB存储引擎层产生,而binlog是在数据库上层产生的,并且binlog不仅仅针对InnoDB存储引擎,MySQL数据库中任何存储引擎都会产生binlog
其次,两种日志的内容记录不同。binlog是一种逻辑日志,其记录的是对应的SQL语句,而redo log是一种物理日志,其对应的是对于每个页的修改
最后,两种日志写入磁盘的时间点不同,binlog只在事务提交完成后进行一次写入,而redo log在事务进行中不断的写入,表现为不是随事务提交的顺序写入
binlog一般作为恢复数据使用,主从复制搭建,而redo log通常作为MySQL异常宕机或者介质故障后的数据恢复使用

redo log可以保存crash-safe能力,可以保证MySQL异常重启数据不丢失
binlog可以记录对应的SQL语句,也可以保证MySQL异常重启数据不丢失

2.为什么 redo log 具有 crash-safe 的能力,是 binlog 无法替代的
redo log :一个固定大小,“循环写”的日志文件,记录的是物理日志——“在某个数据页上做了某个修改”。
binlog :一个无限大小,“追加写”的日志文件,记录的是逻辑日志——“给 ID=2 这一行的 c 字段加1”。

redo log 和 binlog 有一个很大的区别就是,一个是循环写,一个是追加写。也就是说 redo log 只会记录未刷盘的日志,已经刷入磁盘的数据都会从 redo log 这个有限大小的日志文件里删除。binlog 是追加日志,保存的是全量的日志。

当数据库 crash 后,想要恢复未刷盘但已经写入 redo log 和 binlog 的数据到内存时,binlog 是无法恢复的。虽然 binlog 拥有全量的日志,但没有一个标志让 innoDB 判断哪些数据已经刷盘,哪些数据还没有。

3.xtrabackup实现mysql全量备份和增量备份
全量备份

xtrabackup --user=bkpuser --password=123456 --backup --target-dir=/data/backups/mysql
 
# 会看到输出
200603 09:55:37 Executing UNLOCK TABLES
200603 09:55:37 All tables unlocked
200603 09:55:37 [00] Copying ib_buffer_pool to /data/backups/mysql/ib_buffer_pool
200603 09:55:37 [00]        ...done
200603 09:55:37 Backup created in directory '/data/backups/mysql/'
200603 09:55:37 [00] Writing /data/backups/mysql/backup-my.cnf
200603 09:55:37 [00]        ...done
200603 09:55:37 [00] Writing /data/backups/mysql/xtrabackup_info
200603 09:55:37 [00]        ...done
xtrabackup: Transaction log of lsn (837940114) to (837940123) was copied.
200603 09:55:37 completed OK!

准备备份

xtrabackup --prepare --target-dir=/data/backups/mysql

复制备份

mv /var/lib/mysql /var/lib/mysql_bak
mkdir /var/lib/mysql
 
xtrabackup --copy-back --target-dir=/data/backups/mysql  # 这样会保留原始备份 他会将当时读到my.cnf的datadir设置为恢复路径
 
200603 10:47:42 [01]        ...done
200603 10:47:42 [01] Copying ./performance_schema/mutex_instances.frm to /var/lib/mysql/performance_schema/mutex_instances.frm
200603 10:47:42 [01]        ...done
200603 10:47:42 [01] Copying ./performance_schema/events_transactions_history_long.frm to /var/lib/mysql/performance_schema/events_transactions_history_long.frm
200603 10:47:42 [01]        ...done
200603 10:47:42 [01] Copying ./xtrabackup_info to /var/lib/mysql/xtrabackup_info
200603 10:47:42 [01]        ...done
200603 10:47:42 [01] Copying ./ibtmp1 to /var/lib/mysql/ibtmp1
200603 10:47:42 [01]        ...done
200603 10:47:42 completed OK!

增量备份
创建备份:查看备份类型 确认是增量备份了

xtrabackup --user=bkpuser --password=123456 --backup --target-dir=/data/backups/base
 
# 基于全量备份进行增量
xtrabackup --user=bkpuser --password=123456 --backup --target-dir=/data/backups/inc1 --incrementa

查看备份类型 确认是增量备份了

root@longing:/data/backups/inc1# cat xtrabackup_checkpoints 
backup_type = incremental
from_lsn = 837943393
to_lsn = 837943393
last_lsn = 837943402
compact = 0
recover_binlog_info = 0
flushed_lsn = 837943402

对第一个增加继续创建增量 创建增量之前先创建几条数据

xtrabackup --user=bkpuser --password=123456 --backup --target-dir=/data/backups/inc2 --incremental-basedir=/data/backups/inc1

准备恢复

xtrabackup --user=bkpuser --password=123456 --prepare --apply-log-only --target-dir=/data/backups/base
 
xtrabackup --user=bkpuser --password=123456 --prepare --apply-log-only --target-dir=/data/backups/base --incremental-dir=/data/backups/inc1
 
xtrabackup --user=bkpuser --password=123456 --prepare --target-dir=/data/backups/base --incremental-dir=/data/backups/inc2

恢复

xtrabackup --copy-back --target-dir=/data/backups/base

NMAP工具

NMAP工具用来探测计算机网络上的主机和服务的一种 安全扫描器。为了绘制网络拓扑图,Nmap的发送特制的数据包到目标主机,然后对返回数据包进行分析。Nmap是一款枚举和测试网络的强大工具

用途/功能:
主机探测:探测网络上的主机,例如列出响应TCP和ICMP请求、icmp请求、开放特别端口的主机
端口扫描:探测目标主机所开放的端口
版本检测:探测目标主机的网络服务,判断其服务名称及版本号
系统检测:探测目标主机的操作系统及网络设备的硬件特性
支持探测脚本的编写:使用Nmap的脚本引擎(NSE)和Lua编程语言

1、扫描方式选项

-sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。  
  
  -sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况。  
  
  -sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。  
  
  --scanflags <flags>: 定制TCP包的flags。  
  
  -sI <zombiehost[:probeport]>: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)  
  
  -sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。  
  
  -sO: 使用IP protocol 扫描确定目标机支持的协议类型。  
  
  -b <FTP relay host>: 使用FTP bounce scan扫描方式  

2、 端口参数与扫描顺序

[plain] view plain copy
-p <port ranges>: 扫描指定的端口  
  
实例: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9(其中T代表TCP协议、U代表UDP协议、S代表SCTP协议)  
  
-F: Fast mode – 快速模式,仅扫描TOP 100的端口  
  
-r: 不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方防火墙检测到)。  
  
--top-ports <number>:扫描开放概率最高的number个端口(nmap的作者曾经做过大规模地互联网扫描,以此统计出网络上各种端口可能开放的概率。以此排列出最有可能开放端口的列表,具体可以参见文件:nmap-services。默认情况下,nmap会扫描最有可能的1000个TCP端口)  
  
--port-ratio <ratio>: 扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数,让概率大于--port-ratio的端口才被扫描。显然参数必须在在0到1之间,具体范围概率情况可以查看nmap-services文件。  

3、 版本侦测的用法

版本侦测方面的命令行选项比较简单。
[plain] view plain copy
-sV: 指定让Nmap进行版本侦测  
  
--version-intensity <level>: 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。  
  
--version-light: 指定使用轻量侦测方式 (intensity 2)  
  
--version-all: 尝试使用所有的probes进行侦测 (intensity 9)  
  
--version-trace: 显示出详细的版本侦测过程信息。  

具体操作演示:
1、用Nmap扫描特定IP地址
在这里插入图片描述
2、用-vv对结果进行详细输出
在这里插入图片描述
3、自行设置端口范围进行扫描
在这里插入图片描述
4、指定端口号进行扫描
在这里插入图片描述
5、对目标进行Ping扫描
格式:namp -sP
在这里插入图片描述
6、路由跟踪
nmap -traceroute
在这里插入图片描述
7、扫描一个段的主机在线状况
nmap -sP
在这里插入图片描述
8、操作系统探测
nmap -O
在这里插入图片描述
9、万能开关扫描
nmap -A
在这里插入图片描述
10、其他扫描方式
SYN扫描:利用基本的SYN扫描方式测试其端口开放状态
namp -sS -T4

FIN扫描:利用FIN扫描方式探测防火墙状态。FIN扫描方式用于识别端口是否关闭,收到RST回复说明该端口关闭,否则说明是open或filtered状态
namp -sF -T4

ACK扫描:利用ACK扫描判断端口是否被过滤。针对ACK探测包,为被过滤的端口(无论打开或关闭)会回复RST包
namp -sA -T4

猜你喜欢

转载自blog.csdn.net/weixin_52776876/article/details/125832135
今日推荐