人大金仓V8R6安装
<p>[TOC]</p>
<h1>[点击官网下载](<a href="https://www.kingbase.com.cn/download/c_id/455.html">https://www.kingbase.com.cn/download/c_id/455.html</a> "点击官网下载")</h1>
<p> 注:人大金仓V8R3版和V8R6版跨度很大,导致两个版本的工具互不兼容。简单点说就是R3的库R6工具没法连,R6库R3也没法连。</p>
<h1>单机版</h1>
<h2>创建用户组&安装目录</h2>
<pre><code class="language-shell">groupadd kingbase
useradd -g kingbase -m -d /home/kingbase -s /bin/bash kingbase
passwd kingbase
mkdir -p /risen/soft/kingbase/ES/V8R6
chown -R kingbase.kingbase /risen/soft/kingbase/</code></pre>
<p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/a2ef0cd441ed34354d9642a9eff00834" alt="" /></p>
<h2>上传安装文件启动脚本安装</h2>
<p><strong>setup.sh脚本安装和install.bin手动安装一样</strong></p>
<pre><code class="language-shell">mv license.dat setup/ setup.sh /home/kingbase
chown -R kingbase.kingbase /home/kingbase
su - kingbase # 切换至kingbase用户执行安装
./setup.sh
是否接受此许可协议条款? (Y/N): y
输入“安装集”的号码,或按 &lt;ENTER&gt; 键以接受缺省值 : 1
选择授权文件路径: /home/kingbase/license.dat
选择安装路径: /risen/soft/kingbase/ES/V8R6/
安装文件夹为: /risen/soft/kingbase/ES/V8R6 是否正确? (Y/N): y
数据库数据目录 (默认: /risen/soft/kingbase/ES/V8R6/data):
端口: (默认: 54321):
用户名 (默认: system):
请输入密码: 请输入密码:
请再次输入密码: 请再次输入密码:
输入您选择的号码,或按 &lt;ENTER&gt; 键以接受缺省值: 1 # UTF8
输入您选择的号码,或按 &lt;ENTER&gt; 键以接受缺省值: 2 # ORACLE
恭喜!KingbaseES V8 已成功地安装到:/risen/soft/kingbase/ES/V8R6</code></pre>
<p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/258f750790298fc855892d5e4855d016" alt="" />
<img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/d29cf238aea3d3d4f340c8277076b787" alt="" />
<img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/c3701415a3499d3e4e31f6689f4f75aa" alt="" />
<img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/7dec6cb41948ff2753a822650af293d5" alt="" />
<img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/208e030e53e3d9e8aa5a071af0a75444" alt="" />
<img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/f0be0cba62180e0c16d119e62d58c088" alt="" />
<img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/3ae8119ddde2c415b11971349e00ca97" alt="" />
注册系统服务&工具连接测试</p>
<pre><code class="language-shell">[kingbase@128 ~]$ exit # 使用root用户注册系统服务
[root@128 ~]# /risen/soft/kingbase/ES/V8R6/Scripts/root.sh</code></pre>
<p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/12136f0eb9b5f815657075ade95df088" alt="" />
<img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/6f944760ea68fd6315b38c092b891ef4" alt="" /></p>
<h2>调优</h2>
<pre><code class="language-shell">vim /risen/soft/kingbase/ES/V8R6/data/kingbase.conf
max_connections=1000 # max_connections * work_mem大小(默认4M) &lt; 服务器总内存
shared_buffers=RAM*0.25GB # RAM指内存,最大设置为64GB
effective_cache_size=RAM*0.5GB
work_mem = 10MB
maintenance_work_mem = 1024MB
checkpoint_timeout = 15min
max_wal_size = 8GB
min_wal_size = 2048MB
checkpoint_completion_target = 0.8
max_locks_per_transaction = 1024
logging_collector = on
log_destination= 'stderr'
log_statement = 'none'
log_lock_waits = on
log_autovacuum_min_duration = 0
log_temp_files = 0
log_filename = 'kingbase-%d.log'
log_truncate_on_rotation = on
log_rotation_age = 1000
log_rotation_size = 100MB
log_min_duration_statement = 1000
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h'
shared_preload_libraries= # 删掉此条目中的kdb_flashback
ora_input_emptystr_isnull = off</code></pre>
<h2>重启</h2>
<pre><code class="language-shell">systemctl status kingbase8d.service
systemctl start kingbase8d.service
chkconfig kingbase8d on</code></pre>
<p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/2e5810432fe423855df8efea2b9d27e5" alt="" /></p>
<h2>卸载</h2>
<p><strong>慎重操作!备份所有数据!!关闭数据库</strong></p>
<pre><code class="language-shell">systemctl stop kingbase8d.service
su - kingbase
cd /risen/soft/kingbase/ES/V8R6/Uninstall/
./Uninstaller</code></pre>
<p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/1742672e73651522536f87dbb207ead4" alt="" /></p>
<h1>集群版</h1>
<h2>部署集群准备工作</h2>
<pre><code class="language-shell"># 关于集群服务器的时间
使用data命令查看服务器时间,集群服务器各时间必须保持一致!
# 确认所需命令CRON、ARPING是否存在
whereis cron 、whereis arping、whereis ip
# 确认网关地址 route
route # 集群各节点都能ping通网关
# 关于ssh
cat /etc/ssh/sshd_config|grep Port 结果为22 # 若不是22需在install.conf文件标明【待测试】
vim /etc/ssh/sshd_config 修改PermitRootLogin为yes
# 关于防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭防火墙或者提前把数据库端口开放出来
# 关于SElinux
SElinux过于安全不用
sed -i '7s/enforcing/disabled/' /etc/selinux/config
服务器重启生效</code></pre>
<h2>准备集训需要的安装文件</h2>
<p>官网的集群版安装之后在/risen/soft/kingbase/ES/V8R6/DeployTools/zip/Lin64/下面,集群只需要这几个文件,和R3安装完全不一样。
<code>db.zip、install.conf、license.dat、trust_cluster.sh、V8R6_cluster_install.sh</code></p>
<h2>创建用户组&安装目录</h2>
<p><code>需要部署集群的服务器提前手动创好kingbase用户及安装目录</code></p>
<pre><code class="language-shell">groupadd kingbase
useradd -g kingbase -m -d /home/kingbase -s /bin/bash kingbase
passwd kingbase
mkdir -p /risen/soft/kingbase/ES/V8R6
chown -R kingbase.kingbase /risen/soft/kingbase/</code></pre>
<p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/d726433e6b15e0ad3e8e67750144549a" alt="" /></p>
<h2>修改install.conf文件</h2>
<pre><code class="language-shell">vim install.conf
on_bmj=0
all_ip=(192.168.46.129 192.168.46.130) # 安装集群的服务器IP
install_dir=&quot;/risen/soft/kingbase/ES/V8R6&quot; # 安装目录
zip_package=&quot;/home/kingbase/db.zip &quot;
license_file=(license.dat) # 证书
db_user=&quot;system&quot; # 数据库管理员
db_password=&quot;8TZ&amp;gP3.e&quot; # 数据库管理员密码
db_port=&quot;54321&quot; # 数据库端口
db_mode=&quot;oracle&quot; # 数据库模式
db_auth=&quot;scram-sha-256&quot; # 数据库加密方式
data_directory=&quot;/risen/soft/kingbase/ES/V8R6/data&quot; # 数据目录
trusted_servers=&quot;192.168.46.2&quot; # 网关
#virtual_ip=&quot;172.29.66.110&quot;
net_device=(ens32 ens33) # 网卡
ipaddr_path=&quot;/sbin&quot; # 参考“集群准备工作第二条”
arping_path=&quot;&quot;
ping_path=&quot;/bin&quot;
super_user=&quot;root&quot;
execute_user=&quot;kingbase&quot;
reconnect_attempts=&quot;6&quot; # 连接数据库失败之后重试次数以及ping网关失败之后重试次数,超过这个次数触发切机机制
reconnect_interval=&quot;10&quot; # 连接数据库失败以及ping网关失败的次数,超过这个次数触发切机机制
recovery=&quot;automatic&quot; # 数据库发生故障是否可以自动切机
ssh_port=&quot;22&quot; # sshd服务不是22端口这里改掉
use_check_disk='on' # 不区分大小写</code></pre>
<h2>将安装文件属主改为kingbase并做互信登陆</h2>
<pre><code class="language-shell">mv db.zip install.conf license.dat trust_cluster.sh V8R6_cluster_install.sh /home/kingbase
chown -R kingbase.kingbase /home/kingbase/
sh /home/kingbase/trust_cluster.sh # 使用root用户执行
注意!手动做的免密无效,必须使用脚本,亲测。</code></pre>
<p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/9035c2ce2938a3a4c10995ea3ca08ddb" alt="" /></p>
<h2>切换kingbase用户执行安装</h2>
<pre><code class="language-shell">su - kingbase
./V8R6_cluster_install.sh
# 静等安装完成~~~~~</code></pre>
<p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/af713a999f36ed5ea0a73350d36c8034" alt="" />
<img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/c8c20f60d5dd10319de59fcd1beca3c0" alt="" />
<img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/a93021a962149a84113fe831361bafca" alt="" /></p>
<h3>查看集群节点信息</h3>
<pre><code class="language-shell">cd /risen/soft/kingbase/ES/V8R6/kingbase/bin
./repmgr cluster show</code></pre>
<p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/491915af2c3ded0919a876f7653fd31e" alt="" /></p>
<h2>调优</h2>
<pre><code class="language-shell">vim /risen/soft/kingbase/ES/V8R6/data/kingbase.conf
# 集群以下参数根据实际情况调整后直接复制粘贴至文件末行生效
max_connections=1000 # max_connections * work_mem大小(默认4M) &lt; 服务器总内存
shared_buffers=RAM*0.25GB # RAM指内存,最大设置为64GB
effective_cache_size=RAM*0.5GB
work_mem = 10MB
maintenance_work_mem = 1024MB
checkpoint_timeout = 15min
max_wal_size = 8GB
min_wal_size = 2048MB
checkpoint_completion_target = 0.8
max_locks_per_transaction = 1024
logging_collector = on
log_destination= 'stderr'
log_statement = 'none'
log_lock_waits = on
log_autovacuum_min_duration = 0
log_temp_files = 0
log_filename = 'kingbase-%d.log' # 日志保留一个月
log_truncate_on_rotation = on
log_rotation_age = 1000
log_rotation_size = 100MB
log_min_duration_statement = 1000
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h'
shared_preload_libraries= # 删掉此条目中的kdb_flashback
ora_input_emptystr_isnull = off</code></pre>
<h2>优化后重启,工具连接测试</h2>
<pre><code class="language-shell"># 可以优化好一个节点后拷贝文件至各节点
su - kingbase
cd /risen/soft/kingbase/ES/V8R6/kingbase/bin
./sys_monitor.sh stop # 关闭数据库集群(任意节点都可执行)
./sys_monitor.sh start # 启动数据库集群
./repmgr cluster show # 查看集群信息</code></pre>
<p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/d668220157500f51b7a53b2ae808cd28" alt="" />
<img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/6f0bf18d9f2cf3b8dc0da9414cd505a9" alt="" />
<img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/d349abfe8197ed3976ba6181f592cdaf" alt="" /></p>
<h2>逻辑备份</h2>
<p>[点击下载单机版备份脚本](<a href="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/e94be2a032e828809fe896d73d843cf9">http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/e94be2a032e828809fe896d73d843cf9</a> "[kingbase_r6单机.sh")
按照实际情况修改脚本以下内容即可:</p>
<pre><code class="language-shell">kdb_home=&quot;/risen/soft/kingbase/ES/V8R6/Server/&quot; 安装目录
kdbback_dest=&quot;/risen/data/kingbak/&quot; 备份目录
kdb_user=&quot;SYSTEM&quot; 管理员名称
kdb_pass=&quot;yyds@2022&quot; 管理员密码
kdb_port=&quot;54321&quot; 数据库端口
kdb_host=&quot;127.0.0.1&quot; 数据库服务器IP
kdb_list=&quot;test1,test2,test3,&quot; 需要备份的库,中间用英文逗号隔开
keep_time=&quot;15&quot; 备份保存时间,单位 天</code></pre>
<p>[点击下载集群版备份脚本](<a href="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/6189319a7fbc75848fd6a36baed0af49">http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/6189319a7fbc75848fd6a36baed0af49</a> "[kingbase_r6集群.sh")
1.同R3备份一样先修改脚本数据库相关信息
2.编辑数据目录下的sys_hba.conf文件,如下图所示将红圈中默认的<code>scram-sha-256</code>改为<code>trust</code>,(各个节点都要手动改),<code>sys_monitor.sh restart</code>重启集群
<img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/6757fc9dd6009b41e66359dd693ba614" alt="" /></p>
<h2>命令行备份还原</h2>
<pre><code class="language-shell">----备份----
./sys_dump -h 127.0.0.1 -p 54321 -U zjs_yyds_ztzz -v -f /home/kingbase/zjs_yyds_ztzz.dmp -Fc -n zjs_yyds_ztzz
# -h IP,-p 端口号,若是本机还原且端口号是默认的54321则这两项均可省略不写
# -U 用户名
# -v 详细模式
# -f 文件名输出文件或目录名
# -F 输出文件格式
# c 在重新创建之前清除(删除)数据库对象
# -n 模式仅转储指定的模式
----还原----
./sys_restore -h 127.0.0.1 -p 54321 -U zjs_yyds_ztzz -v -d zjs_yyds_ztzz -j 4 /home/kingbase/zjs_yyds_ztzz.dmp
# -v 详细模式
# -d 连接到数据库名称
# -j 使用多线程还原 默认是单线程,数据量较大可考虑多线程还原速度可以快些</code></pre>
<p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/496bf5ac490f64d00b18563a5a922b95" alt="" /></p>
<h6>备份还原常见报错:</h6>
<ol>
<li><code>ERROR: permission denied for table pg_authid</code>,凡是提示pg_xxx表没权限的,都能用重新授权这招解决:
解决方法:用管理员赋予该库用户权限即可<code>GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA pg_catalog TO 用户名;</code></li>
<li>
</li>
</ol>
<h2>卸载</h2>
<p> 集群版没有卸载命令,把安装目录改名挪走甚至删除就是卸载。</p>