雲部署(2)keepalived+postgresql主從切換
在主從部署成功後,主庫寫入資料會同步到備庫中。
keepalived檢測pgsql的狀態,當主庫停止時,keepalived會將自己殺死,vip移到備庫中,此時備庫對外提供服務,但是不能寫入。
下面配置主從切換後,從變成主,可讀寫。主變成從,只同步資料。
此時基於雲部署(1),我的兩個主從伺服器狀態同步正常
1.主從停掉postgres庫,然後主從的keepalived都會停止,最好再檢查一下讓它們都停止。
2.修改主從的配置檔案,如下:
[[email protected] keepalived]# cat keepalived.conf ! Configuration File for keepalived global_defs { notification_email { ***@qq.com } notification_email_from ***@***.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id ss } vrrp_script chk_pgsql { script "/etc/keepalived/pgsql_check.sh" interval 2 weight -5 fall 2 rise 1 } vrrp_instance VI_1 { state BACKUP #主從都是BACKUP interface eth0 virtual_router_id 51 priority 100 #從改成96 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_pgsql } virtual_ipaddress { 192.168.12.100 } }
3.修改主從的keepalived檢測指令碼,如下:
[[email protected] keepalived]# cat pgsql_check.sh #!/bin/bash A=`ps -C postgres --no-header | wc -l` #判斷pg是否活著 B=`ip a | grep 192.168.12.100 | wc -l` #判斷vip浮到哪裡 C=`ps -ef | grep postgres | grep 'startup process' | wc -l` #判斷是否是從庫處於等待的狀態 D=`ps -ef | grep postgres | grep 'receiver' | wc -l` #判斷從庫連結主庫是否正常 E=`ps -ef | grep postgres | grep 'sender' | wc -l` #判斷主庫連線從庫是否正常 if [ $A -eq 0 ];then #如果pg死了,將訊息寫入日記並且關閉keepalived echo "`date "+%Y-%m-%d--%H:%M:%S"` postgresql stop so vip stop " >> /etc/keepalived/check_pg.log systemctl stop keepalived else if [ $B -eq 1 -a $C -eq 1 -a $D -eq 0 ];then #判斷出主掛了,vip浮到了從,提升從的地位讓他可讀寫 su - postgres -c "pg_ctl promote -D /usr/local/pgsql/pgdata" echo "`date "+%Y-%m-%d--%H:%M:%S"` standby promote " >> /etc/keepalived/check_pg.log fi if [ $B -eq 1 -a $C -eq 0 -a $D -eq 0 -a $E -eq 0 ];then #判斷出自己是主並且和從失去聯絡 sleep 10 echo "`date "+%Y-%m-%d--%H:%M:%S"` can't find standby " >> /etc/keepalived/check_pg.log fi fi
依次啟動主pg,從pg,主keepalived,從keepalived
將firewalld、selinux關掉
檢測:
檢視ms與ss的資料庫是否一致,並在ms上寫入資料,再到ss上檢視是否同步過去了。若ms與ss主從同步沒有問題
cs上,連結vip寫入資料
[[email protected] pgsql]$ psql -h 192.168.12.100 psql (9.6.5) Type "help" for help. postgres=# \c hedb; You are now connected to database "hedb" as user "postgres". hedb=# select * from hetb; name | age ----------+----- heyajing | 24 heyaya | 23 (2 rows) hedb=# insert into hetb values('yayajing',25); INSERT 0 1 hedb=# select * from hetb; name | age ----------+----- heyajing | 24 heyaya | 23 yayajing | 25 (3 rows) hedb=#
再分別到主從上檢視是否都新生成一行資料,目前現象和(1)沒什麼區別
下面我們停掉主的pg
[[email protected] pgdata]$ pg_ctl stop -D $PGDATA
waiting for server to shut down.... done
server stopped
再向客戶端插入資料
hedb=# insert into hetb values('noco',21);
INSERT 0 1
hedb=#
成功,現在只有一臺伺服器執行(主ms已經停了),說明從庫ss現在的身份是主,不信你可以去從庫檢視並插入資料,
======
那麼ms故障恢復如何將它作為ss的從呢?
1.同步資料
這個地方最好弄read-wind但是我一直沒成功,如果後來成功我會更新的
暫時就用pg_basebackup吧
[[email protected] pgsql]$ cp pgdata pgdata.bbk -R
[[email protected] pgsql]$ rm -rf pgdata/*
[[email protected] pgsql]$ pg_basebackup -F p --progress -D $PGDATA -h 192.168.12.8 -p 5432 -U replica --password
Password:
37503/37503 kB (100%), 1/1 tablespace
NOTICE: WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup
[[email protected] pgsql]$
2.修改recovery.done表明自己降為從庫
[[email protected] pgdata]$ mv recovery.done recovery.conf
[[email protected] pgdata]$ vim recovery.conf
將host改為192.168.12.8
[[email protected] pgdata]$ pg_ctl start -D $PGDATA -l $PGDATA/logfile
server starting
[[email protected] pgdata]$ ps -ef | grep postgres
有從庫程序標誌
postgres 127141 127140 0 17:27 ? 00:00:00 postgres: startup process recovering 000000020000000000000007
postgres 127142 127140 0 17:27 ? 00:00:00 postgres: wal receiver process streaming 0/7000140
[[email protected] pgdata]$
看ss上是否有主庫程序標識:
[[email protected] pgdata]$ ps -ef | grep postgres
postgres 25704 25597 0 17:27 ? 00:00:00 postgres: wal sender process replica 192.168.12.7(45848) streaming 0/7000140 #有
3.檢測
cs 插入資料是ok的
ss與ms都可以檢視到,ms作為從只讀,但是此時ms的keepalived還沒有開啟,開啟後vip卻浮到了ms,這裡說明我的keepalived的配置有問題。這裡我只能手動降級。
還是覺得我的配置不嚴謹。
相關推薦
雲部署(2)keepalived+postgresql主從切換
在主從部署成功後,主庫寫入資料會同步到備庫中。 keepalived檢測pgsql的狀態,當主庫停止時,keepalived會將自己殺死,vip移到備庫中,此時備庫對外提供服務,但是不能寫入。 下面配置主從切換後,從變成主,可讀寫。主變成從,只同步資料。 此時基於雲部署(1
docke+jenkins+git自動打包部署(2)--jenkins網頁配置
上篇將jenkins在伺服器上跑起來了,這篇主要是將jenkins的外掛安裝和系統配置設定一下 瀏覽器輸入10.17.191.211:8080(上篇中跑jenkins的伺服器) 一、這裡的pas
CM部署(2):CM環境配置及安裝
一、機器分配 172.16.0.147 server(主節點)/agent mysql、namenode、resource manager、master、zookeeper、hiveserver、flume、SecondaryNamenode 172.16.0.115
teuthology安裝部署(2)
Tags: teuthology ceph 自動化測試 ceph自動化測試環境teuthology的安裝部署具體步驟 再次強調,本文所述均建立在Ubuntu14.0LTS系統之上,這是一個非常普通的系統,也是ceph官方推薦使用的。 本文中所克隆的源,有c
利用Helm簡化Kubernetes應用部署(2)
目錄 定義Charts 使用Helm部署Demo Helm常用操作命令 定義Charts 回到之前的“charts”目錄,我們依次進行解讀並進行簡單的修改。 Chart.yaml 配置示例:
部署Django到雲伺服器(centos+nginx+mysql+uwsgi+python3)【操作篇(2)】
接上篇操作篇(1):https://blog.csdn.net/jacky_zhuyuanlu/article/details/82880612 (七)建立Django專案 (1)建立資料夾,存放網站 mkdir -p /data/wwwroot
如何在阿里雲上部署django網站(2)——使用MySQL資料庫
如果要在阿里雲上部署django網站,建議不要使用django自帶的sqlite,雖然一時省事,但帶來了很多其他的麻煩。建議使用MySQL或者PostgreSQL。由於MySQL比較流行,我就選擇了MySQL。 安裝MySQL 在使用MySQL之前,首先需要安裝。在ubuntu系
基於rhel7.2的Zabbix平臺搭建和部署(一)
linux 監控軟件 zabbix nginx mysql php lnmp基於rhel7.2的zabbix平臺搭建和部署(一)一、實驗環境:(1)虛擬機:rhel7.2 x86_64(2)數據庫:mysql5.7.13(3)nginx1.10.2(4)PHP5.6.27(5)zabbix二、安裝編譯工具及
基於rhel7.2的Zabbix平臺搭建和部署(四)
linux 監控軟件 zabbix nginx mysql php lnmp基於rhel7.2的Zabbix平臺搭建和部署(四)一、實現zabbix添加監測項,添加對Linux主機的監控、說明:先在“配置”-“主機”裏添加主機監控,監控os資源:內存,cpu,io,負載,帶寬等.(1)登錄zabbix,先在
基於centos6的mysql5.7.13主從部署(一)
linux mysql5.7.13 安裝 部署基於centos6的mysql5.7.13主從部署(一)一、實驗環境:兩臺主機安裝Centos6.7 32位操作系統;兩臺Linux安裝同一版本的MySQL,這裏使用mysql5.7.13;mysql1的IP:192.168.100.129mysql2的IP:1
基於centos6的mysql5.7.13主從部署(二)
linux mysql主從 部署基於centos6的mysql5.7.13主從部署(二)一、部署主mysql說明:mysql1是主機,mysql2是備機。創建庫[[email protected]/* */ ~]# mysql -uroot -p123456mysql> create da
基於centos6的mysql5.7.13主從部署(三)
linux mysql主從 部署基於centos6的mysql5.7.13主從部署(三) 主從測試登入(主)mysql1[[email protected]/* */ ~]# mysql -uroot -p123456mysql> unlock tables; #解鎖,對應上一章節的表的
Spark入門實戰系列--2.Spark編譯與部署(中)--Hadoop編譯安裝
二進制包 1.10 不能 mapr 修復 att 機器 mave end 【註】該系列文章以及使用到安裝包/測試數據 能夠在《[傾情大奉送–Spark入門實戰系列] (http://blog.csdn.net/yirenboy/article/deta
微信小程序——豆瓣電影——(2):小程序運行部署
images 放心 覆蓋 當前 .cn markup 必須 global 定義 Demo 預覽 演示視頻(流量預警 2.64MB) GitHub Repo 地址 倉庫地址:https://github.com/zce/weapp-demo 使用步驟 將倉庫克隆到本地
LVS+keepalived高可用負載均衡集群部署(二)---LAMP網站服務器與LVS服務器
虛擬機l 系統環境: RHEL7 l 硬件環境:虛擬機l 項目描述:為解決網站訪問壓力大的問題,需要搭建高可用、負載均衡的 web集群。 l 架構說明:整個服務架構采用功能分離的方式部署。後端采用2臺mysql 數據庫,實現主從結構以及讀寫分離。中間LAMP網站服務器共有2臺, 前端 2臺LVS服務
(2)LVS+Keepalived高可用負載均衡架構原理及配置
LVS Keepalived1、keepalived 介紹2、keepalived 優缺點3、keepalived 應用場景4、keepalived 安裝配置5、keepalived+lvs 高可用6、keepalived+nginx 高可用7、keepalived 切換原理8、性能優化9、常見故障 一、k
MySQL主從復制雜記(2)
MySQL 主從復制 基礎 雜記MySQL主從復制架構及實現 雜項 1、設置從節點為只讀模式 MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE ‘read_only‘; +---------------+-------+ | Variable_name | Val
【AWS系列】鐳速RaySync VS FTP (2)- AWS巴西聖保羅到阿裏雲深圳
傳輸 測試 數據 鐳速 測試軟件信息 鐳速RaySync下載地址: Windows Server: https://www.raysync.cn/support_for_windows.html Linux Server: https://www.raysync.cn/support_for
統一日誌ELK部署配置(2)——kafka
日誌收集前提:你服務器上已經安裝並配置了java運行環境; 一、zookeeper安裝1、從zookeeper官網:http://zookeeper.apache.org/ 下載;我這裏下載的是zookeeper-3.4.9.tar.gz;2、解壓到你安裝目錄:tar-zxvf zookeeper-3.4.9
阿裏雲 centos7 64位搭建JAVA環境-----安裝JDK(2)
命令 是什麽 vim 文件 解壓縮 inf exp ima 發現 mysql安裝好以後,把jdk環境配置一下。 首先下載jdk 8,在官網下載。 找到鏈接 http://download.oracle.com/otn-pub/java/jdk/8u171-b11/51