| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #!/bin/bash
- # MySQL 连接配置
- MYSQL_USER="root"
- MYSQL_PASSWORD="123456"
- MYSQL_HOST="127.0.0.1"
- # 获取所有以 'ro' 开头的数据库
- DATABASES=$(mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -e "SHOW DATABASES LIKE 'ro%';" -s -N 2>/dev/null)
- TOTAL_RMB=0
- TOTAL_ROLE=0
- TOTAL_LOGIN_3DAYS=0
- echo "开始查询所有 ro* 数据库的统计信息..."
- echo "========================================"
- for DB in $DATABASES; do
- # 提取数据库编号(去掉 ro 前缀)
- DB_NUM=${DB#ro}
- # 根据映射规则计算区服编号
- case $DB_NUM in
- 1)
- SERVER_ID=1
- ;;
- 2)
- SERVER_ID=6
- ;;
- 3)
- SERVER_ID=2
- ;;
- 4)
- SERVER_ID=7
- ;;
- 5)
- SERVER_ID=3
- ;;
- 6)
- SERVER_ID=8
- ;;
- 7)
- SERVER_ID=4
- ;;
- 8)
- SERVER_ID=9
- ;;
- 9)
- SERVER_ID=5
- ;;
- *)
- # 10 及以上,区服编号等于数据库编号
- SERVER_ID=$DB_NUM
- ;;
- esac
- echo "数据库: $DB (区服: ${SERVER_ID}服)"
- # 查询1: 所有 RMB 总和
- SUM_RMB=$(mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -D $DB -e "SELECT COALESCE(SUM(rmb), 0) FROM role_order_list;" -s -N 2>/dev/null)
- # 查询2: 所有角色数量
- COUNT_ROLE=$(mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -D $DB -e "SELECT COALESCE(COUNT(*), 0) FROM role;" -s -N 2>/dev/null)
- # 查询3: 最近三天登录人数(使用 uid 作为唯一标识)
- COUNT_LOGIN_3DAYS=$(mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -D $DB -e "SELECT COALESCE(COUNT(DISTINCT uid), 0) FROM role WHERE last_login_date >= DATE_SUB(NOW(), INTERVAL 3 DAY);" -s -N 2>/dev/null)
- # 显示当前数据库的统计值
- echo " - 总充值金额(美元): ${SUM_RMB:-0}"
- echo " - 总角色数量: ${COUNT_ROLE:-0}"
- echo " - 最近三天登录人数: ${COUNT_LOGIN_3DAYS:-0}"
- echo ""
- # 累加对应的总和
- TOTAL_RMB=$((TOTAL_RMB + ${SUM_RMB:-0}))
- TOTAL_ROLE=$((TOTAL_ROLE + ${COUNT_ROLE:-0}))
- TOTAL_LOGIN_3DAYS=$((TOTAL_LOGIN_3DAYS + ${COUNT_LOGIN_3DAYS:-0}))
- done
- echo "========================================"
- echo "汇总结果:"
- echo "所有 ro* 数据库的总充值金额(美元): $TOTAL_RMB"
- echo "所有 ro* 数据库的总角色数量: $TOTAL_ROLE"
- echo "所有 ro* 数据库的最近三天总登录人数: $TOTAL_LOGIN_3DAYS"
|