# MYSQL REPLICATION TEST

## BUILD:
```
docker-compose build
```

### RUN DOCKER:
```
docker-compose up
```

### Check master status:
```
./status-master.sh
```
result:
```
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |      154 | xbrlgen      |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
```

make sure File is "mysql-bin.000003" IF NOT
RUN SQL ON SLAVE:
```
CHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_USER='replica', MASTER_PASSWORD='duren123', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=0;
```
Then restart slave
```
docker restart mysql-slave
```


### Check slave status:
```
./status-slave.sh
```
make sure no error (Last_IO_Error and Last_SQL_Error)


#### Check master data:
```
docker exec -ti mysql-master mysql -u root --password=dodol123 xbrlgen
```
run sql:
```
SHOW TABLES;
```
make sure no table exists


#### Check slave data:
```
docker exec -ti mysql-slave mysql -u root --password=dodol123 xbrlgen
```
Run sql:
```
SHOW TABLES;
```
make sure no table exists


#### Run test sql on master:
```
docker exec -i mysql-master mysql -u root --password=dodol123 xbrlgen < test.sql
```


#### Check slave data:
```
docker exec -ti mysql-slave mysql -u root --password=dodol123 xbrlgen
```
Run sql:
```
SHOW TABLES;
```
make sure table DATA1 exists
```
SELECT * FROM DATA1;
```
make sure table DATA1 is not empty


#### Check replication status:
```
./status-master.sh
```
check the Position
```
./status-slave.sh
```
check Exec_Master_Log_Pos equal with <master Position>


#### Switch master/slave
On slave:
```
STOP SLAVE;
RESET SLAVE ALL;
```
On master:
```
xxxx TODO xxxx
```


### CLEAN-UP:
```
docker-compose rm -f
```