mysql - 如何使用基于 binlog 的 Ansible Playbook 在 mysql 中实现 1 小时定时增量备份?
问题描述
我有两台服务器。master 和 slave 为复制进行了调解。复制过程运行良好。在这里,我想每隔一小时使用一次“增量转储”选项并将其上传到 s3 存储桶或另一台服务器或本地机器(控制机器)。从 mysql 文档中,我有信心使用 binlogfile 完成此操作。但我不知道从哪里开始。
我正在按照下面给出的步骤进行操作。但我不知道 binlog 文件如何更改仅相当于增量转储,即使它具有我们在数据库中所做的所有查询。
I wants to take dump from slave db. How that will take dump exactly one hour time period. How can I achieve that?
我的复制代码在这里。
sudo mysql -uroot -p'Pass@123' --connect-expired-password -e "CREATE TABLE db_test.mytable (name VARCHAR(100));"
sudo mysql -uroot -p'Pass@123' --connect-expired-password -e "INSERT INTO db_test.mytable (name) VALUES ('ANSIBLE');"
sudo mysql -uroot -p'Pass@123' --connect-expired-password -e "FLUSH TABLES WITH READ LOCK;"
sudo mysql -uroot -p'Pass@123' --connect-expired-password -e "SHOW MASTER STATUS;"
sudo mysql -uroot -p'Pass@123' --connect-expired-password -e "unlock tables;"
sudo mysql -uroot -p'Pass@123' --connect-expired-password -e "drop database db_test;"
sudo mysql -uroot -p'Pass@123' --connect-expired-password -e "DROP TABLE IF EXISTS db_test.mytable;"
-get master
-adding values to dummy host
-changemaster using dummyhost value
-starting slave
解决方案
最后我找到了解决方案。
Flush binary logs
[创建新的二进制日志文件]- 通过使用
binlog.index
文件,找到以前的二进制文件。将该文件复制到我要上传的位置。那是转储文件,我从该文件中获取了数据并恢复了。 - 当前时间戳名称值保存的文件。
- 通过使用
crontab -e
文件完成自动化。 1 */1 * * *
是用于时间安排的值。[每小时的第一分钟]
推荐阅读
- flutter - Flutter 布局 -3 列
- python - 为什么 gspread 中的 worksheet.get() 不起作用?
- sql - PL/SQL 如何获取我正在查询的表的计数?如何在 COUNT 中使用 NEW?
- flutter - 无法在颤动中将消息从 SendPort 发送到 ReceivePort
- r - 如何在数据集列表上运行 lm 模型?
- python - 为两个数组 x 和 y 获得完全相同的乘积的 Pythonic 方法是什么,其中 y 被任意改组?
- flutter - Flutter:将数据发送回特定列表项
- c# - c# 根据属性从类列表中选择实例
- java - java中的蛇游戏不会检测箭头键(蛇不会响应输入)
- vue.js - Can't beforeCreate 工作与 Nuxt.js 中的 asyncData 相同