存放指令碼的伺服器需要安裝hgdb客戶端
[root@localhost ~]# groupadd -g 5866 highgo
[root@localhost ~]# useradd -u 5866 -g highgo highgo; echo highgo | passwd -f --stdin highgo
[root@localhost ~]# mkdir -p /data/highgo/4.0
[root@localhost ~]# chown -r highgo:highgo /data/
[highgo@localhost 4.0]$ tar -zxvf hgdbbak.tar.gz
設定highgo使用者的環境變數
export lang=c
export hg_home=/data/highgo/4.0
export pguser=highgo
export pgport=5866
export pgdata=/data/highgo/4.0/data
export path=$hg_home/bin:$path:$home/bin
export ld_library_path=$hg_home/lib:$ld_library_path
建立乙個存放指令碼的目錄,要有highgo使用者的屬組許可權
[root@hgdb01 psql]# pwd
/opt/psql
[root@hgdb01 psql]# ll
total 0
drwxrwxr-x. 2 highgo highgo 91 jun 23 21:09 psql_alert
指令碼內容,需要建立以下4個檔案,都需要有highgo使用者的屬組許可權
[root@hgdb01 psql_alert]# pwd
/opt/psql/psql_alert
[root@hgdb01 psql_alert]# ll
total 16
-rwx------. 1 highgo highgo 692 jun 23 21:08 mode.txt
-rwx------. 1 highgo highgo 305 jun 14 14:26 psql.exp
-rwx------. 1 highgo highgo 684 jun 14 14:21 psql.sh
-rwx------. 1 highgo highgo 111 jun 23 21:09 psql.sql
mode.txt 填寫資料庫的連線資訊
[root@hgdb01 psql_alert]# cat mode.txt
cluster 1
1 cldb_ip 192.168.16.110
1 db_name highgo
1 db_user highgo
1 db_pawd highgo
cluster 2
2 cldb_ip 192.168.16.111
2 db_name highgo
2 db_user highgo
2 db_pawd highgo
每個資料庫需要填寫5行資訊
cluster 指定資料庫的id號,從1開始,多個資料庫依次往下排序
cldb_ip 指定連線資料庫的ip位址
db_name 指定需要連線的資料庫名稱
db_user 指定連線資料庫的使用者名稱
db_pawd 指定連線資料庫的使用者密碼
psql -h cldb_ip -p 5866 -d db_name -u db_user -w 輸入密碼db_pawd
psql.sql檔案指定需要執行的sql語句
[root@hgdb01 psql_alert]# cat psql.sql
create table tb1 (id int);
insert into tb1 values (1);
insert into tb1 values (2);
insert into tb1 values (3);
psql.sh 執行程式
[root@hgdb01 psql_alert]# cat psql.sh
#!/bin/bash
basepath=$(cd `dirname $0`; pwd)
log=$basepath/alert_hgdb.log
cid=$(cat $basepath/mode.txt |grep ^cluster | awk '')
for id in $cid
do date=`date "+%y_%m_%d %h:%m:%s"`
echo $date "info, alter hgdb $id / $cid start" >> $log
cldb_ip=$(cat $basepath/mode.txt |grep ^"$id cldb_ip" | awk '')
db_name=$(cat $basepath/mode.txt |grep ^"$id db_name" | awk '')
db_user=$(cat $basepath/mode.txt |grep ^"$id db_user" | awk '')
db_pawd=$(cat $basepath/mode.txt |grep ^"$id db_pawd" | awk '')
expect $basepath/psql.exp $cldb_ip $db_name $db_user $db_pawd $basepath
echo $date "info, alter hgdb $id / $cid done" >> $log
done
當mode.txt和psql.sql修改完成後,以highgo使用者執行psql.sh,就可以批量執行相同的sql命令
[root@hgdb01 psql_alert]# su - highgo
[highgo@hgdb01 psql_alert]$ /opt/psql/psql_alert/psql.sh
psql.exp輔助執行指令碼
[root@hgdb01 psql_alert]# cat psql.exp
#!/usr/bin/expect
set cldb_ip [lindex $argv 0]
set db_name [lindex $argv 1]
set db_user [lindex $argv 2]
set db_pawd [lindex $argv 3]
set basepath [lindex $argv 4]
spawn psql -h $cldb_ip -p 5866 -u $db_user -d $db_name -f $basepath/psql.sql
expect "password for user $db_user:"
send "$db_pawd\r"
interact
HGDB如何提公升批量匯入資料的速度
目錄 文件用途 詳細資訊 文件用途 本文件用於提供幾個提公升瀚高資料庫批量匯入資料速度的方向,需要根據實際情況具體分析及選擇。詳細資訊 關閉自動提交 在批量插入資料時,如果每條資料都被自動提交,當中途出現系統故障時,不僅不能保障本次批量插入的資料一致性,而且由於有多次提交操作的發生,整個插入效率也會...
Redis批量執行命令
只需要兩步驟!建議直接找台linux伺服器,使用linux自帶的文字編輯,避免window linux換行符不一致,還需要做換行的轉換。新建命令文件 vim batch.txt batch.txt中輸入批量命令 lpush batch queue 1 lpush batch queue 2 lpus...
polysh批量執行shell命令
wget tar zxvf polysh 0.4.tar.gz cd polysh 0.4 sudo python setup.py install usage usr bin polysh options hosts.control commands are prefixed by use hel...