pull/156/head
midoks 3 years ago
parent cec9c3a23d
commit 6775934a0d
  1. 3
      plugins/postgresql/conf/postgresql.conf
  2. 64
      plugins/postgresql/index.py
  3. 11
      plugins/postgresql/js/postgresql.js

@ -31,11 +31,12 @@ default_text_search_config = 'pg_catalog.simple'
# 从配置
#primary_conninfo = 'host=192.168.0.100 port=5432 user=replica password=123456'
#hot_standby = on
#primary_conninfo = 'host=192.168.0.100 port=5432 user=replica password=123456'
#max_standby_streaming_delay = 30s
#wal_receiver_status_interval = 10s
#hot_standby_feedback = on
#recovery_target_timeline= 'latest'
logging_collector = on

@ -141,9 +141,8 @@ def contentReplace(content):
return content
def pSqliteDb(dbname='databases'):
file = getServerDir() + '/pgsql.db'
name = 'pgsql'
def pSqliteDb(dbname='databases', name='pgsql'):
file = getServerDir() + '/' + name + '.db'
if not os.path.exists(file):
conn = mw.M(dbname).dbPos(getServerDir(), name)
csql = mw.readFile(getPluginDir() + '/conf/pgsql.sql')
@ -1139,6 +1138,8 @@ def setSlaveStatus(version):
data = data.replace('#wal_receiver_status_interval',
'wal_receiver_status_interval')
data = data.replace('#hot_standby_feedback', 'hot_standby_feedback')
data = data.replace('#recovery_target_timeline',
'recovery_target_timeline')
else:
data = data.replace('hot_standby', '#hot_standby')
data = data.replace('primary_conninfo', '#primary_conninfo')
@ -1147,6 +1148,8 @@ def setSlaveStatus(version):
data = data.replace('wal_receiver_status_interval',
'#wal_receiver_status_interval')
data = data.replace('hot_standby_feedback', '#hot_standby_feedback')
data = data.replace('#recovery_target_timeline',
'recovery_target_timeline')
mw.writeFile(pg_conf, data)
@ -1157,6 +1160,9 @@ def setSlaveStatus(version):
def getSlaveList(version=''):
db = pgDb()
res = db.execute('select * from pg_stat_replication')
# print(res)
# dlist = db.query('show slave status')
# ret = []
# for x in range(0, len(dlist)):
@ -1182,7 +1188,7 @@ def getSlaveSSHByIp(version=''):
ip = args['ip']
conn = pSqliteDb('slave_id_rsa')
conn = pSqliteDb('slave_id_rsa', 'pgsql_slave')
data = conn.field('ip,port,db_user,id_rsa').where("ip=?", (ip,)).select()
return mw.returnJson(True, 'ok', data)
@ -1196,7 +1202,7 @@ def getSlaveSSHList(version=''):
page = int(args['page'])
page_size = int(args['page_size'])
conn = pSqliteDb('slave_id_rsa')
conn = pSqliteDb('slave_id_rsa', 'pgsql_slave')
limit = str((page - 1) * page_size) + ',' + str(page_size)
field = 'id,ip,port,db_user,id_rsa,ps,addtime'
@ -1227,24 +1233,23 @@ def addSlaveSSH(version=''):
if ip == "":
return mw.returnJson(True, 'ok')
data = checkArgs(args, ['port', 'id_rsa', 'db_user'])
data = checkArgs(args, ['port', 'id_rsa'])
if not data[0]:
return data[1]
id_rsa = args['id_rsa']
port = args['port']
db_user = args['db_user']
user = 'root'
addTime = time.strftime('%Y-%m-%d %X', time.localtime())
conn = pSqliteDb('slave_id_rsa')
conn = pSqliteDb('slave_id_rsa', 'pgsql_slave')
data = conn.field('ip,id_rsa').where("ip=?", (ip,)).select()
if len(data) > 0:
res = conn.where("ip=?", (ip,)).save(
'port,id_rsa,db_user', (port, id_rsa, db_user))
'port,id_rsa', (port, id_rsa,))
else:
conn.add('ip,port,user,id_rsa,db_user,ps,addtime',
(ip, port, user, id_rsa, db_user, '', addTime))
conn.add('ip,port,user,id_rsa,ps,addtime',
(ip, port, user, id_rsa, '', addTime))
return mw.returnJson(True, '设置成功!')
@ -1257,7 +1262,7 @@ def delSlaveSSH(version=''):
ip = args['ip']
conn = pSqliteDb('slave_id_rsa')
conn = pSqliteDb('slave_id_rsa', 'pgsql_slave')
conn.where("ip=?", (ip,)).delete()
return mw.returnJson(True, 'ok')
@ -1270,7 +1275,7 @@ def updateSlaveSSH(version=''):
ip = args['ip']
id_rsa = args['id_rsa']
conn = pSqliteDb('slave_id_rsa')
conn = pSqliteDb('slave_id_rsa', 'pgsql_slave')
conn.where("ip=?", (ip,)).save('id_rsa', (id_rsa,))
return mw.returnJson(True, 'ok')
@ -1370,6 +1375,37 @@ def delMasterRepSlaveUser(version=''):
return mw.returnJson(True, '删除成功!')
def getMasterRepSlaveUserCmd(version=''):
args = getArgs()
data = checkArgs(args, ['username', 'db'])
if not data[0]:
return data[1]
psdb = pSqliteDb('master_replication_user')
mdir = getServerDir()
port = getPgPort()
localIp = mw.getLocalIp()
f = 'username,password'
username = args['username']
if username == '':
clist = psdb.field(f).limit('1').order('id desc').select()
else:
clist = psdb.field(f).where(
"username=?", (username,)).order('id desc').select()
if len(clist) == 0:
return mw.returnJson(False, '请添加同步账户!')
cmd = mdir + '/bin/pg_basebackup -Fp --progress -D ' + mdir + \
'/postgresql/data -h ' + localIp + ' -p ' + port + \
' -U ' + clist[0]['username'] + ' --password'
data = {}
data['cmd'] = cmd
data['info'] = clist
return mw.returnJson(True, 'ok!', data)
def installPreInspection(version):
return 'ok'
@ -1475,5 +1511,7 @@ if __name__ == "__main__":
print(addMasterRepSlaveUser(version))
elif func == 'del_master_rep_slave_user':
print(delMasterRepSlaveUser(version))
elif func == 'get_master_rep_slave_user_cmd':
print(getMasterRepSlaveUserCmd(version))
else:
print('error')

