mysql存储过程及日志_mysql存储过程以及日志和数据恢复

本文详细介绍了MySQL存储过程的创建、执行和删除,以及如何开启和管理bin-log日志。通过实例展示了如何利用bin-log进行数据恢复,包括误删除数据库后的恢复步骤,强调了定期备份和日志管理的重要性。

MySQL存储过程

Mysql储存过程是一组为了完成特定功能的SQL语句集,经过编译之后存储在数据库中,

当需要使用该组SQL语句时用户只需要通过指定储存过程的名字并给定参数就可以调用执行它了

简而言之就是一组已经写好的命令,需要使用的时候拿出来用就可以了。

\d //(修改语句结束符号)

create procedure p1()

begin

set @i=0;

while @i<10 do

insert into user values(null,concat('user',@i),@i,concat('user',@i,'@qq.com'),1,99);

set @i=@i+1;

end while;

end;

//

执行储存:call p1 查看存储具体信息:show create procedure p1\G 删除触发器: drop procedure p1;

这个存储过程,一定要有begin 和end,因为if后面有两条语句要处理,相当于c#里的花括号一样。

开启bin-log日志

1,使用vim或其它编辑器 打开 mysql 配置文件

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

2,找到 以下两个配置项

server-id = 123456

log_bin = /var/log/mysql/mysql-bin

3,把注释打开 改完后 保存推出

4,重启mysql

sudo service mysql restart

5,查看bin-log日志:

mysql>show binary logs;

6,ls 查看是否存在mysql日志文件

cd /var/lib/mysql

mysql>reset master;

7,清空所有的bin-log日志

8,-- 查看binlog日志文件

mysqlbinlog mysql-bin.000001

备份数据时 刷新日志:

mysqldump -uroot -pwei test -l -F '/tmp/test.sql'

其中:-F即flush logs,可以重新生成新的日志文件,当然包括log-bin日志

数据库的恢复

前提是开启了bin-log日志,并定期备份

思路:

1,通过定期备份的文件恢复大量数据

2,通过日志恢复备份后的数据操作

-- 刷新 日志

mysql> reset master;

Query OK, 0 rows affected (0.39 sec)

-- 查询最新日志

show binary logs;

-- 创建数据库

mysql> create database ops;

Query OK, 1 row affected (0.28 sec)

-- 选择并打开库

mysql> use ops;

Database changed

-- 创建表

create table user(

id int not null auto_increment,

name char(20) not null,

age int not null,

primary key(id)

)engine=InnoDB;

-- 添加数据

insert into user values(1,"wangbo","24"),(2,"guohui","22"),(3,"zhangheng","27");

-- 查询

mysql> select * from user;

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

| id | name | age |

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

| 1 | wangbo | 24 |

| 2 | guohui | 22 |

| 3 | zhangheng | 27 |

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

3 rows in set (0.00 sec)

-- 现在进行数据备份

mysqldump -uroot -p -B -F -R -x --master-data=2 ops >/home/yc/py08/04-mysql/ops.sql

-----------------

参数说明:

-B:指定数据库

-F:刷新日志

-R:备份存储过程等

-x:锁表

--master-data:在备份语句里添加CHANGE MASTER语句以及binlog文件及位置点信息

-- 再添加新的数据

insert into user values(4,"liupeng","21"),(5,"xiaoda","31"),(6,"fuaiai","26");

-- 查询数据

mysql> select * from user;

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

| id | name | age |

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

| 1 | wangbo | 24 |

| 2 | guohui | 22 |

| 3 | zhangheng | 27 |

| 4 | liupeng | 21 |

| 5 | xiaoda | 31 |

| 6 | fuaiai | 26 |

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

6 rows in set (0.00 sec)

-- 此时误操作,删除了test数据库

drop database ops;

mysql> show databases;

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

| Database |

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

| information_schema |

| mysql |

| performance_schema |

| python4 |

| sys |

| wx |

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

6 rows in set (0.00 sec)

1,先讲binlog文件导出

-- 将binlog文件导出sql文件,并vim编辑它删除其中的drop语句

-- [root@vm-002 backup]# mysqlbinlog -d ops /var/lib/mysql/mysql-bin.000002> /home/yc/002bin.sql

sudo mysqlbinlog -d ops /var/log/mysql/mysql-bin.000002> /home/yc/py08/04-mysql/002bin.sql

2,-- 删除里面的drop语句

vim 002bin.sql

3,-- 导入备份的数据文件,

mysql -uroot -p < /home/yc/py08/04-mysql/ops.sql

4,-- 再导入删除 drop语句后的 binlog日志文件

mysql -uroot -p ops < /home/yc/py08/04-mysql/002bin.sql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值