01 PostgreSQL数据库部署-linux
<h2>概述</h2>
<h3>1.适用范围</h3>
<p>本文档适用对象为具备一定 Linux/PG 基础知识的人员,在 CentOS Linux 操作系统下安装部署开源 PostgreSQL12(文中亦简称 PG 或 PG12)单机数据库环境。 本文档仅适用于 x86 架构 PC server 或虚拟机环境,请挑选相应章节阅读。不适用于Power/SPARK 等其他架构环境。</p>
<h3>2.安装规划</h3>
<p>在进行操作系统及数据库安装前,请务必先做好安装规划,可参照本节推荐配置进行。</p>
<h4>(1).版本规划</h4>
<p>以下是本文档采用软件版本信息,生产环境请严格按照下表所列软件进行安装。
</p>
<p>此次安装所需的 PostgreSQL 安装包,可从官网获取: Database 安装包:<a href="https://ftp.postgresql.org/pub/source/v12.11/postgresql-12.11.tar.gz">https://ftp.postgresql.org/pub/source/v12.11/postgresql-12.11.tar.gz</a>
</p>
<h4>(2).数据存储规划</h4>
<p>以下是安装开始前的存储规划信息,请仔细阅读并做好规划。在生产环境,建议满足下表所列规划项目所列出的要求。

