python实现一种检测postgresql数据库是否已经连接且为主节点的办法
生活随笔
收集整理的這篇文章主要介紹了
python实现一种检测postgresql数据库是否已经连接且为主节点的办法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
背景
在高可用的背景下,有的時候會發(fā)生數(shù)據(jù)庫主從切換。python實現(xiàn)檢測當(dāng)前數(shù)據(jù)庫是否切換成功
方法核心思想
select pg_is_in_recovery();通過執(zhí)行這一條sql語句來判斷,當(dāng)前的數(shù)據(jù)庫是否為主節(jié)點。同時,假如語句執(zhí)行成功,則自然而然證明,該數(shù)據(jù)庫已經(jīng)可用。
代碼實現(xiàn)
實現(xiàn)前需要安裝peewee和psycopg2包
import time from datetime import datetime from playhouse.db_url import connectdb_url_ip = "192.168.149.171" db_url = "postgresql+pool://postgres:620stz^@)@cn@" + db_url_ip + ":" + "5432" + "/mydb" db = connect(url=db_url) time_start = datetime.now()while True:try:cursor = db.execute_sql('select pg_is_in_recovery();')is_backup = cursor.fetchall()[0][0]print(is_backup)if not is_backup:# 判定這個不是一個備節(jié)點print("連接成功")breakexcept Exception as e:print("連接失敗,判斷是否已經(jīng)超時")time_now = datetime.now()if (time_now - time_start).seconds > 60:# 判定出,連接已經(jīng)超時breakelse:time.sleep(1)結(jié)果
在執(zhí)行開始前停掉postgresql,在執(zhí)行中開啟postgresql
?
總結(jié)
以上是生活随笔為你收集整理的python实现一种检测postgresql数据库是否已经连接且为主节点的办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux IO路径图
- 下一篇: Linux下sed命令替换配置文件中某个