shell脚本创建mysql分库分表库名从00开始16个库表名从0000开始每个库128张表共2048张表。hash数据写入示例
下面是一个示例的shell脚本,可以用来创建MySQL分库分表,并将数据按照hash算法写入相应的表中。
#!/bin/bash
# 设置MySQL登录信息
MYSQL_USER="your_mysql_user"
MYSQL_PASSWORD="your_mysql_password"
MYSQL_HOST="your_mysql_host"
MYSQL_PORT=3306
# 循环创建库和表
for ((i=0; i<16; i++))
do
# 格式化库名和表名
db_name=$(printf "%02d" $i)
for ((j=0; j<128; j++))
do
table_name=$(printf "%04d" $((i*128+j)))
# 创建库
mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -P$MYSQL_PORT -e "CREATE DATABASE IF NOT EXISTS $db_name;"
# 创建表
mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -P$MYSQL_PORT $db_name -e "CREATE TABLE IF NOT EXISTS $table_name (id INT AUTO_INCREMENT PRIMARY KEY, data VARCHAR(255));"
done
done
# 生成数据并写入表
for ((i=0; i<2048; i++))
do
# 生成随机数据
data=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
# 计算hash值
hash_value=$(echo -n $data | md5sum | awk '{print $1}')
db_index=$((16#${hash_value:0:2}))
table_index=$((128#${hash_value:2:4}))
# 写入数据到对应的表
db_name=$(printf "%02d" $db_index)
table_name=$(printf "%04d" $table_index)
mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -P$MYSQL_PORT $db_name -e "INSERT INTO $table_name (data) VALUES ('$data');"
done
请注意替换脚本中的以下变量为您自己的MySQL登录信息:
MYSQL_USER: MySQL用户名MYSQL_PASSWORD: MySQL密码MYSQL_HOST: MySQL主机名MYSQL_PORT: MySQL端口号
脚本首先使用循环创建16个库和每个库128张表。然后,它会生成随机数据,并使用hash算法计算出对应的库和表索引。最后,脚本将数据写入对应的表中。
请注意,这只是一个示例脚本,您可能需要根据自己的实际情况进行适当的修改和调整
原文地址: https://www.cveoy.top/t/topic/hOS9 著作权归作者所有。请勿转载和采集!