注意:生产环境下,本地磁盘或者外接存储都必须做 RAID 组磁盘冗余,首选 RAID10 (至少 4 块盘),其次可选 RAID1(2 块盘镜像)或 RAID5(3 块盘以上冗余校验)。</p>
<h2>安装步骤</h2>
<h3>PG安装配置</h3>
<h4>(1).安装 PG 数据库</h4>
<p>PG 数据库通过编译的方式安装,首先需要一些依赖包的支持,如 zlib、C 等,可参考用 yum 的方式简化步骤:</p>
<pre><code>[root@mesdb ~]# yum -y install readline readline-devel zlib zlib-devel gcc make wget</code></pre>
<p>【注意】如果你的 yum 报错,那么请检查服务器的 DNS 和 yum 配置文件里的 http 地址是否 正确可达。如果是内网环境,可参考以下步骤配置 挂载系统光盘或操作系统镜像并配置 yum 源:</p>
<pre><code>[root@mesdb ~]# mkdir -p /mnt/iso #以镜像为例
[root@mesdb ~]# mount -o loop CentOS-7-x86_64-DVD-2009.iso /mnt/iso/ # 将上传的镜 像文件
CentOS-7-x86_64-DVD-2009.iso 挂载到/mnt/iso 目录
[root@mesdb ~]# cd /etc/yum.repos.d/
[root@mesdb yum.repos.d]# mkdir bak
[root@mesdb yum.repos.d]# mv *.repo ./bak/
[root@mesdb yum.repos.d]# vi private-yum.repo
#添加如下内容:
[linux-source]
name=Linux $releasever - $basearch - Source
baseurl=file:///mnt/iso
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
#最后清空一下旧 yum 信息,即可开始 yum 操作
[root@mesdb yum.repos.d]# yum clean all</code></pre>
<p>安装好依赖包后,创建用户并解压安装包后编译安装 PG 数据库</p>
<pre><code>[root@mesdb ~]# useradd postgres
[root@mesdb ~]# passwd postgres
#设置 postgres 用户密码
[root@mesdb ~]# tar -zxvf postgresql-12.11.tar.gz
[root@mesdb ~]# cd postgresql-12.11
[root@mesdb postgresql-12.11]# ./configure --prefix=&#039;/home/postgres/pgsql&#039;
# 此处省略部分输出...
config.status: linking src/backend/port/posix_sema.c to src/backend/port/pg_sema.c
config.status: linking src/backend/port/sysv_shmem.c to src/backend/port/pg_shmem.c
config.status: linking src/backend/port/dynloader/linux.h to src/include/dynloader.h
config.status: linking src/include/port/linux.h to src/include/pg_config_os.h
config.status: linking src/makefiles/Makefile.linux to src/Makefile.port
[root@mesdb postgresql-12.11]# make
# 此处省略部分输出...
make -C config all
make[1]: Entering directory `/root/postgresql-12.11/config&#039;
make[1]: Nothing to be done for `all&#039;.
make[1]: Leaving directory `/root/postgresql-12.11/config&#039;
All of PostgreSQL successfully made. Ready to install.
[root@mesdb postgresql-12.11]# make install
# 此处省略部分输出...
make -C config install
make[1]: Entering directory `/root/postgresql-12.11/config&#039;
/usr/bin/mkdir -p &#039;/home/postgres/pgsql/lib/pgxs/config&#039;
/usr/bin/install -c -m 755 ./install-sh &#039;/home/postgres/pgsql/lib/pgxs/config/install-sh&#039;
/usr/bin/install -c -m 755 ./missing &#039;/home/postgres/pgsql/lib/pgxs/config/missing&#039;
make[1]: Leaving directory `/root/postgresql-12.11/config&#039;
PostgreSQL installation complete.</code></pre>
<p>至此,PG 数据库软件安装结束。接下来需要配置数据库的路径、访问许可、扩展插件等。</p>
<h4>(2).配置 PG 数据库</h4>
<p>安装好数据库软件,这时候数据库还不能用,我们还要初始下数据库。</p>
<pre><code>[root@mesdb postgresql-12.11]# mkdir -p /pgsql/data
[root@mesdb postgresql-12.11]# chown -R postgres:postgres /pgsql/
[root@mesdb postgresql-12.11]# chown -R postgres:postgres /home/postgres/pgsql/
[root@mesdb postgresql-12.11]# su - postgres
Last login: Mon Jan 14 13:31:52 CST 2019 on pts/0
[postgres@mesdb ~]$ /home/postgres/pgsql/bin/initdb -E UNICODE -D /pgsql/data/
#一定要在非 root 用户(postgres 用户)下初始数据库。
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb. Success. You can now start the database server using:
/home/postgres/pgsql/bin/pg_ctl -D /pgsql/data/ -l logfile start
#数据目录(data)和后续表空间目录(tbs)要放在硬盘类型和空间适当的磁盘中
#空间应符合前期规划,磁盘类型为SSD或转速大于10K的机械硬盘中
[postgres@mesdb ~]$ /home/postgres/pgsql/bin/pg_ctl -D /pgsql/data/ -l logfile start
waiting for server to start.... done
server started
#按提示,尝试启动数据库成功</code></pre>
<p>数据库初始成功后,我们还要配置环境变量并开放访问权限给其他客户端访问。</p>
<pre><code>[postgres@mesdb ~]$ vi ~/.bash_profile
#末尾添加。PGHOME 指 PG 的安装路径,PGDATA 指 1.3.2 节规划的 PG 数据文件的路径
export PGHOME=/home/postgres/pgsql/
export PATH=$PGHOME/bin:$PATH
# 注:PGDATA设置请谨慎,命令df -h 查看磁盘大小,建议优先将此目录设置到最大盘。
export PGDATA=/pgsql/data/
export LD_LIBRARY_PATH=$PGHOME/lib
[postgres@mesdb ~]$ source .bash_profile
[postgres@mesdb ~]$ vi $PGDATA/pg_hba.conf
# 修改配置文件的 IPv4 部分,允许所有机器
# &quot;local&quot; is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 0.0.0.0/0 md5
[postgres@mesdb ~]$ vi $PGDATA/postgresql.conf
#取消 listen_addresses 前面的“#”,并修改监听地址为’*’ # - Connection Settings -
listen_addresses = &#039;*&#039; # what IP address(es) to listen on;
# comma-separated list of addresses;
# 最大连接会话数
max_connections = 500
# 配置分布式事务并发数量(2PC的prepared准备阶段)
max_prepared_transactions = 500
logging_collector = on
log_directory = &#039;pg_log&#039; 只保留七天的日志,进行循环覆盖
log_filename = &#039;postgresql-%a.log&#039; log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 0</code></pre>
<p>修改完成后,重启 PG 数据库:</p>
<pre><code>[postgres@mesdb ~]$ pg_ctl stop -m fast
waiting for server to shut down.... done
server stopped
[postgres@mesdb ~]$ pg_ctl start</code></pre>
<p>使用 root 用户添加开机启动:</p>
<pre><code>[postgres@mesdb ~]$ su - root
[root@mesdb ~]$ vi /etc/rc.d/rc.local
#增加一行。其中/home/postgres/pgsql/data/ 指数据目录
su postgres -lc &quot;pg_ctl -D /home/postgres/pgsql/data/ start&quot;
[root@mesdb ~]$ chmod +x /etc/rc.d/rc.local</code></pre>
<p>到此,数据库软件的安装和初始配置完成。但是目前只是有实例的数据库软件,没有数据库。 而且只是可以使用 PG 数据库的基本功能,为了使用 PG 的一些扩展功能,我们还要安装一些扩展插件。</p>
<h3>4. 安装PG数据库扩展</h3>
<h4>(1).安装 UUID 扩展</h4>
<p>我们经常会使用到 uuid_generate_v4()这个 UUID 函数,但是默认 PG 是不会安装这个扩展的,我们要自己安装,如下: 打开 <a href="https://yum.postgresql.org/repopackages.php,找到所使用的操作系统对应插件包下载链">https://yum.postgresql.org/repopackages.php,找到所使用的操作系统对应插件包下载链</a> 接 , 比如我们用的是 CentOS7-x86 版 (主流Intel/AMD CPU 版本), 那么就下载这个包 ( <a href="https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noa">https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noa</a> rch.rpm --no-check-certificate),然后安装下载的 rpm 文件。</p>
<pre><code>[root@mesdb ~]# wget https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
--no-check-certificate
#安装扩展 rpm 包
[root@mesdb ~]# yum -y install pgdg-redhat-repo-latest.noarch.rpm
#如果你的服务器直通公网,那么你可以进行如下操作安装扩展组件:
[root@mesdb ~]# yum -y install postgresql12-contrib
[root@mesdb ~]# \cp -r /usr/pgsql-12/share/extension/* /home/postgres/pgsql/share/extension/
[root@mesdb ~]# cp /usr/pgsql-12/lib/uuid-ossp.so /home/postgres/pgsql/lib/
#如果你的服务器没法通到公网,那么你也可以在另一台能通公网的同平台 Linux 上安装好,然后再拷贝
#$PGHOME/lib/uuid-ossp.so 文件到对应目录,且拷贝$PGHOME/share/extension/uuid-ossp* 到对应目录也可完成以上步骤。
[root@mesdb ~]# chown -R postgres:postgres /home/postgres/pgsql/share/extension/</code></pre>
<p>完成扩展下载后,即可到 postgres 用户的 psql 数据库里安装 UUID 扩展,演示如下:</p>
<pre><code>[root@mesdb ~]# su - postgres
[postgres@mesdb ~]$ psql
postgres=# create extension &quot;uuid-ossp&quot;; --安装 UUID 扩展
CREATE EXTENSION
postgres=# alter extension &quot;uuid-ossp&quot; set schema pg_catalog;
postgres=# select uuid_generate_v4();
uuid_generate_v4
-------------------------------------- 12bf66c8-4ff5-453b-af02-a8541b2a6ef4
(1 row)
postgres=#</code></pre>
<p>可以正常查到 uuid 的值,UUID 扩展安装成功。</p>
<h4>(2).安装 pldebugger 扩展</h4>
<p>类似的,我们也需要对 PG 安装 debug 扩展,这样就可以用 Navicat、PGAdmin、Dbeaver 等 工具直接右键调试 PG 了。步骤如下:</p>
<pre><code>[root@mesdb ~]# yum install -y pldebugger12
[root@mesdb ~]# cp -r /usr/pgsql-12/share/extension/pldbgapi* /home/postgres/pgsql/share/extension/
[root@mesdb ~]# cp /usr/pgsql-12/lib/plugin_debugger.so /home/postgres/pgsql/lib/</code></pre>
<p>需要注意的是,本小节接上一小节的 postgresql12-contrib 安装,必须先完成上一小节的操作。 如果你的服务器没法通到公网,那么你也可以在另一台能通公网的同平台 Linux 上安装好, 然后再拷贝 $PGHOME/lib/plugin_debugger.so 文件到对应目录, 且拷贝$PGHOME/share/extension/pldbgapi* 到对应目录也可完成以上步骤,然后安装扩展。</p>
<pre><code>[root@mesdb ~]# su - postgres
[postgres@mesdb lib]$ vi $PGDATA/postgresql.conf
#编辑 shared_preload_libraries 参数,写入 plugin_debugger.so 的完整路径
#shared_preload_libraries = &#039;/home/postgres/pgsql/lib/plugin_debugger.so&#039;</code></pre>
<p>重启 PG 数据库,并安装 debug 扩展</p>
<pre><code>[postgres@mesdb ~]$ pg_ctl stop
[postgres@mesdb ~]$ pg_ctl start
[postgres@mesdb ~]$ psql
postgres=# create extension pldbgapi; --创建 debug(pldbgapi)插件
CREATE EXTENSION
postgres=# \dx --查看是否有 debug(pldbgapi)插件
List of installed extensions
Name | Version | Schema | Description
-----------+---------+------------+------------------------------------------------------ pldbgapi | 1.1 | public | server-side support for debugging PL/pgSQL functions
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
uuid-ossp | 1.1 | pg_catalog | generate universally unique identifiers (UUIDs)
(3 rows)</code></pre>
<p>此后,重新打开你的 pgAdmin、Navicat、Dbeaver,右键即可对函数进行 Debug 调试。</p>
<h4>(3).安装 pg_stat_statements 扩展</h4>
<p>Pg_stat_statements 能提供近期最耗费资源(运行缓慢、IO 缓慢、耗费内存、耗费临时空间) 的 SQL 信息。建议安装 pg_stat_statements 扩展。步骤如下:</p>
<p>以 root 身份进入到 PG 软件安装包下,编译安装 pg_stat_statements。</p>
<pre><code>[root@mesdb ~]# cd postgresql-12.11/contrib/pg_stat_statements/
[root@mesdb pg_stat_statements]# make &amp;&amp; make install</code></pre>
<p>然后切换到 postgres 用户下,配置 pg_stat_statements</p>
<pre><code>[root@mesdb ~]# su - postgres
[postgres@mesdb ~]$ vi $PGDATA/postgresql.conf
# 编辑 shared_preload_libraries 参数,在原有基础上添加 pg_stat_statements.so 的完整路径,多个
so 包之间用逗号隔开。如
shared_preload_libraries = &#039;/home/postgres/pgsql/lib/plugin_debugger.so,/home/postgres/pgsql/lib/pg_stat_statements.so&#039;
[postgres@mesdb ~]$ pg_ctl restart
[postgres@mesdb ~]$ psql #重启 PG 后,登录数据库
postgres=# create extension pg_stat_statements; --创建 pg_stat_statements 插件。
postgres=# alter extension &quot;pg_stat_statements&quot; set schema pg_catalog;</code></pre>
<h4>(4).其他扩展 -- postgres_fdw 插件为例</h4>
<p>PostgreSQL 安装包 postgresql-12.11/contrib 下还有很多插件,可按需安装。以 postgres_fdw 远程数据库访问插件为例,步骤如下: 以 root 身份进入到 PG 软件安装包的插件目录中。</p>
<pre><code>[root@mesdb ~]# cd postgresql-12.11/contrib/postgres_fdw/
[root@mesdb postgres_fdw]# make
[root@mesdb postgres_fdw]# make install</code></pre>
<p>编译安装完成后,以 postgres 用户进入 PG 数据库,即可创建扩展:</p>
<pre><code>[root@mesdb ~]# su - postgres
[postgres@mesdb ~]$ psql
postgres=# CREATE EXTENSION postgres_fdw;
CREATE EXTENSION</code></pre>
<h2>创建并导入 PG 数据库</h2>
<p>在安装完 OS 及数据库基础配置后,通常还需要进行系统的初始数据导入操作(数据迁移)及部署备份策略。 本章主要讲述在完成数据库安装后数据导入到生产系统的步骤以及 pg_dump 的自动化备份配置。</p>
<h3>1. 数据迁移配置</h3>
<h4>(1).创建数据库</h4>
<p>创建数据库时需要连带把表空间、schema 和用户等一同创建,以下演示创建一个名为 n2db的数据库,它的数据放在 tbs_n2db 表空间 所指向的文件系统目录/home/postgres/pgsql/tbs/n2db 下,以n2admin 用户登录可访问这个数据库的 n2admin schema 数据。</p>
<pre><code>[postgres@mesdb ~]$ mkdir /pgsql/data/n2db
[postgres@mesdb ~]$ psql
psql (12.11)
Type &quot;help&quot; for help.
postgres=# create tablespace tbs_n2db location &#039;/pgsql/data/n2db/&#039;;
WARNING: tablespace location should not be inside the data directory
CREATE TABLESPACE
postgres=# create database n2db with template template0 lc_collate &#039;zh_CN.utf8&#039; lc_ctype &#039;zh_CN.utf8&#039; encoding=&#039;UTF8&#039; tablespace=tbs_n2db connection limit=300;
# 建立数据库,指定表空间为上一步创建的 tbs_n2db,最大连接数为 300 个。注意,zh_CN.utf8
# 需要中文支持,如报 ERROR: invalid locale name: &quot;zh_CN.utf8&quot;请先安装中文包,见附录“安装中文支持”。
postgres=# CREATE USER n2admin WITH superuser ENCRYPTED PASSWORD &#039;n2admin&#039;;
#CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE n2db TO n2admin;
#GRANT
postgres=# \c n2db --切换到 n2db 这个新建的数据库上
You are now connected to database &quot;n2db&quot; as user &quot;postgres&quot;.
n2db=# create schema n2admin; --创建一个 schema,名字叫 n2admin
#CREATE SCHEMA
n2db=# grant all on schema n2admin to n2admin; --把 n2admin 这个 schema 授权给 n2admin 用户
#GRANT
n2db=# create extension &quot;uuid-ossp&quot;; --安装 UUID 扩展
n2db=# create extension pldbgapi; --安装 debug(pldbgapi)扩展
n2db=# create extension pg_stat_statements; --安装 pg_stat_statements 扩展
n2db=# \q --退出数据库</code></pre>
<p>尝试以 n2admin 用户访问刚创建的 n2db 数据库</p>
<pre><code>[postgres@mesdb ~]$ psql -U n2admin -h 127.0.0.1 -p 5432 -d n2db
Password for user n2admin:
psql (12.11)
Type &quot;help&quot; for help. n2db=&gt; --看到前缀变成 n2db,表示已经登录到 n2db 数据库了</code></pre>
<p>至此,数据库软件的安装和数据库的部署已经结束。可以使用 PG 数据库的基本功能。</p>
<h4>(2).导出数据</h4>
<p>当安装了 PG 数据库后,我们就可以对数据进行导出/导入,以此实现将一台服务器的指定数据库数据迁移到另一台上,或者将数据库进行日常的简单备份。 使用 postgrs 用户登录数据库然后进行数据导出,参考命令如下:</p>
<pre><code>[postgres@mesdb ~]$ pg_dump -U n2admin -d n2db -p 5432 &gt; /home/postgres/n2db.dump.sql
等待导出结束,便会在/home/postgres/目录下生成导出文件 n2db.dump.sql</code></pre>
<h4>(3).导入数据</h4>
<p>使用 pg_dump 导出的数据,可以直接用 psql 导入。比如将上一步导出的数据导入到 n2db下:</p>
<pre><code>[postgres@mesdb ~]$ psql -f /home/postgres/n2db.dump.sql -d n2db</code></pre>
<p>注意:导入数据库中需要先创建一样的用户名和 schema。参考本文创建数据库</p>
<h4>(4).自动化导出数据库配置</h4>
<p>服务器总是要坏的。建议做好日常的数据库备份,可简单通过 pg_dump 实现,步骤如下: 1、在 postgres 用户下编写备份脚本 pg_backup.sh 脚本</p>
<pre><code>#!/bin/bash
export PGHOME=/home/postgres/pgsql/
export PATH=$PGHOME/bin:$PATH
export PGDATA=/pgsql/data/
export LD_LIBRARY_PATH=$PGHOME/lib
#引入环境变量
cur_time=$(date &#039;+%Y-%m-%d&#039;)
sevendays_time=$(date -d -7days &#039;+%Y-%m-%d&#039;)
#export PGPASSWORD=mypassword
echo &quot;Starting Backup PostgreSQL ...&quot;
rm -rf /NFS_backup/pg_backup_n2db.$sevendays_time.tar.gz
pg_dump -U n2admin -d n2db -p 5432 &gt; &quot;/NFS_backup/pg_backup_n2db.$cur_time.dmp&quot; cd &quot;/NFS_backup/&quot;
tar -zcvf &quot;/NFS_backup/pg_backup_n2db.$cur_time.tar.gz&quot; &quot;pg_backup_n2db.$cur_time.dmp&quot; echo &quot;Remove temp file ...&quot;
rm -rf /NFS_backup/pg_backup_n2db.$cur_time.dmp
echo &quot;Finish Backup ...&quot;</code></pre>
<p>注:以上脚本将数据按日期时间戳进行备份并压缩,保留 7 天。请根据实际情况修改以上彩色背景部分,指向实际的路径和文件名。 建议备份到不通存储设备或者不通服务器共享的网络存储上。</p>
<p>在完成上述步骤后,便可以通过 cron 计划任务功能进行自动化脚本的调用,如下:</p>
<pre><code>[postgres@mesdb ~]$ crontab -e
10 2 * * * /home/postgres/scripts/pg_backup.sh #每天凌晨 2 点 10 分备份一次</code></pre>
<p>至此,CentOS Linux7 单机环境下 PostgreSQL10 数据库安装部署完成。</p>
<h3>2. 增量备份配置(推荐)</h3>
<p>自动化导出数据库配置节的 pg_dump 导出方式,适用于小规模的数据备份,且无法精确恢复到指定的时间点。 建议采用本节进行备份,以实现:1、基于时间点的精确恢复;2、自动备份。</p>
<h4>(1).修改$PGDATA/postgresql.conf</h4>
<pre><code># mkdir -p /backup/arch
# chown -R postgres:postgres /backup/arch
# su - postgres
$ cd $PGDATA
$ vi postgresql.conf …
#增加以下参数
wal_level=replica
archive_mode = on
archive_command = &#039;test ! -f /backup/arch/%f &amp;&amp; cp %p /backup/arch/%f&#039; #路径为实际存放归档
wal 日志的路径,建议归档 wal 日志放在备份目录,最好是其他机器挂载过来的 NFS 目录(NFS 配置参考《【标准手册】通过 NFS 服务实现跨服务器文件共享_V1.0.pdf》)</code></pre>
<p>配置完成后需要重启数据库</p>
<h4>(2).创建备份脚本</h4>
<pre><code># mkdir -p /backup/sets
# mkdir -p /backup/arch
# chown -R postgres:postgres /backup/
$ vi /backup/bak.sh
#!/bin/bash
source ~/.bash_profile
export today=`date +%Y%m%d%H%M%S` backupkeptdays=14 #保留 14 天备份
backuppath=&quot;/backup/sets&quot; #备份目录
archivepath=&quot;/backup/arch&quot; #归档目录
archkeptdays=14 #保留 14 天归档
# BACKUP DATABASE THEN REMOVE BACKUP FILES WHICH OLDER THAN n DAYS
pg_basebackup -D ${backuppath}/$today -Ft -R -z -v --checkpoint=fast
find ${backuppath}/* -type d -mtime +${backupkeptdays} -exec rm -rf {} \;
# DELETE EXPIRED ARCHIVELOG
cmd_file=$(find ${archivepath}/ -maxdepth 1 -type f -not -name &#039;*.ready&#039; -not -name &#039;*.sh&#039; -not -name &#039;*.history&#039; -not -name &#039;*.backup&#039; -mtime +${archkeptdays} -printf &quot;%C@ %f\n&quot; |sort -n |
tail -n 1 | awk &#039;{print $NF}&#039;)
pg_archivecleanup -d $archivepath $cmd_file</code></pre>
<h4>(3).配置自动调度</h4>
<pre><code>$ crontab -e
30 1 * * 7 /backup/bak.sh|tee -a /tmp/n2db_bak.log #每周日凌晨 1 点 30 分进行全备,备份日志输
出至 tmp 文件夹下</code></pre>