arie0703 / sandbox-go-api

Studying Go lang (Go / Gin)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

sandbox-go-api

Commands

start

go run main.go

MySQLを起動

docker-compose up -d mysql

MySQLを操作

docker-compose run mysql-cli

Add Data (Sample)

curl -XPOST localhost:8080/recipe/create -d \
'{"Recipe": {"Title": "サンプルレシピ", "Description": "サンプル", "UserID": 1}, "Ingredients": [{"Name": "卵", "Amount": 1, "Unit": "個"}], "Procedures": [{ "Description": "hoge", "OrderNumber": 1}] }' | jq .

Migration

golang-migrateのインストール(Mac)

brew install golang-migrate

マイグレーションファイル作成

migrate create -ext sql -dir database/migrations -seq [Migration File Name]

up

migrate --path database/migrations --database 'mysql://main:develop@tcp(127.0.0.1:3306)/sandbox-go-api' -verbose up

down

migrate --path database/migrations --database 'mysql://main:develop@tcp(127.0.0.1:3306)/sandbox-go-api' -verbose down

Replication

コンテナのIPアドレス確認

docker container exec -it sandbox-go-api_mysql-main_1 hostname -i

Main環境

# レプリケーション用ユーザー作成
CREATE USER 'replica'@'172.30.%.%' IDENTIFIED BY 'replica';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'172.30.%.%';
GRANT ALL PRIVILEGES ON *.* TO 'replica'@'172.30.%.%';
# バイナリログの情報確認
SHOW MASTER STATUS;

# Authentication requires secure connection. というエラーが出た時の対処法
ALTER USER 'replica'@'172.30.%.%' IDENTIFIED WITH mysql_native_password BY 'password';

Replica環境

CHANGE MASTER TO MASTER_HOST='mysql-main', MASTER_PORT=3306, MASTER_LOG_FILE='5f7556518596-bin.000001', MASTER_LOG_POS=156;

START SLAVE USER = 'replica' PASSWORD = 'password';

STOP SLAVE;

SHOW SLAVE STATUS\G;

# レプリケーション設定のリセット
RESET SLAVE;

About

Studying Go lang (Go / Gin)


Languages

Language:Go 99.0%Language:Dockerfile 1.0%