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"