# bin/bash set -x set -v cd $HOME/mysql-5.7-install ulimit -c unlimited ulimit -n $(( 32 * 1024 )) MS=${1:-master} MASTER_PORT=3310 if [ -d /dev/shm ]; then SHM=/dev/shm else SHM=/run/shm fi DIR=${SHM}/oltp_${MS} rm -rf "${DIR}" mkdir -p "${DIR}" if [ $MS == "master" ]; then EXTRA_OPTS=--log-bin=${DIR}/mysqlbin SERVER_ID=120 PORT=${MASTER_PORT} else MS=slave EXTRA_OPTS=--slave-parallel-workers=160 SERVER_ID=180 PORT=3320 fi ( for o in --initialize-insecure ''; do bin/mysqld --no-defaults $o \ --pid-file=/tmp/${MS}.pid \ --port ${PORT} --datadir=${DIR} --socket /tmp/oltp_${MS}.sock ${EXTRA_OPTS} --server-id=${SERVER_ID} \ --innodb_log_file_size=200M --innodb_log_files_in_group=5 \ --innodb-buffer-pool-size=6G --innodb-buffer-pool-instances=6 \ --innodb_file_per_table --binlog_checksum=NONE --innodb_checksum_algorithm=none \ --max-connections=16000 --max_prepared_stmt_count=1M \ --core-file \ 2>&1 | tee -a /tmp/${MS}.log done ) & # wait for startup while [ 1 ]; do mysql -S /tmp/oltp_${MS}.sock -u root -e 'show databases' && break sleep 0.5 done # will only work once before the password is set cat << EOF | mysql -S /tmp/oltp_${MS}.sock -u root create user 'repl'@'localhost' identified by 'repl'; grant replication slave on *.* to 'repl'@'localhost' identified by 'repl'; SET PASSWORD = PASSWORD('mysql'); INSTALL PLUGIN rpl_semi_sync_${MS} SONAME 'semisync_${MS}.so'; SET GLOBAL rpl_semi_sync_${MS}_enabled = 1; delete from mysql.user where user='' or host not in ('localhost', '127.0.0.1'); flush logs; select user,host from mysql.user; show ${MS} status; EOF if [ $MS == "slave" ]; then cat << EOF1 | mysql -S /tmp/oltp_${MS}.sock -u root -pmysql change master to master_host='localhost', master_port=3310, master_user='repl',master_password='repl', master_log_file='mysqlbin.000003', master_log_pos=0; start slave; EOF1 fi