02-03-周二_19-57-24

This commit is contained in:
AaronXu
2026-02-03 19:57:24 +08:00
parent 8d1b6d1028
commit 073eaa6ca0

View File

@@ -3391,9 +3391,9 @@ xtrabackup --version
- 全量备份
```shell
[root@db01 data]# innobackupex --user=root --password=123 /backup
[root@db01 data]# innobackupex --user=root --password=123456 -S /tmp/mysql.sock /backup
#全备
[root@db01 ~]# innobackupex --user=root --password=123 --no-timestamp /backup/full
[root@db01 ~]# innobackupex --user=root --password=123456 --no-timestamp -S /tmp/mysql.sock /backup/full
#避免时间戳,自定义路径名
[root@db01 backup]# ll /backup/full
#查看备份路径中的内容
@@ -3409,7 +3409,7 @@ xtrabackup --version
#备份的redo文件
* 准备备份
* 将redo进行重做已提交的写到数据文件未提交的使用undo回滚模拟CSR的过程
[root@db01 full]# innobackupex --user=root --password=123 --apply-log /backup/full
[root@db01 full]# innobackupex --user=root --password=123456 --apply-log -S /tmp/mysql.sock /backup/full
```
- 恢复备份
@@ -3437,7 +3437,7 @@ xtrabackup --version
- 所有增量必须要按顺序合并到全备当中
```shell
[root@mysql-db01 ~]# innobackupex --user=root --password=123 --no-timestamp /backup/full
[root@mysql-db01 ~]# innobackupex --user=root --password=123456 --no-timestamp -S /tmp/mysql.sock /backup/full
#不使用之前的全备,执行一次全备
```
@@ -3455,7 +3455,7 @@ mysql> select * from inc1_tab;
- 第一次增量备份
```shell
[root@db01 ~]# innobackupex --user=root --password=123 --no-timestamp --incremental --incremental-basedir=/backup/full/ /backup/inc1
[root@db01 ~]# innobackupex --user=root --password=123456 --no-timestamp --incremental -S /tmp/mysql.sock --incremental-basedir=/backup/full/ /backup/inc1
参数说明:
--incremental开启增量备份功能
--incremental-basedir上一次备份的路径
@@ -3474,7 +3474,7 @@ mysql> commit;
- 第二次增量备份
```shell
[root@db01 ~]# innobackupex --user=root --password=123 --no-timestamp --incremental --incremental-basedir=/backup/inc1/ /backup/inc2
[root@db01 ~]# innobackupex --user=root --password=123456 --no-timestamp --incremental -S /tmp/mysql.sock --incremental-basedir=/backup/inc1/ /backup/inc2
```
- 增量恢复
@@ -3510,10 +3510,10 @@ mysql> commit;
```shell
[root@db01 mysql]# innobackupex --apply-log /backup/full/
copy-back
[root@db01 ~]# innobackupex --copy-back /backup/full/
[root@db01 ~]# chown -R mysql.mysql /application/mysql/data/
[root@db01 ~]# /etc/init.d/mysqld start
[root@db01 mysql]# systemctl stop mysqld
[root@db01 mysql]# innobackupex --copy-back /backup/full/
[root@db01 mysql]# chown -R mysql.mysql /application/mysql/data/
[root@db01 mysql]# systemctl start mysqld
```
# 16. MySQL的主从复制
@@ -3590,6 +3590,7 @@ log_bin=mysql-bin
[root@db01 ~]# mysql -uroot -p123456
#登录数据库
mysql> grant replication slave on *.* to slave@'192.168.88.%' identified by '123456';
mysql> flush privileges;
#创建slave用户
```
@@ -3686,10 +3687,13 @@ slave-skip-errors=1032,1062,1007
### 16.3.3 处理方法三
```sql
set global read_only=1;
#在命令行临时设置,在从库设置
-- 临时开启(从库)
SET GLOBAL read_only=1;
SET GLOBAL super_read_only=1; -- MySQL5.7+禁止super权限用户写包括root
-- 永久开启修改从库my.cnf重启生效
[mysqld]
read_only=1
#在配置文件中永久生效[mysqld]
super_read_only=1 -- 关键:彻底禁止所有用户写从库
```
## 16.4 延时从库
@@ -3891,7 +3895,16 @@ mysql> show global status like 'rpl_semi%';
注:不难发现,在查询半同步状态是,开启半同步,查询会有延迟时间,关闭之后则没有
```
![img](01.Mysql/mysql_goal-1739583976576114.jpg)
- 某公司程序员不小心删除了核心业务数据已知公司没有全量备份但是有延时从库1个小时)。现在要求恢复数据库
思路:
1. 停止业务数据库
2. 停止延时从库的slave
3. 检查业务数据库bin_log找到slave上最新的pos和删除前的pos
4. 导入从库,检查数据是否完整
5. 恢复业务数据
- 模拟故障:配置延时从库,然后主库随便增删改,然后删除表,尝试恢复
## 16.6 过滤复制
@@ -3915,7 +3928,7 @@ mysql> show global status like 'rpl_semi%';
[root@db01 data]# vim /data/3307/my.cnf
replicate-do-db=world
#在[mysqld]标签下添加
mysqladmin -S /data/3307/mysql.sock shutdown
mysqladmin -S /data/3307/mysql.sock -p123456 shutdown
#关闭MySQL
mysqld_safe --defaults-file=/data/3307/my.cnf &
#启动MySQL