目录
- 一、写在前面
- 二、安装前准备
- 1、实验环境介绍
- 2、操作系统参数调整
- 2.1、配置主机名解析
- 2.2、关闭交换分区
- 2.3、调整自动分配本地端口范围
- 2.4、调整进程的VMA上限
- 2.5、调整资源限制值
- 2.6、关闭透明大页
- 2.7、关闭防火墙
- 2.8、创建安装用户
- 2.9、配置sudo免密
- 2.10、将yashan用户加入到YASDBA用户组
- 2.11、创建安装目录
- 2.12、重启操作系统
- 3、软件包下载
- 三、安装过程
- 四、数据库入门管理
- 五、总结
一、写在前面
今天体验下YashanDB(崖山数据库)命令行方式单机部署过程。崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。数据库核心技术100%自研,做到完全自主可控,研发团队具备从零构建完整数据库系统并成功商用的经验,全栈顶尖研发能力保持产品和技术领先优势;积极参与并融入信创生态,高度兼容国产主流软硬件。
二、安装前准备
1、实验环境介绍
项目 | 描述 |
---|---|
操作系统 | CentOS 7.6 |
CPU | 2C |
内存 | 4GB |
硬盘 | 50GB |
2、操作系统参数调整
2.1、配置主机名解析
[root@hellodba ~]# echo "192.168.0.58 hellodba" >> /etc/hosts
2.2、关闭交换分区
[root@hellodba ~]# sysctl -w vm.swappiness=0
[root@hellodba ~]# echo "vm.swappiness = 0">> /etc/sysctl.conf
[root@hellodba ~]# sysctl -a | grep swappiness
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.ens33.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
sysctl: reading key "net.ipv6.conf.virbr0.stable_secret"
sysctl: reading key "net.ipv6.conf.virbr0-nic.stable_secret"
vm.swappiness = 0
2.3、调整自动分配本地端口范围
[root@hellodba ~]# sysctl -w net.ipv4.ip_local_port_range='32768 60999'
[root@hellodba ~]# echo "net.ipv4.ip_local_port_range = 32768 60999" >> /etc/sysctl.conf
2.4、调整进程的VMA上限
[root@hellodba ~]# sysctl -w vm.max_map_count=2000000
vm.max_map_count = 2000000
[root@hellodba ~]# echo "vm.max_map_count=2000000" >> /etc/sysctl.conf
[root@hellodba ~]# sysctl -a|grep vm.max_map_count
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.ens33.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
sysctl: reading key "net.ipv6.conf.virbr0.stable_secret"
sysctl: reading key "net.ipv6.conf.virbr0-nic.stable_secret"
vm.max_map_count = 2000000
2.5、调整资源限制值
[root@hellodba ~]# vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
* soft rss unlimited
* hard rss unlimited
* soft stack 8192
* hard stack 8192
2.6、关闭透明大页
//查看透明页是否启用,显示[always]表示Transparent HugePages是启用的
[root@hellodba ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
[root@hellodba ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
//禁用透明页
[root@hellodba ~]# vi /etc/rc.d/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@hellodba ~]# chmod +x /etc/rc.d/rc.local
[root@hellodba ~]# reboot
//透明页已关闭
[root@hellodba ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
[root@hellodba ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
2.7、关闭防火墙
//关闭防火墙
[root@hellodba ~]# systemctl stop firewalld
//查看防火墙状态
[root@hellodba ~]# systemctl status firewalld
//禁止防火墙开机自启动
[root@hellodba ~]# systemctl disable firewalld
2.8、创建安装用户
[root@hellodba ~]# useradd -d /home/yashan -m yashan
[root@hellodba ~]# echo "hellodba" | passwd --stdin yashan
2.9、配置sudo免密
[root@hellodba ~]# cd /etc
[root@hellodba etc]# ll sudoers
-r--r-----. 1 root root 4328 Oct 30 2018 sudoers
[root@hellodba etc]# chmod +w sudoers
[root@hellodba etc]# vim /etc/sudoers
//在文件的最后添加如下内后保存退出
yashan ALL=(ALL)NOPASSWD:ALL
[root@hellodba etc]# chmod -w sudoers
2.10、将yashan用户加入到YASDBA用户组
[root@hellodba ~]# groupadd YASDBA [root@hellodba ~]# usermod -a -G YASDBA yashan
2.11、创建安装目录
[root@hellodba ~]# mkdir -p /YashanDB
[root@hellodba ~]# chmod -R 777 /YashanDB
2.12、重启操作系统
[root@hellodba ~]# init 6
3、软件包下载
从本步骤开始的后续所有服务端安装步骤,将由数据库安装用户来进行操作,请先切换至yashan用户,或以yashan用户登录至服务器。
3.1、创建install目录
[root@hellodba ~]# su - yashan
[yashan@hellodba ~]$ cd /YashanDB
[yashan@hellodba YashanDB]$ mkdir install
// 下载地址
https://download.yashandb.com/download
3.2、下载软件包
将软件包下载到/YashanDB/install目录下,并解压软件包。
[yashan@hellodba ~]$ cd /YashanDB/install
[yashan@hellodba install]$ tar zxf yashandb-personal-23.1.1.100-linux-x86_64.tar.gz
[yashan@hellodba install]$ ll
drwxrwxr-x. 6 yashan yashan 70 Nov 9 18:16 admin
drwxrwxr-x. 2 yashan yashan 188 Nov 9 18:16 bin
drwxrwxr-x. 2 yashan yashan 152 Nov 9 18:16 conf
drwxrwxr-x. 5 yashan yashan 60 Nov 9 18:16 ext
-rw-rw-r--. 1 yashan yashan 11632 Nov 9 18:16 gitmoduleversion.dat
drwxrwxr-x. 2 yashan yashan 65 Nov 9 18:16 include
drwxrwxr-x. 3 yashan yashan 17 Nov 9 18:16 java
drwxrwxr-x. 2 yashan yashan 4096 Nov 9 18:16 lib
-rw-r-----. 1 yashan yashan 14989 Nov 9 18:16 LICENSE
drwxrwxr-x. 3 yashan yashan 21 Nov 9 18:16 plug-in
drwxrwxr-x. 2 yashan yashan 170 Nov 9 18:16 scripts
-rwxrwxr-x. 1 yashan yashan 175386922 Nov 30 16:42 yashandb-personal-23.1.1.100-linux-x86_64.tar.gz
3.3、获取安装工具
YashanDB所提供软件包中包含安装工具,位于bin目录下。其中,如执行命令行安装,需要用到yasboot命令,如执行可视化安装,则需要用到yasom命令。
[yashan@hellodba install]$ ll bin/yasboot
-rwxrwxr-x. 1 yashan yashan 9381440 Nov 9 18:16 bin/yasboot
[yashan@hellodba install]$ ll bin/yasom
-rwxrwxr-x. 1 yashan yashan 21896816 Nov 9 18:16 bin/yasom
三、安装过程
1、生成部署文件
[yashan@hellodba ~]$ cd /YashanDB/install
[yashan@hellodba install]$ ./bin/yasboot package se gen --cluster yashandb -u yashan -p password --ip 192.168.0.58 --port 22 --install-path /YashanDB/yasdb_home --data-path /YashanDB/yasdb_data --begin-port 1688
192.168.0.58
ip:192.168.0.58 scan failed, 主机扫描失败:ssh: handshake failed: ssh: unable to authenticate, attempted methods [none password], no supported methods remain
hostid | group | node_type | node_name | listen_addr | replication_addr | data_path
---------------------------------------------------------------------------------------------------------
host0001 | dbg1 | db | 1-1 | 192.168.0.58:1688 | 192.168.0.58:1689 | /YashanDB/yasdb_data
----------+-------+-----------+-----------+-------------------+-------------------+----------------------
Generate config success
1.1、参数说明
--cluster: 指定为要部署的数据库集群名称,该名称也将作为集群中所有节点上初始创建数据库的名称(database name)。 --port: 指定SSH服务端口。 --install-path: 指定数据库安装路径。 --data-path: 指定数据存放目录。 --begin-port: 指定数据库监听端口。
上一步骤执行完毕后,当前目录下将生成yashandb.toml和hosts.toml两个配置文件,yashandb.toml为数据库集群的配置文件,hosts.toml为主机的配置文件,可手动修改,但不建议删除文件中任何行,否则可能导致后续安装过程报错,或者所搭建的环境后续无法进行扩展配置。
[yashan@hellodba install]$ ll
drwxrwxr-x. 6 yashan yashan 70 Nov 9 18:16 admin
drwxrwxr-x. 2 yashan yashan 188 Nov 9 18:16 bin
drwxrwxr-x. 2 yashan yashan 152 Nov 9 18:16 conf
drwxrwxr-x. 5 yashan yashan 60 Nov 9 18:16 ext
-rw-rw-r--. 1 yashan yashan 11632 Nov 9 18:16 gitmoduleversion.dat
-rw-------. 1 yashan yashan 488 Nov 30 16:57 hosts.toml
drwxrwxr-x. 2 yashan yashan 65 Nov 9 18:16 include
drwxrwxr-x. 3 yashan yashan 17 Nov 9 18:16 java
drwxrwxr-x. 2 yashan yashan 4096 Nov 9 18:16 lib
-rw-r-----. 1 yashan yashan 14989 Nov 9 18:16 LICENSE
drwxrwxr-x. 2 yashan yashan 25 Nov 30 16:57 om
drwxrwxr-x. 3 yashan yashan 21 Nov 9 18:16 plug-in
drwxrwxr-x. 2 yashan yashan 170 Nov 9 18:16 scripts
-rwxrwxr-x. 1 yashan yashan 175386922 Nov 30 16:42 yashandb-personal-23.1.1.100-linux-x86_64.tar.gz
-rw-------. 1 yashan yashan 714 Nov 30 16:57 yashandb.toml
1.2、配置文件yashandb.toml
[yashan@hellodba install]$ cat yashandb.toml
#数据库名,安装后不能修改
cluster = "yashandb"
#为true部署完会执行示例的sql,若改为true需要在deploy时指定sys-password参数
create_simple_schema = false
#系统自动生成,不建议修改
uuid = "65684e6d8443ba2d0550472da1f6fbcc"
#部署模式,安装后修改也不会生效,除非重新安装
yas_type = "SE"
[[group]]
#安装后修改也不会生效,除非重新安装
group_type = "db"
#安装后修改也不会生效,除非重新安装
name = "dbg1"
#可配置所有建库参数,不配置时采用默认值
[group.config]
#字符集
CHARACTER_SET = "utf8"
#归档模式
ISARCHIVELOG = true
#redo文件数
REDO_FILE_NUM = 4
#redo大小
REDO_FILE_SIZE = "128M"
[group.create_sql]
[[group.node]]
#数据目录,安装后不能修改
data_path = "/YashanDB/yasdb_data"
#主机id,安装后不能修改
hostid = "host0001"
#数据库主备角色,安装后不能修改
role = 1
#可配置所有数据库参数,不配置时采用默认值,安装后修改可以生效(只读参数不可修改)
[group.node.config]
LISTEN_ADDR = "192.168.0.58:1688"
REPLICATION_ADDR = "192.168.0.58:1689"
RUN_LOG_FILE_PATH = "/YashanDB/yasdb_home/yashandb/23.1.1.100/log/yashandb/db-1-1/run"
RUN_LOG_LEVEL = "INFO"
SLOW_LOG_FILE_PATH = "/YashanDB/yasdb_home/yashandb/23.1.1.100/log/yashandb/db-1-1/slow"
1.3、配置文件hosts.toml
[yashan@hellodba install]$ cat hosts.toml
uuid = "65684e6d8443ba2d0550472da1f6fbcc"
cluster = "yashandb"
yas_type = "SE"
secret_key = "ce457ae9c276a997"
add_yasdba = true
[om]
hostid = "host0001"
[om.config]
LISTEN_ADDR = "192.168.0.58:1675"
[[host]]
hostid = "host0001"
group = "yashan"
user = "yashan"
password = "hellodba"
ip = "192.168.0.58"
port = 22
path = "/YashanDB/yasdb_home"
jvm_path = ""
total_memory = 0
[host.yasagent]
[host.yasagent.config]
LISTEN_ADDR = "192.168.0.58:1676"
2、执行安装
[yashan@hellodba ~]$ cd /YashanDB/install
[yashan@hellodba install]$ ./bin/yasboot package install -t hosts.toml -i yashandb-personal-23.1.1.100-linux-x86_64.tar.gz
checking install package...
install version: yashandb 23.1.1.100
host0001 100% [====================================================================] 3s
update host to yasom...
3、数据库部署
3.1、执行部署命令
[yashan@hellodba ~]$ cd /YashanDB/install
[yashan@hellodba install]$ ./bin/yasboot cluster deploy -t yashandb.toml
type | uuid | name | hostid | index | status | return_code | progress | cost
------------------------------------------------------------------------------------------------------------
task | cdc400f95088580b | DeployYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 10
------+------------------+--------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS
3.2、生效环境变量
部署命令成功执行后将会在$YASDB_HOME目录下的conf文件夹中生成<<集群名称>>.bashrc环境变量文件。
[yashan@hellodba ~]$ cd /YashanDB/yasdb_home/yashandb/23.1.1.100/conf
[yashan@hellodba conf]$ ll
-rw-rw-r--. 1 yashan yashan 100845 Nov 9 18:16 database_options.json
drwxrwxr-x. 2 yashan yashan 73 Nov 30 20:55 monit
-rw-rw-r--. 1 yashan yashan 297 Nov 9 18:16 profile.toml
-rw-rw-r--. 1 yashan yashan 6837 Nov 9 18:16 sqlcollect.toml
-rw-rw-r--. 1 yashan yashan 23577 Nov 9 18:16 sqlhtml.template
-rwx------. 1 yashan yashan 275 Nov 30 20:55 yashandb.bashrc
-rw-rw-r--. 1 yashan yashan 590524 Nov 9 18:16 yasreport.template
-rw-rw-r--. 1 yashan yashan 3071 Nov 9 18:16 yfs_options.json
[yashan@hellodba conf]$ cat yashandb.bashrc >> ~/.bashrc
[yashan@hellodba conf]$ source ~/.bashrc
4、修改sys用户口令
[yashan@hellodba ~]$ yasboot cluster password set -n Yashan@123 -c yashandb
type | uuid | name | hostid | index | status | return_code | progress | cost
----------------------------------------------------------------------------------------------------------
task | b50b197c4bda3a04 | YasdbPasswordSet | - | yashandb | SUCCESS | 0 | 100 | 2
------+------------------+------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS
5、验证安装是否成功
5.1、查看数据库状态
[yashan@hellodba ~]$ yasboot cluster status -c yashandb -d
hostid | node_type | nodeid | pid | instance_status | database_status | database_role | listen_address | data_path
---------------------------------------------------------------------------------------------------------------------------------------------
host0001 | db | 1-1:1 | 13419 | open | normal | primary | 192.168.0.58:1688 | /YashanDB/yasdb_data/db-1-1
----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+-----------------------------
5.2、查看实例状态
[yashan@hellodba ~]$ yasboot sql -d 'sys/"Yashan@123"'@192.168.0.58:1688
SQL> SELECT STATUS FROM V$INSTANCE;
STATUS
-------------
OPEN
6、启动守护进程
守护进程用于持续监控YashanDB的各进程状态,并在进程异常时将其重新拉起。
[yashan@hellodba ~]$ yasboot monit start --cluster yashandb
type | uuid | name | hostid | index | status | return_code | progress | cost
----------------------------------------------------------------------------------------------------------
task | e7d228e6d06aedbd | MonitParentStart | - | yashandb | SUCCESS | 0 | 100 | 1
------+------------------+------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS
7、状态查看
[yashan@hellodba ~]$ yasboot monit status --cluster yashandb
--------------------------------------------------------------------------------
HostID: host0001, ManageIP: 192.168.0.58
--------------------------------------------------------------------------------
Monit 5.28.0 uptime: 2m
Process 'yasom'
status OK
monitoring status Monitored
monitoring mode active
on reboot start
pid 12016
parent pid 1
uid 1001
effective uid 1001
gid 1001
uptime 31m
threads 8
children 0
cpu 0.0%
cpu total 0.0%
memory 0.3% [15.0 MB]
memory total 0.3% [15.0 MB]
security attribute unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
filedescriptors 10 [0.0% of 65536 limit]
total filedescriptors 10
read bytes 16.0 B/s [412.7 kB total]
disk read bytes 0 B/s [0 B total]
disk read operations 1.0 reads/s [8046 reads total]
write bytes 0 B/s [2.6 MB total]
disk write bytes 0 B/s [2.5 MB total]
disk write operations 0.0 writes/s [5085 writes total]
data collected Thu, 30 Nov 2023 21:15:03
Process 'yashandb-db-1-1'
status OK
monitoring status Monitored
monitoring mode active
on reboot start
pid 13419
parent pid 1
uid 1001
effective uid 1001
gid 1001
uptime 19m
threads 55
children 0
cpu 1.7%
cpu total 1.7%
memory 7.9% [378.0 MB]
memory total 7.9% [378.0 MB]
security attribute unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
filedescriptors 46 [0.1% of 65536 limit]
total filedescriptors 46
read bytes 0 B/s [101.0 MB total]
disk read bytes 0 B/s [36 kB total]
disk read operations 30.0 reads/s [37458 reads total]
write bytes 0 B/s [1.5 GB total]
disk write bytes 0 B/s [1.4 GB total]
disk write operations 0.0 writes/s [12951 writes total]
data collected Thu, 30 Nov 2023 21:15:03
Process 'yasagent'
status OK
monitoring status Monitored
monitoring mode active
on reboot start
pid 11989
parent pid 1
uid 1001
effective uid 1001
gid 1001
uptime 32m
threads 8
children 0
cpu 0.0%
cpu total 0.0%
memory 0.3% [12.8 MB]
memory total 0.3% [12.8 MB]
security attribute unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
filedescriptors 9 [0.0% of 65536 limit]
total filedescriptors 9
read bytes 0 B/s [1.7 MB total]
disk read bytes 0 B/s [0 B total]
disk read operations 0.0 reads/s [7561 reads total]
write bytes 0 B/s [3.3 MB total]
disk write bytes 0 B/s [3.3 MB total]
disk write operations 0.0 writes/s [2765 writes total]
data collected Thu, 30 Nov 2023 21:15:03
System 'hellodba'
status OK
monitoring status Monitored
monitoring mode active
on reboot start
load average [0.04] [0.13] [0.13]
cpu 0.1%usr 0.2%sys 0.0%nice 0.0%iowait 0.0%hardirq 0.0%softirq 0.0%steal 0.0%guest 0.0%guestnice
memory usage 1.1 GB [23.6%]
swap usage 0 B [0.0%]
uptime 2h 18m
boot time Thu, 30 Nov 2023 18:57:00
filedescriptors 5888 [1.2% of 479865 limit]
data collected Thu, 30 Nov 2023 21:15:03
8、开机自动启动
当服务器由于各种原因发生重启时,将守护进程到开机自启动,可以在系统重启后自动拉起YashanDB的各进程。
[yashan@hellodba ~]$ sudo vim /etc/rc.local
su - yashan -c 'yasboot process yasom start -c yashandb'
su - yashan -c 'yasboot process yasagent start -c yashandb'
su - yashan -c 'yasboot cluster start -c yashandb'
su - yashan -c 'yasboot monit start --cluster yashandb'
四、数据库入门管理
1、通过yasql从命令行连接到数据库
[root@hellodba ~]# su - yashan
[yashan@hellodba ~]$ yasql / as sysdba
SQL>
2、实例启停
2.1、启动数据库实例
YashanDB支持通过yasboot工具直接将数据库实例调整至NOMOUNT、MOUNT和OPEN三个阶段的任意一个,也支持通过ALTER DATABASE语句将数据库实例从NOMOUNT阶段调整到MOUNT阶段和OPEN阶段。
2.1.1、启动到NOMOUNT阶段
支持通过yasboot工具将数据库实例从任意阶段调整至NOMOUNT阶段,不支持通过SQL命令方式调整数据库实例至NOMOUNT阶段。
由于SQL命令方式需先连接数据库,当实例处于SHUTDOWN阶段时无法连接数据库,且ALTER DATABASE语句不支持调整实例至NOMOUNT阶段,故无法使用SQL命令方式。
# yasboot工具
# 方式一: 先关闭然后启动数据库集群至NOMOUNT状态
[yashan@hellodba ~]$ yasboot cluster stop -c yashandb
[yashan@hellodba ~]$ yasboot cluster start -c yashandb -m nomount
# 方式二: 一键重启数据库集群至NOMOUNT状态
[yashan@hellodba ~]$ yasboot cluster restart -c yashandb -m nomount
# 操作成功后,可查询数据库状态已更新为STARTED。
SQL> SELECT status FROM V$INSTANCE;
STATUS
-------------
STARTED
2.1.2、启动到MOUNT阶段
支持通过yasboot工具将数据库实例从任意阶段调整至MOUNT阶段,或通过SQL命令方式将数据库实例从NOMOUNT阶段调整至MOUNT阶段。
# yasboot工具
# 方式一: 先关闭然后启动数据库集群至MOUNT状态
[yashan@hellodba ~]$ yasboot cluster stop -c yashandb
[yashan@hellodba ~]$ yasboot cluster start -c yashandb -m mount
# 方式二: 一键重启数据库集群至MOUNT状态
[yashan@hellodba ~]$ yasboot cluster restart -c yashandb -m mount
# SQL命令(此时须确保数据库实例处于NOMOUNT状态)
[yashan@hellodba ~]$ yasboot cluster restart -c yashandb -m nomount
[yashan@hellodba ~]$ yasql / as sysdba
SQL> ALTER DATABASE MOUNT;
# 操作成功后,可查询数据库状态已更新为MOUNTED。
SQL> SELECT status FROM V$INSTANCE;
STATUS
-------------
MOUNTED
2.1.3、启动到OPEN阶段
支持通过yasboot工具将数据库实例从任意阶段调整至OPEN阶段,或通过SQL命令方式将数据库实例从NOMOUNT或MOUNT阶段调整至OPEN阶段。
# yasboot工具
# 方式一: 先关闭然后启动数据库集群至OPEN状态
[yashan@hellodba ~]$ yasboot cluster stop -c yashandb
[yashan@hellodba ~]$ yasboot cluster start -c yashandb -m open
# 方式二: 一键重启数据库集群至OPEN状态
[yashan@hellodba ~]$ yasboot cluster restart -c yashandb -m open
# SQL命令(此时须确保数据库实例处于NOMOUNT或MOUNT状态)
[yashan@hellodba ~]$ yasboot cluster restart -c yashandb -m nomount
[yashan@hellodba ~]$ yasql / as sysdba
SQL> ALTER DATABASE OPEN;
# 操作成功后,可查询数据库状态已更新为OPEN。
SQL> SELECT status FROM V$INSTANCE;
STATUS
-------------
OPEN
2.1.4、注意事项
可以使用yasql工具连接到一个空闲实例,但是空闲实例不能直接进行数据启动到NOMOUNT、MOUNT和OPEN的操作,即在空闲实例下,不能使用STARTUP NOMOUNT、STARTUP MOUNT、STARTUP OPEN以及ALTER DATABASE NOMOUNT、ALTER DATABASE MOUNT和ALTER DATABASE OPEN等命令来启动数据库实例。
2.2、关闭数据库实例
YashanDB支持通过执行SHUTDOWN语句或使用yasboot工具关闭数据库实例。
2.2.1、SQL命令方式
SHUTDOWN NORMAL:等待事务正常结束后关闭,没有时间限制,通常建议选择这种方式来关闭数据库,此方式也为YashanDB默认的关库模式。
SHUTDOWN IMMEDIATE:立即中断当前用户的连接,同时强行终止用户的当前执行中的事务,将未完成的事务回退,并关闭数据库。
SHUTDOWN ABORT:强制中断所有数据库操作并关闭数据库,这种关闭方式可能会丢失一部分数据,影响数据库完整性。
SQL> SHUTDOWN NORMAL; SQL> SHUTDOWN IMMEDIATE; SQL> SHUTDOWN ABORT;
2.2.2、OM工具方式
可通过使用yasboot工具关闭数据库实例。
[yashan@hellodba ~]$ yasboot cluster stop -c yashandb
[yashan@hellodba ~]$ yasboot cluster stop -c yashandb -s normal
[yashan@hellodba ~]$ yasboot cluster stop -c yashandb -s immediate
[yashan@hellodba ~]$ yasboot cluster stop -c yashandb -s abort
2.2.3、注意事项
一般当主机宕机、主机断电,或者人为强制关库时才建议使用ABORT方式,否则应避免使用这种方式关库,防止出现数据丢失,或者数据库损坏。
3、归档管理
YashanDB通过开启归档模式来进行redo日志文件自动归档,用以支持生产环境中的数据热备份以及高可用主备部署场景的主备同步。当故障发生时,可以通过历史全量数据数据备份以及归档的redo日志文件重做完成数据库重建。
3.1、开启归档
3.1.1、查看归档状态
字段值为ARCHIVELOG表示为归档模式,NOARCHIVELOG表示非归档模式。
SQL> SELECT database_name,log_mode,open_mode FROM V$DATABASE;
DATABASE_NAME LOG_MODE OPEN_MODE
---------------------------------------------------------------
yashandb NOARCHIVELOG READ_WRITE
3.1.2、配置归档路径
数据库默认的归档路径为$YASDB_DATA/archive,该值由ARCHIVE_LOCAL_DEST参数控制,进入到数据库可以查看并修改归档文件存放路径。
SQL> show parameter ARCHIVE_LOCAL_DEST
NAME VALUE
----------------------------------------------------------
ARCHIVE_LOCAL_DEST ?/archive
[yashan@hellodba ~]$ mkdir -p /YashanDB/yasdb_archive
SQL> ALTER SYSTEM SET ARCHIVE_LOCAL_DEST='/YashanDB/yasdb_archive' scope=spfile;
[yashan@hellodba ~]$ yasboot cluster restart -c yashandb -m open
SQL> show parameter ARCHIVE_LOCAL_DEST
NAME VALUE
---------------------------------------------------------------
ARCHIVE_LOCAL_DEST /YashanDB/yasdb_archive
3.1.3、关闭数据库
SQL> shutdown immediate; SQL> exit
3.1.4、重启数据库
[yashan@hellodba ~]$ yasboot cluster restart -c yashandb -m mount
3.1.5、调整到归档模式
[yashan@hellodba ~]$ yasql / as sysdba
SQL> ALTER DATABASE ARCHIVELOG;
SQL> SELECT database_name,log_mode,open_mode FROM V$DATABASE;
DATABASE_NAME LOG_MODE OPEN_MODE
----------------------------------------------------------------
yashandb ARCHIVELOG MOUNTED
3.1.6、打开数据库
SQL> ALTER DATABASE OPEN;
3.1.7、在线日志切换
# 强制切换
SQL> ALTER SYSTEM SWITCH LOGFILE;
# 归档并进行切换(须处于归档模式否则返回错误)
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
3.1.8、归档日志查看
SQL> select name from V$ARCHIVED_LOG;
NAME
--------------------------------------------
/YashanDB/yasdb_archive/arch_0_11.ARC
/YashanDB/yasdb_archive/arch_0_12.ARC
3.2、关闭归档
3.2.1、关闭数据库
SQL> shutdown immediate; SQL> exit
3.2.2、重启数据库
[yashan@hellodba ~]$ yasboot cluster restart -c yashandb -m mount
3.2.3、调整到非归档模式
[yashan@hellodba ~]$ yasql / as sysdba
SQL> ALTER DATABASE NOARCHIVELOG;
SQL> SELECT database_name,log_mode,open_mode FROM V$DATABASE;
DATABASE_NAME LOG_MODE OPEN_MODE
----------------------------------------------------------------
yashandb NOARCHIVELOG MOUNTED
3.2.4、打开数据库
SQL> ALTER DATABASE OPEN;
五、总结
到此YashanDB 23.1单机部署就完成了。部署过程全部是参照官方文档完成的 官方文档。整体部署下来还是顺利的。官方文档书写也比较清晰,不足的是内容还是不够丰富,对于一些概念解析不够详细,面向有Oracle数据库基础的人来说上手还是稍稍容易些的,但如果面向没有Oracle数据库基础的人来说可能会有些吃力。希望企业版后续也能面向个人用户开放下载、测试,让更多数据库爱好者能轻松的参与进来。希望国产数据库团队继续秉承着自己的初心,不断突破技术壁垒,提升产品的功能和性能。相信在你们的努力下,国产数据库将会在未来的发展中不断壮大,成为引领行业的领先者。
公众号:Hello DBA