From 073eaa6ca0f0f5f6b0ee97a6c43220835aca2f32 Mon Sep 17 00:00:00 2001 From: AaronXu <718827633@qq.com> Date: Tue, 3 Feb 2026 19:57:24 +0800 Subject: [PATCH] =?UTF-8?q?02-03-=E5=91=A8=E4=BA=8C=5F19-57-24?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 03.数据库/01.Mysql.md | 43 ++++++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/03.数据库/01.Mysql.md b/03.数据库/01.Mysql.md index 466c527..581d1cf 100644 --- a/03.数据库/01.Mysql.md +++ b/03.数据库/01.Mysql.md @@ -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