日志容器存入mysql数据库_Docker下mysql容器开启binlog日志(保留7天)

本文介绍了如何在Docker容器中启动MySQL 5.7数据库并开启binlog日志,以备日志记录和数据恢复。详细步骤包括下载镜像、创建挂载目录、配置MySQL配置文件、重启容器以及如何查看和使用binlog进行数据恢复。此外,还提到了如何通过binlog在特定时间点备份和恢复数据库。
摘要由CSDN通过智能技术生成

现有需求开启用Docker容器启动的mysql数据库的binlog,以作为 日志记录和 数据恢复,我们了解了MySQL的binlog日志的开启方式以及binlog日志的一些原理和常用操作,我们知道,binlog有两大作用,一个是使用binlog恢复数据,另一个就是用来做主从复制。本篇笔记就是来记录如何使用开启binlog日志和做数据恢复。当然了,使用binlog日志所恢复的数据只能是部分数据,并不能够使用binlog日志来做数据库的备份,如果想要做数据库备份,依然要使用我们传统的备份方法,而binlog可以作为增量备份。

以供笔记和学习,以下就是开启binlog日志的步骤过程:

1.首先,在实现前我是在虚拟机上做的实验,环境如下:

[root@localhost cloud]# cat /etc/centos-release

CentOS Linux release 7.4.1708 (Core)

数据库镜像版本

[root@localhost cloud]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

docker.io/mysql     5.7                 5195076672a7        13 days ago         371 MB

2.下载mysql 数据库镜像

docker pull mysql:5.7

3.在启动容器之前先要创建好要挂载出来的目录文件

一个myql的配置目录 在容器:/etc/mysql ,这里可以从其他容器中拷贝过来

docker cp mysql:/etc/mysql     /etc/mysql

第二个mysql数据目录 /var/lib/mysql  保存了数据库、表等数据信息

4.启动Mysql5.7镜像一个实例

docker run -d --name mysql

--privileged=true

-p 3306:3306

-e MYSQL_ROOT_PASSWORD=123456

-v /etc/mysql:/etc/mysql

-v /opt/mysql:/var/lib/mysql

-v /etc/localtime:/etc/localtime

docker.io/mysql:5.7

5.启动好后,用mysql客户端工具边接,在未设置之前,先查看一下,mysql5.7是否默认开启,查看脚本如下:

show variables like '%log_bin%'

结果如下:

d060f5e349a3b47386583a7c911d0da6.png

看得出mysql5.7默认是未开启的,下面就开始设置

6.找到刚挂载到本地的mysql设置目录 /etc/mysql

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

5c59215b6b557821f4e918722997834a.png

在以上修改的文件下方,添加上红框中的两条

这一个参数的作用是mysql会根据这个配置自动设置log_bin为on状态,自动设置log_bin_index文件为你指定的文件名后跟.index

第二个参数 ,用的如果是5.7及以上版本的话,重启mysql服务会报错,这个时候我们必须还要指定这样一个参数,随机指定一个不能和其他集群中机器重名的字符串,如果只有一台机器,那就可以随便指定了。

第三个参数:设置binlog日志保存期限7天

echo -e "#set binlog save days\nexpire_logs_days=7" >> /etc/mysql/mysql.conf.d/mysqld.cnf

7.设置完后重启mysql容器

docker restart mysql

再次查询就会看到已开启mysql的binlog日志,如下图:

8b62a260b506b9ba81d8c2d1d707a10b.png

这个时候,在数据库中创建一个数据库、表,插入一些数据,就会在/var/lib/mysql容器中看到以下,或者是看挂载出来对应的目录上,

e927e1402249564c51b334ab5363c532.png

在数据库中查询日志,如下

show binlog events in 'mysql-bin.000001';

show binlog events in 'mysql-bin.000002';

show binlog events in 'mysql-bin.000003';

#FLUSH LOGS

a9cf8635e31fedff120d4eebe349fac0.png

就可以通过以上数据进行数据恢复

也可以直接操作容器如下:

docker exec mysql bash -c "echo 'log-bin=/var/lib/mysql/mysql-bin' >> /etc/mysql/mysql.conf.d/mysqld.cnf"

docker exec mysql bash -c "echo 'server-id=123454' >> /etc/mysql/mysql.conf.d/mysqld.cnf"

docker restart mysql

SHOW  GLOBAL VARIABLES LIKE '%log%';

————————————————

通过binlog还原数据库

①、备份故障点之前的sql

61f3fa10f6eaf74f60cd5c177c155e1f.gif

-- 备份时间点sql

mysqlbinlog --no-defaults -d 库名 --start-datetime='2019-10-22 17:03:45' --stop-datetime='2019-10-22 17:50:06' /var/lib/mysql/mysql-bin.000053 > temp20191022.sql

-- 备份存储过程和函数

docker exec 5978e90c168b mysqldump -R -ndt eibd_oa -u root -p123456 > eibd_oa_funcs-${BACK_DATA}

bc0663fc3dc867e446bf49b427c4c84f.gif

--start-datetime:代表开始时间

--stop-datetime:代表结束时间

从2019-10-22 17:03:45到2019-10-22 17:50:06的数据进行备份

--database                              ##与"-d"作用相同,用于指定数据

-d                                              ##与“database”作用相同,用于指定数据库

--start-datetime                       ##起始时间点

--stop-datetime                       ##结束时间点

--start-position                        ##起始位置

--stop-position                       ##结束位置

②、还原数据

通过source temp20191022.sql进行还原

参考链接:https://blog.csdn.net/harris135/article/details/79712750

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值