迁移pgsql从数据库(原先数据库架构为主从同步)
迁移pgsql从数据库
将原先的1.56服务器上的从数据库迁移至1.62服务器上
1、安装依赖包
yum -y install readline gcc -y readline-devel zlib-devel
2、下载对应版本的pgsql并解压编译安装
下载地址: https://www.postgresql.org/ftp/source/
tar -xvf postgresql-11.6.tar.gz
mkdir -p /home/data/postgresql-11.6
cd postgresql-11.6
./configure --prefix=/home/data/postgresql-11.6 --with-blocksize=8 && make && make install
需要注意--with-blocksize=8
如果主数据库编译安装时指定了块大小,那么从数据库也需要指定块大小
反之则不需要指定
查看块大小的命令:SHOW block_size;
在主数据库登录的pgsql里
输入sql语句
SHOW block_size;
显示:
+------------+
| block_size |
+------------+
| 8192 |
+------------+
1 row in set
那么证明主服务器的块大小位8192
编译安装的时候就需要使用--with-blocksize=8
8等于8192
3、创建相应的用户
groupadd postgres
useradd -g postgres postgres
创建数据及日志目录,并做相应授权
mkdir -p /home/data/postgresql-11.6/{data,log}
chown -R postgres:postgres /home/data/postgresql-11.6
4、初始化数据库
切换至postgres用户
su - postgres
cd /home/data/postgresql-11.6/bin
./initdb -D /home/data/postgresql-11.6/data/
如果不想切换路径
嫌弃麻烦 需配置环境变量
还是用postgres用户操作
[postgres@localhost ~]$vim .bash_profile
在上面的目录下去编辑
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
#加以下配置
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/home/data/postgresql-11.6/bin
export PATH
立即生效
source .bash_profile
5、初始化并启动数据库
initdb -D /home/data/postgresql-11.6/data/
pg_ctl start -D /home/data/postgresql-11.6/data -l /home/data/postgresql-11.6/log/postgres.log
6、成功启动后,暂时先不登录数据库设置密码
6.1关闭数据库服务
pg_ctl stop -D /home/data/postgresql-11.6/data -l /home/data/postgresql-11.6/log/postgres.log
6.2因为上面初始化了,所以需要将data目录删掉
并创建一个空的相同的目录
cd /home/data/postgresql-11.6
mv data bakdata
mkdir data
6.3切换至root用户
修改文件夹权限
chown -R postgres:postgres /home/data/postgresql-11.6
chmod 0700 /home/data/postgresql-11.6/data
6.4同步主库的数据文件
切换至postgres用户进行操作
注意:以下都是用postgres用户进行操作的
su - postgres
pg_basebackup -Fp --progress -D /home/data/postgresql-11.6/data -h 192.168.1.55 -p 5432 -U repl --password
输入密码
repl
耐心等待
关于主库如何创建同步的用户以及设置同步用户的密码
可以参考这篇博客:https://www.cnblogs.com/likecoke/p/15715095.html
7、从模板文件拷贝到data目录
cp /home/data/postgresql-11.6/share/recovery.conf.sample /home/data/postgresql-11.6/data/recovery.conf
vim /home/data/postgresql-11.6/data/recovery.conf
添加以下配置
standby_mode = on # 这个说明这台机器为从库
primary_conninfo = 'host=192.168.1.55 port=5432 user=repl password=repl' # 这个说明这台机器对应主库的信息
recovery_target_timeline = 'latest' # 这个说明这个流复制同步到最新的数据
8、修改从库postgresql.conf文件
vim /home/data/postgresql-11.6/data/postgresql.conf
修改如下内容项:
max_connections = 1000 #一般查多于写的应用从库的最大连接数要比较大
hot_standby = on #说明这台机器不仅仅是用于数据归档,也用于数据查询
max_standby_streaming_delay = 30s #数据流备份的最大延迟时间
wal_receiver_status_interval = 1s #多久向主报告一次从的状态,当然从每次数据复制都会向主报告状态,这里只是设置最长的间隔时间
hot_standby_feedback = on #如果有错误的数据复制,是否向主进行反馈
9、启动库
记得给data目录0700权限
chmod 0700 /home/data/postgresql-11.6/data
pg_ctl start -D /home/data/postgresql-11.6/data -l /home/data/postgresql-11.6/log/postgres.log
10、登录pgsql设置密码
su - postgres
psql
ALTER USER postgres WITH PASSWORD 'Q9FBxoCwZoMrPO26';