Skip to content

Instantly share code, notes, and snippets.

@unixfox
Last active January 8, 2023 20:24
Show Gist options
  • Save unixfox/00fcccb52571bd8f40266067eb4f9764 to your computer and use it in GitHub Desktop.
Save unixfox/00fcccb52571bd8f40266067eb4f9764 to your computer and use it in GitHub Desktop.
example mysql innodb cluster docker
version: '3'
services:
mysql-server-1:
hostname: mysql-server-1
env_file:
- mysql-server.env
image: mysql/mysql-server:8.0.31
volumes:
- ./data-server1:/var/lib/mysql
ports:
- "3301:3306"
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", "--binlog_transaction_dependency_tracking=WRITESET"]
mysql-server-2:
hostname: mysql-server-2
env_file:
- mysql-server.env
image: mysql/mysql-server:8.0.31
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", "--binlog_transaction_dependency_tracking=WRITESET"]
volumes:
- ./data-server2:/var/lib/mysql
ports:
- "3302:3306"
mysql-server-3:
hostname: mysql-server-3
env_file:
- mysql-server.env
image: mysql/mysql-server:8.0.31
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", "--binlog_transaction_dependency_tracking=WRITESET"]
volumes:
- ./data-server3:/var/lib/mysql
ports:
- "3303:3306"
mysql-router:
env_file:
- mysql-router.env
image: mysql/mysql-router:8.0
ports:
- "6446:6446"
depends_on:
- mysql-server-1
- mysql-server-2
- mysql-server-3
restart: on-failure
MYSQL_USER=root
MYSQL_HOST=mysql-server-1
MYSQL_PORT=3306
MYSQL_PASSWORD=mysql
MYSQL_INNODB_NUM_MEMBERS=3
MYSQL_ROOT_PASSWORD=mysql
MYSQL_ROOT_HOST=%
var dbPass = "mysql"
var clusterName = "devCluster"
try {
print('Setting up InnoDB cluster...\n');
shell.connect('root@mysql-server-1:3306', dbPass)
var cluster = dba.createCluster(clusterName);
print('Adding instances to the cluster.');
cluster.addInstance({user: "root", host: "mysql-server-2", password: dbPass})
print('.');
cluster.addInstance({user: "root", host: "mysql-server-3", password: dbPass})
print('.\nInstances successfully added to the cluster.');
print('\nInnoDB cluster deployed successfully.\n');
} catch(e) {
print('\nThe InnoDB cluster could not be created.\n\nError: ' + e.message + '\n');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment