| |
请将
运行此代码将在Docker容器中执行数据库备份,并将备份文件保存为名为backup.sql的文件。请确保您的应用程序具有适当的权限来执行备份操作,并根据实际需求进行适当的错误处理和日志记录。
package main
import (
"fmt"
"log"
"os"
"os/exec"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
func main() {
dsn := "host=<your_host> user=<your_user> password=<your_password> dbname=<your_db> port=<your_port> sslmode=disable"
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatalf("Failed to connect to database: %v", err)
}
defer db.Close()
backupFile := "backup.sql"
cmd := exec.Command("pg_dump", "--dbname=<your_db_url>", "--file="+backupFile)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
err = cmd.Run()
if err != nil {
log.Fatalf("Failed to backup database: %v", err)
}
fmt.Println("Backup completed successfully!")
}
package main
import (
"fmt"
"log"
"os"
"os/exec"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
func main() {
dsn := "host=<docker_container_ip> user=<your_user> password=<your_password> dbname=<your_db> port=<your_port> sslmode=disable"
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatalf("Failed to connect to database: %v", err)
}
defer db.Close()
backupFile := "backup.sql"
cmd := exec.Command("docker", "exec", "<your_postgres_container_name>", "pg_dump", "--dbname=<your_db_url>", "--file="+backupFile)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
err = cmd.Run()
if err != nil {
log.Fatalf("Failed to backup database: %v", err)
}
fmt.Println("Backup completed successfully!")
}
依赖os/exec包执行
132 服务端 ↦ Go开发技巧 __ 165 字