docker compose
Код: Выделить всё
version: '3'
services:
mysql-server-1:
container_name: mysql-server-1
env_file:
- mysql-server.env
image: mysql/mysql-server:8.0.13
healthcheck:
test: [ "CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-p${MYSQL_ROOT_PASSWORD}" ]
interval: 10s
timeout: 5s
retries: 20
start_period: 40s
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"
]
mysql-server-2:
container_name: mysql-server-2
healthcheck:
test: [ "CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-p${MYSQL_ROOT_PASSWORD}" ]
interval: 10s
timeout: 5s
retries: 20
start_period: 40s
env_file:
- mysql-server.env
image: mysql/mysql-server:8.0.13
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" ]
ports:
- "3302:3306"
mysql-server-3:
container_name: mysql-server-3
healthcheck:
test: [ "CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-p${MYSQL_ROOT_PASSWORD}" ]
interval: 10s
timeout: 5s
retries: 20
start_period: 40s
env_file:
- mysql-server.env
image: mysql/mysql-server:8.0.13
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" ]
ports:
- "3303:3306"
mysql-shell:
container_name: mysql-shell
env_file:
- mysql-shell.env
image: bkandasa/mysql-shell-batch
volumes:
- ./scripts/:/scripts/
depends_on:
mysql-server-1:
condition: service_healthy
mysql-server-2:
condition: service_healthy
mysql-server-3:
condition: service_healthy
mysql-router:
container_name: mysql-router
env_file:
- mysql-router.env
image: mysql/mysql-router:8.0.13
ports:
- "6446:6446"
depends_on:
mysql-server-1:
condition: service_healthy
mysql-server-2:
condition: service_healthy
mysql-server-3:
condition: service_healthy
mysql-shell:
condition: service_started
restart: on-failure
wordpress:
container_name: wordpress
env_file:
- wordpress.env
image: wordpress:latest
ports:
- "8080:80"
depends_on:
- mys
Код: Выделить всё
CREATE DATABASE if not exists fossasiadb;
CREATE USER 'fossasia'@'%' IDENTIFIED BY 'fossasia';
GRANT ALL PRIVILEGES ON fossasiadb.* TO 'fossasia'@'%';
Код: Выделить всё
var dbPass = "mysql"
var clusterName = "devCluster"
try {
println('Setting up InnoDB cluster...');
shell.connect('root@mysql-server-1:3306', dbPass)
var cluster = dba.createCluster(clusterName);
println('Adding mysql-server-2 to the cluster.');
cluster.addInstance({user: "root", host: "mysql-server-2", password: dbPass})
println('Adding mysql-server-3 to the cluster.');
cluster.addInstance({user: "root", host: "mysql-server-3", password: dbPass})
println('.Instances successfully added to the cluster.');
println('InnoDB cluster deployed successfully.');
println("Cluster status:", cluster.status())
cluster = dba.getCluster();
println("Cluster exists. Skipping bootstrap.", cluster);
} catch (e) {
println('The InnoDB cluster could not be created.Error: ', e.message);
}
Код: Выделить всё
MYSQL_ROOT_PASSWORD=mysql
MYSQL_ROOT_HOST=%
Код: Выделить всё
MYSQL_USER=root
MYSQL_HOST=mysql-server-1
MYSQL_PORT=3306
MYSQL_PASSWORD=mysql
MYSQLSH_SCRIPT=/scripts/setupCluster.js
MYSQL_SCRIPT=/scripts/db.sql
Код: Выделить всё
MYSQL_USER=root
MYSQL_HOST=mysql-server-1
MYSQL_PORT=3306
MYSQL_PASSWORD=mysql
MYSQL_INNODB_NUM_MEMBERS=3
Код: Выделить всё
WORDPRESS_DB_HOST: mysql-router:6446
WORDPRESS_DB_USER: fossasia
WORDPRESS_DB_PASSWORD: fossasia
WORDPRESS_DB_NAME: fossasiadb
Код: Выделить всё
docker-compose up --build --force-recreate
Код: Выделить всё
docker exec mysql-server-1 mysql -u fossasia -pfossasia fossasiadb -e "CREATE TABLE IF NOT EXISTS users ( user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL ); INSERT INTO users (username, email) VALUES ('john_doe', 'john@example.com');"
docker exec mysql-server-1 mysql -u fossasia -pfossasia fossasiadb -e "select * from fossasiadb.users"
docker exec mysql-server-2 mysql -u fossasia -pfossasia fossasiadb -e "select * from fossasiadb.users"
docker exec mysql-server-3 mysql -u fossasia -pfossasia fossasiadb -e "select * from fossasiadb.users"
Что я делаю не так?
Заранее спасибо
Подробнее здесь: https://stackoverflow.com/questions/798 ... er-compose