initkeyspace.sh 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. export LANG=zh_CN.utf8
  2. export LC_ALL=zh_CN.utf8
  3. #改变工作目录到当前脚本所在路径
  4. if [[ "$0" =~ / ]]; then cd "${0%/*}"; fi
  5. export CWD=`pwd`
  6. keyspace=$1
  7. clearkeyspace() {
  8. if [[ "${keyspace}" != *"test"* ]]; then
  9. echo "can't clear keyspace ${keyspace}"
  10. exit 1
  11. fi
  12. datapath=`cat -n /opt/matrix/cassandra/conf/cassandra.yaml | grep "data_file_directories:" | awk '{print 1+$1}' | xargs -i% sed -n %p /opt/matrix/cassandra/conf/cassandra.yaml | awk '{print $2}'`
  13. echo
  14. echo "ls -l \"${datapath}\""
  15. eval "cd \"${datapath}\""
  16. ksroot=`ls | grep "^${keyspace}$"`
  17. ksbitlog=`ls | grep "^${keyspace}.*bitlog$"`
  18. ksnative=`ls | grep "^${keyspace}.*native$"`
  19. kstsdb=`ls | grep "^${keyspace}.*tsdb$"`
  20. echo ${ksroot}
  21. echo ${ksbitlog}
  22. echo ${ksnative}
  23. echo ${kstsdb}
  24. echo "ls -lR ${keyspace}* | wc"
  25. ls -lR ${keyspace}* | wc
  26. cd /opt/matrix/cassandra/bin
  27. ./cqlsh -u cassandra -p cassandra << EOF
  28. desc keyspaces;
  29. exit;
  30. EOF
  31. # drop keyspace
  32. if [[ "$1" = "drop" ]]; then
  33. echo drop keyspace ${ksroot} ...
  34. ./cqlsh -u cassandra -p cassandra << EOF
  35. drop keyspace ${ksroot};
  36. exit;
  37. EOF
  38. echo drop keyspace ${ksbitlog} ...
  39. ./cqlsh -u cassandra -p cassandra << EOF
  40. drop keyspace ${ksbitlog};
  41. exit;
  42. EOF
  43. echo drop keyspace ${ksnative} ...
  44. ./cqlsh -u cassandra -p cassandra << EOF
  45. drop keyspace ${ksnative};
  46. exit;
  47. EOF
  48. echo drop keyspace ${kstsdb} ...
  49. ./cqlsh -u cassandra -p cassandra << EOF
  50. drop keyspace ${kstsdb};
  51. exit;
  52. EOF
  53. ./cqlsh -u cassandra -p cassandra << EOF
  54. desc keyspaces;
  55. exit;
  56. EOF
  57. fi # drop
  58. echo
  59. echo "ls -l \"${datapath}\""
  60. eval "cd \"${datapath}\""
  61. ls -l
  62. echo
  63. echo "removing keyspace ${keyspace} data ..."
  64. rm -rf ${ksroot}
  65. rm -rf ${ksbitlog}
  66. rm -rf ${ksnative}
  67. rm -rf ${kstsdb}
  68. ls -l
  69. }
  70. # 传播并执行脚本
  71. spread() {
  72. args="$* "
  73. echo "args='$args'"
  74. host1=27.193.12.228
  75. host2=27.193.12.229
  76. host3=27.193.12.230
  77. host4=27.193.12.231
  78. host5=27.193.12.232
  79. host228=27.193.12.228
  80. host229=27.193.12.229
  81. host230=27.193.12.230
  82. host231=27.193.12.231
  83. host232=27.193.12.232
  84. while [[ "${args}" != "" ]]; do
  85. an=`echo $args | awk -F ' ' '{print $1}'`
  86. ip=`eval "echo $""{host${an}}"`
  87. args=`eval "echo $""{args:${#an}}"`
  88. echo "$an: $ip"
  89. if [[ "${ip}" != "" ]]; then
  90. ./msh p=matrix "sftp matrix@${ip}" "mkdir /opt/matrix/test" "cd /opt/matrix/test" "put initkeyspace.sh" "ls -lrt"
  91. ./msh p=matrix "ssh matrix@${ip}" "/opt/matrix/test/initkeyspace.sh ${keyspace} clear"
  92. sleep 2
  93. fi
  94. done
  95. }
  96. if [[ "$2" = "clear" ]]; then
  97. echo "clear keyspace ${keyspace}"
  98. clearkeyspace
  99. elif [[ "${keyspace}" != "" ]]; then
  100. clearkeyspace drop
  101. cd "$CWD"
  102. if [[ "${SSH_CONNECTION}" = *"27.193.12.228"* ]]; then
  103. spread 2 3 4
  104. fi
  105. echo
  106. echo "init keyspace ${keyspace} ..."
  107. cd /opt/matrix/init
  108. ./init -keyspace=${keyspace} -silent
  109. else
  110. echo "initkeyspace.sh <keyspacename>"
  111. fi