feat: 删除不需要文件夹
This commit is contained in:
109
features/sm/backup.go
Normal file
109
features/sm/backup.go
Normal file
@@ -0,0 +1,109 @@
|
||||
package sm
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"time"
|
||||
|
||||
"ems.agt/lib/log"
|
||||
"ems.agt/restagent/config"
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
)
|
||||
|
||||
var dbConfig = config.GetYamlConfig().Database
|
||||
|
||||
func DatabaseWhoreBackup() {
|
||||
// MySQL数据库连接信息
|
||||
sqlStr := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=true&loc=Local",
|
||||
dbConfig.User, dbConfig.Password, dbConfig.Host, dbConfig.Port, dbConfig.Name)
|
||||
db, err := sql.Open("mysql", sqlStr)
|
||||
if err != nil {
|
||||
log.Error("Failed to connect to database:", err)
|
||||
return
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
// 备份SQL文件路径
|
||||
backupFile := dbConfig.Backup + "/" + "whore_backup_" + dbConfig.Name + ".sql"
|
||||
|
||||
// 执行mysqldump命令进行备份
|
||||
cmd := exec.Command("mysqldump", "-u", dbConfig.User, "-p"+dbConfig.Password, "-h", dbConfig.Host, dbConfig.Name)
|
||||
output, err := cmd.Output()
|
||||
if err != nil {
|
||||
log.Error("Failed to execute mysqldump command:", err)
|
||||
return
|
||||
}
|
||||
|
||||
// 将备份结果写入SQL文件
|
||||
file, err := os.Create(backupFile)
|
||||
if err != nil {
|
||||
log.Error("Failed to create backup file:", err)
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
_, err = file.Write(output)
|
||||
if err != nil {
|
||||
log.Error("Failed to write backup file:", err)
|
||||
return
|
||||
}
|
||||
|
||||
log.Info("Backup completed successfully.")
|
||||
}
|
||||
|
||||
func DatabaseIncrementalBackup() {
|
||||
// MySQL数据库连接信息
|
||||
sqlStr := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=true&loc=Local",
|
||||
dbConfig.User, dbConfig.Password, dbConfig.Host, dbConfig.Port, dbConfig.Name)
|
||||
db, err := sql.Open("mysql", sqlStr)
|
||||
if err != nil {
|
||||
log.Error("Failed to connect to database:", err)
|
||||
return
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
// 备份SQL文件路径
|
||||
backupFile := dbConfig.Backup + "/" + "incremental_backup_" + dbConfig.Name + ".sql"
|
||||
|
||||
// 上次备份的时间点
|
||||
lastBackupTime := time.Date(2022, time.January, 1, 0, 0, 0, 0, time.Local)
|
||||
|
||||
// 构建增量备份SQL语句
|
||||
query := fmt.Sprintf("SELECT * FROM table WHERE modified_at > '%s'", lastBackupTime.Format("2006-01-02 15:04:05"))
|
||||
|
||||
// 执行查询
|
||||
rows, err := db.Query(query)
|
||||
if err != nil {
|
||||
log.Error("Failed to execute query:", err)
|
||||
return
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
// 创建增量备份SQL文件
|
||||
file, err := os.Create(backupFile)
|
||||
if err != nil {
|
||||
log.Error("Failed to create backup file:", err)
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
// 将查询结果写入SQL文件
|
||||
for rows.Next() {
|
||||
var data string
|
||||
err := rows.Scan(&data)
|
||||
if err != nil {
|
||||
log.Error("Failed to scan row:", err)
|
||||
return
|
||||
}
|
||||
|
||||
_, err = file.WriteString(data + "\n")
|
||||
if err != nil {
|
||||
log.Error("Failed to write backup file:", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
log.Info("Incremental backup completed successfully.")
|
||||
}
|
||||
Reference in New Issue
Block a user