Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- BASE_PATH=$(dirname $0)
- slave-exec() {
- mysql --host slave-db-1 -uroot -p$MYSQL_SLAVE_PASSWORD -AN -e "$1"
- mysql --host slave-db-2 -uroot -p$MYSQL_SLAVE_PASSWORD -AN -e "$1"
- }
- master-exec() {
- mysql --host master-db -uroot -p$MYSQL_MASTER_PASSWORD -AN -e "$1"
- }
- sql() {
- if [ $# -eq 1 ] ; then
- master-exec "$1";
- else
- master-exec "USE $1; $2";
- fi
- }
- echo "Waiting for mysql to get up"
- # Give 60 seconds for master and slave to come up
- sleep 60
- echo "Create MySQL Servers (master / slave repl)"
- echo "-----------------"
- echo "* Create replication user"
- slave-exec 'STOP SLAVE;';
- slave-exec 'RESET SLAVE ALL;';
- master-exec "CREATE USER '$MYSQL_REPLICATION_USER'@'%';"
- master-exec "GRANT REPLICATION SLAVE ON *.* TO '$MYSQL_REPLICATION_USER'@'%' IDENTIFIED BY '$MYSQL_REPLICATION_PASSWORD';"
- master-exec 'flush privileges;'
- echo "* Set MySQL01 as master on MySQL02 and MySQL03"
- MYSQL01_Position=$(eval "mysql --host master-db -uroot -p$MYSQL_MASTER_PASSWORD -e 'show master status \G' | grep Position | sed -n -e 's/^.*: //p'")
- MYSQL01_File=$(eval "mysql --host master-db -uroot -p$MYSQL_MASTER_PASSWORD -e 'show master status \G' | grep File | sed -n -e 's/^.*: //p'")
- MASTER_IP=$(eval "getent hosts master-db|awk '{print \$1}'")
- echo $MASTER_IP
- slave-exec "CHANGE MASTER TO master_host='master-db', master_port=3306, \
- master_user='$MYSQL_REPLICATION_USER', master_password='$MYSQL_REPLICATION_PASSWORD', master_log_file='$MYSQL01_File', \
- master_log_pos=$MYSQL01_Position;"
- echo "* Set MySQL02 as master on MySQL01"
- MYSQL02_Position=$(eval "mysql --host slave-db-1 -uroot -p$MYSQL_SLAVE_PASSWORD -e 'show master status \G' | grep Position | sed -n -e 's/^.*: //p'")
- MYSQL02_File=$(eval "mysql --host slave-db-1 -uroot -p$MYSQL_SLAVE_PASSWORD -e 'show master status \G' | grep File | sed -n -e 's/^.*: //p'")
- SLAVE_IP_1=$(eval "getent hosts slave-db-1|awk '{print \$1}'")
- echo $SLAVE_IP_1
- master-exec "CHANGE MASTER TO master_host='slave-db-1', master_port=3306, \
- master_user='$MYSQL_REPLICATION_USER', master_password='$MYSQL_REPLICATION_PASSWORD', master_log_file='$MYSQL02_File', \
- master_log_pos=$MYSQL02_Position;"
- echo "* Set MySQL03 as master on MySQL01"
- MYSQL03_Position=$(eval "mysql --host slave-db-2 -uroot -p$MYSQL_SLAVE_PASSWORD -e 'show master status \G' | grep Position | sed -n -e 's/^.*: //p'")
- MYSQL03_File=$(eval "mysql --host slave-db-2 -uroot -p$MYSQL_SLAVE_PASSWORD -e 'show master status \G' | grep File | sed -n -e 's/^.*: //p'")
- SLAVE_IP_2=$(eval "getent hosts slave-db-2|awk '{print \$1}'")
- echo $SLAVE_IP_2
- master-exec "CHANGE MASTER TO master_host='slave-db-2', master_port=3306, \
- master_user='$MYSQL_REPLICATION_USER', master_password='$MYSQL_REPLICATION_PASSWORD', master_log_file='$MYSQL03_File', \
- master_log_pos=$MYSQL03_Position;"
- echo "* Start Slave on both Servers"
- slave-exec "start slave;"
- echo "Increase the max_connections to 2000"
- master-exec 'set GLOBAL max_connections=2000';
- slave-exec 'set GLOBAL max_connections=2000';
- mysql --host slave-db-1 -uroot -p$MYSQL_MASTER_PASSWORD -e "show slave status \G"
- mysql --host slave-db-2 -uroot -p$MYSQL_MASTER_PASSWORD -e "show slave status \G"
- echo "MySQL servers created!"
- echo "--------------------"
- echo "Creating SQL structure"
- echo "--------------------"
- sql "CREATE DATABASE IF NOT EXISTS library";
- sql library "CREATE TABLE IF NOT EXISTS category (
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
- name VARCHAR(50) NOT NULL
- )";
- sql library "CREATE TABLE IF NOT EXISTS user (
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
- album BIGINT NOT NULL
- )";
- sql library "CREATE TABLE IF NOT EXISTS book (
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
- title VARCHAR(100) NOT NULL,
- author VARCHAR(100) NOT NULL,
- isbn VARCHAR(100) NOT NULL,
- publishing_house VARCHAR(100) NOT NULL,
- category BIGINT NOT NULL,
- CONSTRAINT book_category FOREIGN KEY (category) REFERENCES category(id)
- )";
- sql library "CREATE TABLE IF NOT EXISTS rent (
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
- book BIGINT NOT NULL,
- user BIGINT NOT NULL,
- rent_date DATETIME NOT NULL,
- return_date DATETIME NOT NULL,
- CONSTRAINT rent_book FOREIGN KEY (book) REFERENCES book(id),
- CONSTRAINT rent_user FOREIGN KEY (user) REFERENCES user(id)
- )";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement