diff --git a/cmd/replica/main.go b/cmd/replica/main.go index 51a6513..a6d880f 100644 --- a/cmd/replica/main.go +++ b/cmd/replica/main.go @@ -7,7 +7,7 @@ import ( "strconv" "syscall" - "git.ma-al.com/goc_marek/replica/pkg/replica" + "git.ma-al.com/goc_marek/replica/replica" _ "github.com/go-sql-driver/mysql" ) diff --git a/docker-compose.yml b/docker-compose.yml index 7979cef..56bafee 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,8 +21,8 @@ services: environment: MARIADB_USER: ${MARIA_USER} MARIADB_PASSWORD: ${MARIA_PASS} - MYSQL_DATABASE: ${MARIA_NAME} - MYSQL_ROOT_PASSWORD: ${MARIA_PASS} + MARIADB_DATABASE: ${MARIA_NAME} + MARIADB_ROOT_PASSWORD: ${MARIA_PASS} restart: always mariadb-secondary: @@ -46,27 +46,12 @@ services: environment: MARIADB_USER: ${MARIA_USER} MARIADB_PASSWORD: ${MARIA_PASS} - MYSQL_DATABASE: ${MARIA_NAME} - MYSQL_ROOT_PASSWORD: ${MARIA_PASS} + MARIADB_DATABASE: ${MARIA_NAME} + MARIADB_ROOT_PASSWORD: ${MARIA_PASS} restart: always depends_on: - mariadb-primary - # postgresql: - # container_name: ${POSTGRES_HOST} - # restart: always - # image: postgres:18 - # networks: - # repl: - # ports: - # - 5432:5432 - # volumes: - # - postgres-data:/var/lib/postgresql:Z - # command: postgres -c shared_buffers=512MB -c work_mem=16MB -c maintenance_work_mem=256MB -c effective_cache_size=4GB -c max_connections=20 - # environment: - # POSTGRES_USER: ${POSTGRES_USER} - # POSTGRES_PASSWORD: ${POSTGRES_PASS} - # POSTGRES_DB: ${POSTGRES_NAME} networks: diff --git a/example.env b/example.env index 65679f0..e19acde 100644 --- a/example.env +++ b/example.env @@ -1,6 +1,7 @@ # Primary MariaDB Configuration MARIA_USER=replica MARIA_PASS=replica +MARIA_NAME=replica MARIA_SERVER_ID=100 MARIA_PRIMARY_HOST=mariadb-primary MARIA_PRIMARY_PORT=3306 diff --git a/go.mod b/go.mod index 9ff13ac..aa63013 100644 --- a/go.mod +++ b/go.mod @@ -11,6 +11,7 @@ require ( filippo.io/edwards25519 v1.1.0 // indirect github.com/goccy/go-json v0.10.2 // indirect github.com/google/uuid v1.3.0 // indirect + github.com/joho/godotenv v1.5.1 // indirect github.com/klauspost/compress v1.17.8 // indirect github.com/pingcap/errors v0.11.5-0.20250318082626-8f80e5cb09ec // indirect github.com/pingcap/log v1.1.1-0.20241212030209-7e3ff8601a2a // indirect diff --git a/go.sum b/go.sum index 1183093..d6cf1cd 100644 --- a/go.sum +++ b/go.sum @@ -12,6 +12,8 @@ github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= diff --git a/replica b/replica deleted file mode 100755 index 4939496..0000000 Binary files a/replica and /dev/null differ diff --git a/pkg/replica/config.go b/replica/config.go similarity index 97% rename from pkg/replica/config.go rename to replica/config.go index cbebd80..93f45b3 100644 --- a/pkg/replica/config.go +++ b/replica/config.go @@ -5,6 +5,8 @@ import ( "strconv" "strings" "time" + + "github.com/joho/godotenv" ) // BinlogConfig holds the configuration for connecting to MySQL/MariaDB binlog @@ -55,6 +57,12 @@ type AppConfig struct { // LoadEnvConfig loads configuration from environment variables func LoadEnvConfig() (*AppConfig, error) { + // Load .env file + if err := godotenv.Load(); err != nil { + // It's not an error if the .env file doesn't exist + // We just use the system environment variables + } + cfg := &AppConfig{ BatchSize: 1000, ExcludeSchemas: []string{"information_schema", "performance_schema", "mysql", "sys"}, diff --git a/pkg/replica/handlers.go b/replica/handlers.go similarity index 100% rename from pkg/replica/handlers.go rename to replica/handlers.go diff --git a/pkg/replica/initial_transfer.go b/replica/initial_transfer.go similarity index 100% rename from pkg/replica/initial_transfer.go rename to replica/initial_transfer.go diff --git a/pkg/replica/logging.go b/replica/logging.go similarity index 100% rename from pkg/replica/logging.go rename to replica/logging.go diff --git a/pkg/replica/position.go b/replica/position.go similarity index 100% rename from pkg/replica/position.go rename to replica/position.go diff --git a/pkg/replica/service.go b/replica/service.go similarity index 100% rename from pkg/replica/service.go rename to replica/service.go diff --git a/pkg/replica/sqlbuilder.go b/replica/sqlbuilder.go similarity index 100% rename from pkg/replica/sqlbuilder.go rename to replica/sqlbuilder.go