正文
2)等待一段时间,回显输出 pfs mkfs succeeds!后,执行以下命令,启动PFS服务
sudo /usr/local/polarstore/pfsd/bin/start_pfsd.sh -p $PFSDISK
sudo /usr/local/bin/pfs -C disk mkdir $PFSDIR
排雷1:
注意:
在创建完PFS数据库目录,进行后续操作时有可能会提示找不到$PFSDIR,此时需要重启PFS服务。
常用PFS命令如下:
sudo /usr/local/polarstore/pfsd/bin/stop_pfsd.sh #停止PFS服务
sudo /usr/local/polarstore/pfsd/bin/start_pfsd.sh -p $PFSDISK #启动PFS服务
ps -ef |grep pfsdaemon|grep -v grep #检查pfs进程
排雷2:
注意:
在最开始安装时PFS使用的磁盘我添加了一块10g大小的,在后面数据库初始化过程中会报错,在往PFS磁盘中拷贝文件的时候会缺少文件。前期规划尽量多预留空间,否则后面排错起来很耽误时间。(不该省的地儿别瞎省,领导我电脑配置还够用:D)
部分报错信息:
[PFSD_SDK INF Oct 23 09:07:53.221552][12735]pfsd_open 517: open /sdb/data//global/pg_control: no such file
可以先检查PFS目录下是否真的copy了如下文件,我之前的失败安装只拷贝成功了base和global:
pfs -C disk ls /sdb/data #查看PFS文件系统目录
Dir 1 768 Mon Nov 2 15:21:06 2020 pg_wal
Dir 1 640 Fri Oct 30 10:44:47 2020 base
Dir 1 9344 Fri Oct 30 10:44:53 2020 global
Dir 1 0 Fri Oct 30 10:44:54 2020 pg_tblspc
Dir 1 128 Fri Oct 30 10:44:54 2020 pg_logindex
Dir 1 0 Fri Oct 30 10:44:54 2020 pg_twophase
Dir 1 128 Fri Oct 30 10:44:54 2020 pg_xact
Dir 1 0 Fri Oct 30 10:44:54 2020 pg_commit_ts
Dir 1 256 Fri Oct 30 10:44:54 2020 pg_multixact
Dir 1 0 Fri Oct 30 10:44:54 2020 pg_csnlog
Dir 1 512 Fri Oct 30 10:44:59 2020 polar_fullpage
Dir 1 0 Fri Oct 30 10:45:01 2020 pg_replslot
File 1 226 Fri Oct 30 10:45:01 2020 polar_non_exclusive_backup_label
total 8192 (unit: 512Bytes)
注意:
如果有PFS报错可以查PFS相关运行日志。
/var/log/pfsd-sdb.log
/var/log/pfsd-sdb/pfsd.log
su - polardb
initdb -D $PGDATA -E UTF8 --locale=C -U polardb
-E 参数指定数据库字符集,--locale 指定本地化参数,-U 指定初始化用户,其他的参数可以执行initdb --help 命令查看。
sudo /usr/local/polardb_o_current/bin/polar-initdb.sh $PGDATA/ $PFSDIR/ disk
该步骤会将$PGDATA中polardb的一些初始化数据文件copy至$PFSDIR文件系统中保存。
注意:
可以验证下/sdb/data下文件是否copy成功后,再启动数据库。
sudo /usr/local/bin/pfs -C disk ls $PFSDIR
[PFS_TRACE_LOG] [19726 ] trace_init notify_sock_name: /var/run/polartrace/polartrace.sock, 11
[PFS_TRACE_LOG] [19726 ] pfs trace start flush thread [140025597523712]
Dir 1 640 Tue Nov 3 11:00:10 2020 base
Dir 1 9344 Tue Nov 3 11:00:14 2020 global
Dir 1 0 Tue Nov 3 11:00:14 2020 pg_tblspc
Dir 1 256 Tue Nov 3 11:00:17 2020 pg_wal
Dir 1 128 Tue Nov 3 11:00:17 2020 pg_logindex
Dir 1 0 Tue Nov 3 11:00:18 2020 pg_twophase
Dir 1 128 Tue Nov 3 11:00:18 2020 pg_xact
Dir 1 0 Tue Nov 3 11:00:18 2020 pg_commit_ts
Dir 1 256 Tue Nov 3 11:00:19 2020 pg_multixact
Dir 1 0 Tue Nov 3 11:00:19 2020 pg_csnlog
total 0 (unit: 512Bytes)
初始化数据库集群后,数据库的参数文件 postgresql.conf 文件中都是默认参数,用户可以根据自身需要进行修改,常用修改的参数如下:
listen_addresses = '*' # 监听所有连接
port = 5432 # 监听端口 (后文成为$port)
max_connections = 2048 # 最大连接数
unix_socket_directories = '.' # socket文件地址目录
timezone = 'UTC-8' # 时区
log_timezone = 'UTC-8' # 日志时区
log_destination = 'csvlog' # 日志文件格式
logging_collector = on
log_directory = 'polardb_log' # 日志存放目录
polar_enable_shared_storage_mode=on
polar_hostid=1
polar_datadir='/sdb/data/' # PFS目录
polar_disk_name='sdb' # PFS设备名称
polar_storage_cluster_name=disk # PFS设备类型
wal_sender_timeout=30min #初始化备库过程中拉取wal日志进程超时设置
若修改postgresql.conf文件之前启动过数据库,确认$PGDATA/polar_node_static.conf是否存在,若存在则删除后再启动数据库。
以后每次修改postgresql.con文件中的polar_datadir、polar_disk_name、polar_hostid参数时,均需要删除$PGDATA/polar_node_static.conf文件再重启数据库确保修改后的参数生效。
为了实现其他机器对PolarDB数据库的访问,还需要修改访问控制文件,即
pg_hba.conf,一般是放开所有的ipv4的访问,也可以根据安全要求指定ip。
尾部添加如下配置:
vi $PGDATA/pg_hba.conf
host all all 0.0.0.0/0 md5
host replication all 0.0.0.0/0 md5
pg_ctl start -D $PGDATA -l /tmp/logfile
tail -f /tmp/logfile #查看数据库启动日志
pg_ctl stop -D $PGDATA #停库命令,此处不需要执行
PolarDB-O数据库启动成功之后,会在数据库目录下生成一个postmaster.pid,其中第一行是PolarDB-O守护进程pid,用户可以通过ps -a|grep守护进程pid可以得到所有的PolarDB-O进程,其中有如下几类常见辅助进程。
-
/usr/local/polardb_o_current/bin/polar-postgres -D /data
为PolarDB- O 的守护进程;
-
postgres: logger
为PolarDB-O 的打印日志进程;
-
postgres: checkpointer
为PolarDB-O 的周期性检查点进程;
-
postgres: background writer
为PolarDB-O 的周期性刷脏进程;
-
postgres: walwriter
为PolarDB-O 的定期WAL 日志刷盘进程;
-
postgres: autovacuum launcher
为PolarDB-O 的自动清理调度进程;
-
postgres: stats collector
为PolarDB-O 的统计信息收集进程。