1、mysql创建数据库指定编码
create database test default character set utf8 collate utf8_general_ci;
2、在mysql数据库中我们可以开启一些日志,来记录mysql数据库的操作信息。
Mysql日志主要分4类:
(1)二进制日志:记录所有更改数据的语句,可以用于数据的恢复。
(2)错误日志:记录mysql服务的启动、运行或停止服务时出现的问题。
(3)查询日志:记录建立的客户端连接和执行的语句。
(4)慢查询语句:记录所有执行时间超过long_query_time的所有查询或者没使用索引的查询。
这里我们主要学习二进制日志,为什么会有二进制日志?因为它可以最大可能地帮我们恢复数据库的一些数据,比如突然断电了、一不小心删错了数据,然而我们可以通过二进制日志可以恢复。
二进制日志默认是没有开启的,这就需要我们去开启。
1、设置启动二进制日志:
找到my.ini配置,在[mysqld]组下面添加以下内容:
log-bin="f://logs/mydb_log"
expire_logs_day=2
max_binlog_size=100M
log-bin:二进制日志存放的位置。
expire_logs_day:二进制日志自动删除的天数,默认是0——不自动删除。
max_binlog_size:一个二进制日志文件的大小限制,超过了这个值就会打开新的日志文件。范围:大于4096byte但小于1GB默认是1G。
2、重启mysql服务就可以了。
3、为了验证一下是否成功开启二进制日志,看下图操作,如果log_bin的值为on说明开启成功。
4、模拟恢复数据。
在我的mysql数据库中创建一张my表:
create table my(
id int primary key auto_increment,
name varchar(12)
)
往里面插入两条数据到My表中,数据如下:
insert into my values(1,'1111'),(2,'22222')
现在呢,我把这张my表删掉,然后通过二进制日志来恢复数据。
恢复数据操作:
【1】查看二进制日志文件:
规则:mysqlbinlog 日志存放位置
输入:mysqlbinlog f://logs/mydb_log.000001
在刚才打印出来的日志信息中我们可以找到我们之前创建my表的信息:
还有我们刚插入的数据信息:
那么现在我们可以根据这些信息来把数据恢复到之前某个状态。
规则:mysqlbinlog [option] filename |mysql –uuser –ppassword。
Option:可选项,--start-date、--stop-date、--start-position、--end-position分别表示恢复数据库的开始时间、结束时间、开始位置、结束位置。
输入命令:
mysqlbinlog --start-date="2018-01-06 15:10:07" --stop-date="2018-01-06 15:11:00" f://logs/mydb_log.000001|mysql -uroot -p123456
然后我们再去数据库中查看my表,发现有了,而且还有数据了。到此说明数据成功恢复了。