@ -935,7 +935,8 @@ function getMasterRepSlaveList(){
list += '<tr><td>'+name+'</td>\
<td>'+user_list[i]['password']+'</td>\
<td>\
<a class="btlink" onclick="delMasterRepSlaveUser(\''+name+'\');">删除</a> \
<a class="btlink" onclick="delMasterRepSlaveUser(\''+name+'\');">删除</a> | \
<a class="btlink" onclick="getMasterRepSlaveUserCmd(\''+name+'\');">从库同步命令</a> \
</td>\
</tr>';
}
@ -1049,9 +1050,9 @@ function addSlaveSSH(ip=''){
db_user = rdata.data[0]['db_user'];
}
var index = layer.open({
layer.open({
type: 1,
area: ['500px','480px'],
area: ['500px','450px'],
title: '添加SSH',
closeBtn: 1,
shift: 5,
@ -1060,7 +1061,6 @@ function addSlaveSSH(ip=''){
content: "<form class='bt-form pd20'>\
<div class='line'><span class='tname'>IP</span><div class='info-r'><input name='ip' class='bt-input-text mr5' type='text' style='width:330px;' value='"+ip+"'></div></div>\
<div class='line'><span class='tname'>端口</span><div class='info-r'><input name='port' class='bt-input-text mr5' type='number' style='width:330px;' value='"+port+"'></div></div>\
<div class='line'><span class='tname'>同步账户[DB]</span><div class='info-r'><input name='db_user' placeholder='!' class='bt-input-text mr5' type='text' style='width:330px;' value='"+db_user+"'></div></div>\
<div class='line'>\
<span class='tname'>ID_RSA</span>\
<div class='info-r'><textarea class='bt-input-text mr5' row='20' cols='50' name='id_rsa' style='width:330px;height:200px;'></textarea></div>\
@ -1131,7 +1131,6 @@ function getSlaveSSHPage(page=1){
list += '<tr><td>'+ip+'</td>\
<td>'+port+'</td>\
<td>'+db_user+'</td>\
<td>'+id_rsa+'</td>\
<td>\
<a class="btlink" onclick="addSlaveSSH(\''+ip+'\');">修改</a> | \
@ -1158,7 +1157,7 @@ function getSlaveSSHList(page=1){
content:"<div class='bt-form pd20 c6'>\
<div class='divtable mtb10'>\
<div><table class='table table-hover get-slave-ssh-list'>\
<thead><tr><th>IP</th><th>PORT</th><th></th><th>SSH</th><th></th></tr></thead>\
<thead><tr><th>IP</th><th>PORT</th><th>SSH</th><th></th></tr></thead>\
<tbody></tbody>\
</table></div>\
"+page +"\

Loading…
Cancel
Save