# mysqlbak **Repository Path**: noovertime/mysqlbak ## Basic Information - **Project Name**: mysqlbak - **Description**: 使用go编写的mysql备份工具,支持钉钉备份状态提醒,支持对接第三方对象存储上传备份文件 - **Primary Language**: Go - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2022-06-09 - **Last Updated**: 2022-10-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Mysqlbak ## 一、简介 Mysqlbak是一款使用go开发mysql数据库备份软件,不依赖mysqldump命令,你可以在任何一台机器上运行 - 支持上传OSS对象存储 - 支持钉钉推送备份消息 ## 二、安装 ### 2.1、二进制安装 注意:使用二进制安装前请确保当前机器已安装git命令,与go环境 克隆代码到本地 ```git git clone https://gitee.com/noovertime/mysqlbak.git ``` 编译可执行文件 ```shell cd mysqlbak && go build main.go ``` 运行程序 ```shell ./main ``` ### 2.2、Docker容器安装 使用docker容器可一键安装部署,需要将配置文件映射到本地,以便更改配置文件 **注意:本地目录请自行修改** ```shell docker run -d --restart=always --name=mysqlbak \ -v /root/mysqlbak/config/config.ini:/app/config/config.ini \ chenteng/mysqlbak:1.0.4-SP4 ``` ### 2.3、Kubernetes安装 首先创建配置文件configmap映射 ```yaml apiVersion: v1 kind: ConfigMap metadata: name: mysqlbak-conf namespace: default data: config.ini: | [database] host = "mysql-service.solo" ## 数据库host port = "3306" ## 端口 user = "root" ## 用户 passwd = "123456" ## 密码 database = "solo" ## 数据库名 # BackupCycle = "0 09 11 * * ? " ## 备份周期,格式为crontab格式 BackupCycle = "00 21 04 * * ? " ## 备份周期,格式为crontab格式 KeepNumber = 7 ## mysql数据保留周期 HostName = "本地虚拟机" ## 用于钉钉发送消息标注主机名 ISBakALl = false ##是否全库备份 [dingding] IsSend = true ##是否发送钉钉消息 Webhook = "https://oapi.dingtalk.com/robot/send?access_token=f7af721d634b0fafe6a01826d795aadf0454250430ea169ec32f9a507cab881a" ## 上传阿里云对象存储 [oss] IsUpload = true ##是否上传阿里云 Endpoint = "https://oss-cn-beijing.aliyuncs.com" ## Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。 Accesskey = "LTAI5t61CemFMNzTivCmj167" Secretkey = "xIJK3KTplZj9d7OLa417eAyedsWBCK" BucketName = "mysqldata12138" ## Bucket名称 Directory = "mysql/" ## 上传目录 ``` 创建部署文件yaml ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: mysqlbak namespace: default spec: selector: matchLabels: app: mysqlbak replicas: 1 template: metadata: labels: app: mysqlbak spec: containers: - name: mysqlbak imagePullPolicy: IfNotPresent image: chenteng/mysqlbak:1.0.4-SP1 volumeMounts: - name: mysqlbak-conf mountPath: /app/config/config.ini subPath: config.ini volumes: - name: mysqlbak-conf configMap: name: mysqlbak-conf ``` ## 三、使用 1. 修改config.ini中的数据库连接信息 2. 根据需求调整备份周期与备份时间 3. 启动备份服务 ## 四、未来 - 优化钉钉发送消息模板 - 支持web界面化操作 - 支持多数据库备份