github.com/ecodeclub/eorm@v0.0.2-0.20231001112437-dae71da914d0/script/mysql/slave/slave.sh (about) 1 #!/bin/bash 2 #定义连接master进行同步的账号 3 SLAVE_SYNC_USER="${SLAVE_SYNC_USER:-sync_admin}" 4 #定义连接master进行同步的账号密码 5 SLAVE_SYNC_PASSWORD="${SLAVE_SYNC_PASSWORD:-123456}" 6 #定义slave数据库账号 7 ADMIN_USER="${ADMIN_USER:-root}" 8 #定义slave数据库密码 9 ADMIN_PASSWORD="${ADMIN_PASSWORD:-root}" 10 #定义连接master数据库host地址 11 MASTER_HOST="${MASTER_HOST:-%}" 12 #连接master数据库,查询二进制数据,并解析出logfile和pos,这里同步用户要开启 REPLICATION CLIENT权限,才能使用SHOW MASTER STATUS; 13 RESULT=`mysql -u"$SLAVE_SYNC_USER" -h$MASTER_HOST -p"$SLAVE_SYNC_PASSWORD" -e "SHOW MASTER STATUS;" | grep -v grep |tail -n +2| awk '{print $1,$2}'` 14 #解析出logfile 15 LOG_FILE_NAME=`echo $RESULT | grep -v grep | awk '{print $1}'` 16 #解析出pos 17 LOG_FILE_POS=`echo $RESULT | grep -v grep | awk '{print $2}'` 18 #设置连接master的同步相关信息 19 SYNC_SQL="change master to master_host='$MASTER_HOST',master_user='$SLAVE_SYNC_USER',master_password='$SLAVE_SYNC_PASSWORD',master_log_file='$LOG_FILE_NAME',master_log_pos=$LOG_FILE_POS,get_master_public_key=1;" 20 #开启同步 21 START_SYNC_SQL="start slave;" 22 #查看同步状态 23 STATUS_SQL="show slave status\G;" 24 mysql -u"$ADMIN_USER" -p"$ADMIN_PASSWORD" -e "$SYNC_SQL $START_SYNC_SQL $STATUS_SQL"