Skip to content

Commit 1053e26

Browse files
committed
Initial files -docker-compose setup for MySQL InnoDB Cluster
0 parents  commit 1053e26

File tree

7 files changed

+89
-0
lines changed

7 files changed

+89
-0
lines changed

docker-compose.yml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
version: '3'
2+
services:
3+
mysql-server-1:
4+
env_file:
5+
- mysql-server.env
6+
image: mysql/mysql-server:8.0.13
7+
ports:
8+
- "3301:3306"
9+
command: ["mysqld","--server_id=1","--binlog_checksum=NONE","--gtid_mode=ON","--enforce_gtid_consistency=ON","--log_bin","--log_slave_updates=ON","--master_info_repository=TABLE","--relay_log_info_repository=TABLE","--transaction_write_set_extraction=XXHASH64","--user=mysql","--skip-host-cache","--skip-name-resolve", "--default_authentication_plugin=mysql_native_password"]
10+
mysql-server-2:
11+
env_file:
12+
- mysql-server.env
13+
image: mysql/mysql-server:8.0.13
14+
command: ["mysqld","--server_id=2","--binlog_checksum=NONE","--gtid_mode=ON","--enforce_gtid_consistency=ON","--log_bin","--log_slave_updates=ON","--master_info_repository=TABLE","--relay_log_info_repository=TABLE","--transaction_write_set_extraction=XXHASH64","--user=mysql","--skip-host-cache","--skip-name-resolve", "--default_authentication_plugin=mysql_native_password"]
15+
ports:
16+
- "3302:3306"
17+
mysql-server-3:
18+
env_file:
19+
- mysql-server.env
20+
image: mysql/mysql-server:8.0.13
21+
command: ["mysqld","--server_id=3","--binlog_checksum=NONE","--gtid_mode=ON","--enforce_gtid_consistency=ON","--log_bin","--log_slave_updates=ON","--master_info_repository=TABLE","--relay_log_info_repository=TABLE","--transaction_write_set_extraction=XXHASH64","--user=mysql","--skip-host-cache","--skip-name-resolve", "--default_authentication_plugin=mysql_native_password"]
22+
ports:
23+
- "3303:3306"
24+
mysql-shell:
25+
env_file:
26+
- mysql-shell.env
27+
image: bkandasa/mysql-shell-batch
28+
volumes:
29+
- ./scripts/:/scripts/
30+
depends_on:
31+
- mysql-server-1
32+
- mysql-server-2
33+
- mysql-server-3
34+
mysql-router:
35+
env_file:
36+
- mysql-router.env
37+
image: mysql/mysql-router:8.0.13
38+
ports:
39+
- "6446:6446"
40+
depends_on:
41+
- mysql-server-1
42+
- mysql-server-2
43+
- mysql-server-3
44+
- mysql-shell
45+
restart: on-failure
46+
wordpress:
47+
env_file:
48+
- wordpress.env
49+
image: wordpress:latest
50+
ports:
51+
- "8080:80"
52+
depends_on:
53+
- mysql-router

mysql-router.env

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
MYSQL_USER=root
2+
MYSQL_HOST=mysql-server-1
3+
MYSQL_PORT=3306
4+
MYSQL_PASSWORD=mysql
5+
MYSQL_INNODB_NUM_MEMBERS=3

mysql-server.env

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
MYSQL_ROOT_PASSWORD=mysql
2+
MYSQL_ROOT_HOST=%

mysql-shell.env

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
MYSQL_USER=root
2+
MYSQL_HOST=mysql-server-1
3+
MYSQL_PORT=3306
4+
MYSQL_PASSWORD=mysql
5+
MYSQLSH_SCRIPT=/scripts/setupCluster.js
6+
MYSQL_SCRIPT=/scripts/db.sql

scripts/db.sql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
CREATE DATABASE fossasiadb;
2+
CREATE USER 'fossasia'@'%' IDENTIFIED BY 'fossasia';
3+
GRANT ALL PRIVILEGES ON fossasiadb.* TO 'fossasia'@'%';

scripts/setupCluster.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
var dbPass = "mysql"
2+
var clusterName = "devCluster"
3+
4+
try {
5+
print('Setting up InnoDB cluster...\n');
6+
shell.connect('root@mysql-server-1:3306', dbPass)
7+
var cluster = dba.createCluster(clusterName);
8+
print('Adding instances to the cluster.');
9+
cluster.addInstance({user: "root", host: "mysql-server-2", password: dbPass})
10+
print('.');
11+
cluster.addInstance({user: "root", host: "mysql-server-3", password: dbPass})
12+
print('.\nInstances successfully added to the cluster.');
13+
print('\nInnoDB cluster deployed successfully.\n');
14+
} catch(e) {
15+
print('\nThe InnoDB cluster could not be created.\n\nError: ' + e.message + '\n');
16+
}

wordpress.env

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
WORDPRESS_DB_HOST: mysql-router:6446
2+
WORDPRESS_DB_USER: fossasia
3+
WORDPRESS_DB_PASSWORD: fossasia
4+
WORDPRESS_DB_NAME: fossasiadb

0 commit comments

Comments
 (0)