mysql recovery 1 (允许停机,不许丢数据)

1.备份策略:

1)按天备份:

优点:恢复时间短,维护成本低

缺点:占用空间大,占用资源多(比如说老是要锁表)

2)按周备份:

优点:占用空间小,资源占用低

缺点:维护成本大

2.增量恢复的场景

1)数据库迁移,或者跨机房灾备。

2)增加从库。

3)认为操作失误,从库也没办法。

3.案例(可以停机,但是不能丢数据)

1)增量,全备开启

[root@db ~]# grep log-bin /etc/my.cnf 

log-bin=mysql-bin

mysqldump -uroot -p111111 -A -B --single-transaction -F --master-data=2 --events|gzip >/backup/all.sql.gz

2)模拟误操作

mysql> drop database oldboy;

3)模拟误操作后的用户写入

insert into oldboy_utf8.test(name) values('dirty1'),('dirty2');

mysqladmin -uroot -p111111 flush-logs

insert into oldboy_utf8.test(name) values('dirty1'),('dirty2');

...

4)发现问题,根据问题时间段,定位出问题的binlog点。

[root@db ~]# ll /application/mysql/data/ |grep mysql-bin

-rw-rw----. 1 mysql mysql      544 11月  8 16:44 mysql-bin.000001

-rw-rw----. 1 mysql mysql      486 11月 11 21:32 mysql-bin.000035

-rw-rw----. 1 mysql mysql      126 11月 12 15:13 mysql-bin.000036

-rw-rw----. 1 mysql mysql      150 11月 12 16:29 mysql-bin.000037

-rw-rw----. 1 mysql mysql     2516 11月 12 16:53 mysql-bin.000038

-rw-rw----. 1 mysql mysql     1422 11月 12 16:57 mysql-bin.000039

-rw-rw----. 1 mysql mysql      998 11月 12 16:58 mysql-bin.000040

-rw-rw----. 1 mysql mysql      107 11月 12 16:58 mysql-bin.000041

-rw-rw----. 1 mysql mysql      779 11月 12 16:58 mysql-bin.index

mysqlbinlog --no-defaults /application/mysql/data/mysql-bin.000038|grep drop

drop database oldboy

5)准备全备和增量。



#准备全备

cd /backup

[root@db ~]# gunzip /backup/all.sql.gz 

[root@db ~]# head -50 /backup/all.sql|grep -i "CHANGE MASTER"

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000038', MASTER_LOG_POS=107;


#对外停止写,刷新binlog(不停的话要丢数据42,43等log)

配置防火墙,拒绝客户端连接(略)。

mysql> set global read_only = ON;

Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%read_only%';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| read_only     | ON    |

+---------------+-------+

1 row in set (0.00 sec)

mysqladmin -uroot -p111111 flush-logs


#准备增量

mysqlbinlog --no-defaults /application/mysql/data/mysql-bin.000038 --start-position=107 > /backup/bin.sql

mysqlbinlog --no-defaults /application/mysql/data/mysql-bin.000039 >> /backup/bin.sql

mysqlbinlog --no-defaults /application/mysql/data/mysql-bin.000040 >> /backup/bin.sql

mysqlbinlog --no-defaults /application/mysql/data/mysql-bin.000041 >> /backup/bin.sql

vim /backup/bin.sql 删除错误语句

6)开始恢复数据

mysql -uroot -p111111</backup/all.sql 

mysql -uroot -p111111</backup/bin.sql


恢复对外写:

mysql> set global read_only = OFF;

Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%read_only%';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| read_only     | OFF   |

+---------------+-------+

1 row in set (0.00 sec)


你可能感兴趣的:(mysql,1,recovery)