环境准备
生产最小参考配置:(测试环境没要求)
安装版本 | 操作系统 | 内存 | 磁盘 | 网络 |
单机版 | Windows/Linux等x64操作系统 | 8GB | 100GB | 数据访问网:千兆交换网络 |
双机版 | Windows/Linux等x64操作系统 | 16GB | 100GB | 数据访问网:千兆交换网络 |
分布式版 | Windows/Linux等x64操作系统 | 32GB | 100GB | 数据交换网:千兆以上交换网络 |
适配的操作系统和cpu:
适配项 | 结果 |
cpu | 国外:ARM、X86等 国内:鲲鹏、龙芯、海光、飞腾等 |
操作系统 | 都可以 |
资源检查配置:
检查项 | 命令 |
操作系统 | cat /etc/os-release |
CPU | lscpu |
内存 | free -g |
磁盘大小 | df -h |
磁盘速度 | dd if=/dev/zero of=/data/test.log bs=8k count=20k oflag=dsync status=progress |
网络 | ip a ethtool ens33 ping -c 4 -s 1500 192.168.159.22 ping -c 4 -s 9000 192.168.159.22 ping -c 4 -s 60000 192.168.159.22 |
安装部署
安装部署步骤中如果没有指定是在哪个节点配置的话就表示每个节点都一样的配置
服务器环境配置:
cpu配置:
1.关闭CPU超线程(在BIOS查找CPU Configuration –> Hyper-threading设置为Disable)
2.关闭节能模式(在BIOS查找System Profile Settings –> system profile设置为CPU Performance)
网络配置:
查看“/etc/sysctl.conf”中是否存在网络内核参数,如果不存在则在文件末尾添加下述参数。
net.core.rmem_default = 2097152
net.core.wmem_default = 2097152
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
参数添加完成后,执行sysctl -p /etc/sysctl.conf命令使参数立即生效。
说明:
如果配置多节点数据库集群,需要检查集群内部数据交换网(内部数据交换网各个节点之间互ping,万兆网不高于0.06ms,千兆网不高于 0.1ms),如果生产环境的网络延迟未达到最低要求,请联系硬件厂商进行性能调优。
运行环境和依赖:
yum install -y libaio
安装SNMP服务
数据库集群节点硬件资源监控依赖SNMP服务,设置为开机自启动
yum install -y net-snmp
-- 设置为开机自启动
sudo systemctl enable snmpd
安装NTP服务
保证数据库集群中各个节点时间一致,设置为开机自启动
1.下载ntp:
yum install -y ntp
注意:CentOS或RedHat等系统环境下,chronyd服务与ntpd服务冲突,因此chronyd、ntpd两种时间同步方式只能二选一。当使用ntpd服务时,需要禁用chronyd服务。
systemctl disable chronyd && systemctl stop chronyd
2.添加配置
如果已经存在ntp服务器,假如为192.168.159.22,可以配置所有节点指向该ntp服务器时间。编辑高可用集群中每个节点的/etc/ntp.conf文件:
server 192.168.159.22 prefer
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
如果没有外部的时间服务器,可以选择集群中的某个节点作为时间服务器。选择一个节点为ntp服务器(以节点192.168.159.22为例)在选择的节点上配置/etc/ntp.conf文件:
server 127.127.1.0
fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
编辑高可用集群中其他节点的/etc/ntp.conf文件:
server 192.168.159.22 prefer
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
3.启动各节点ntpd服务
systemctl start ntpd
systemctl enable ntpd
systemctl status ntpd
设置为开机自启动
sudo systemctl enable ntpd
防火墙:
systemctl status firewalld.service
systemctl stop firewalld
systemctl disable firewalld
或者开启数据库端口5138和集群通信端口(cluster.ini中配置的端口以及每个发送端口+20)
firewall-cmd --zone=public --permanent --add-port=5138/tcp
firewall-cmd --permanent --zone=public --add-port=50000/udp
firewall-cmd --permanent --zone=public --add-port=50020/udp
firewall-cmd --reload
firewall-cmd --list-ports
selinux设置:
1、查看是否开启SELINUX,如果是未开启则是diabled,已开启则是enforcing
# getenforce
2、临时关闭SELINUX
setenforce 0
3、通过修改配置文件永久关闭SELINUX
(1)vim 编辑配置文件 /etc/selinux/config
(2)将SELINUX=enforcing修改为SELINUX=disabled
(3)重启系统reboot
内核参数配置:
ulimit -a
open files (-n) 10240
stack size (kbytes, -s) 20480
如果设置偏小,可以通过“/etc/profile”配置文件,在文件尾部追加下列两行参数
vim /etc/profile
ulimit -s 20480
ulimit -n 10240
source /etc/profile
安装数据库
准备安装包
创建数据库安装目录
mkdir -p /data/xugu/
上传安装包到安装目录并解压
tar -xvf xugu-12.6.9-Linux-x86_64-20240924.tar.gz
将解压后将BIN目录的上一层目录移动到/data/xugu/下并重命名xugudb
mv Server xugudb
检查端口
检查外部连接端口
lsof -i:5138
检查内部通信端口
lsof -i:50000
lsof -i:50020
lsof -i:50001
lsof -i:50021
配置数据库参数
系统缓冲区
data_buff_mem = 20480; 数据缓冲区内存(单位:M)
swap_buff_mem = 512; 交换缓冲区内存(单位:M)
system_sga_mem = 4096; 系统全局区内存(单位:M)
max_hash_mem = 1024; 允许单个hash节点使用的最大内存量(单位:M)
hash_parti_num = 16; Hash运算在内存不够时转入分组处理的分组数
max_malloc_once = 512; 最大单次分配内存块大小(单位:M)
max_task_mem = 0; 任务线程运行最大内存(单位:M,0表示不限制)
存贮子系统参数
def_data_space_size = 10240; 默认数据表空间的初始尺度(单位:M)
def_temp_space_size = 1024; 默认临时表空间的初始尺度(单位:M)
def_undo_space_size = 5120; 默认回滚表空间的初始尺度(单位:M)
def_redo_file_size = 10240; 默认重做日志文件尺度(单位:M)
def_file_step_size = 1024; 默认表空间文件的增长步长(单位:M)
集群配置文件
注意端口数MSG_PORT_NUM,和PORTS中配置的端口数保持一致,和每个节点MY_NID,MY_NID=0001表示节点1,MY_NID=0002表示节点2,各个参数的作用可以参考:集群文件配置 | 文档中心
#MAX_NODES=16 MASTER_GRPS=1 PROTOCOL='UDP' MSG_PORT_NUM=2 MAX_SEND_WIN=510
MSG_HAVE_CRC=0 MERGE_SMALL_MSG=1 MSG_SIZE=9000 TIMEOUT=20000 RPC_WINDOW=16
EJE_WINDOW=16 MAX_SHAKE_TIME=1200 MY_NID=0001 CHECK_RACK=0
NID=0001 RACK=0001 PORTS='192.168.159.21:50000,192.168.159.21:50001' ROLE='MSQW' LPU=3 STORE_WEIGHT=3 STATE=DETECT;
NID=0002 RACK=0001 PORTS='192.168.159.22:50000,192.168.159.22:50001' ROLE='MSQW' LPU=3 STORE_WEIGHT=3 STATE=DETECT;
NID=0003 RACK=0001 PORTS='192.168.159.23:50000,192.168.159.23:50001' ROLE='MSQW' LPU=3 STORE_WEIGHT=3 STATE=DETECT;
NID=0004 RACK=0001 PORTS='192.168.159.24:50000,192.168.159.24:50001' ROLE='MSQW' LPU=3 STORE_WEIGHT=3 STATE=DETECT;
文件位置配置(可选)
文件位置默认放到数据库安装目录的XHOME下,如果使用迷人配置就不用修改,如果需要单独配置文件路径,可以通过mount.ini和datafile.ini文件修改data表空间、temp表空间、undo表空间三种类型文件目录
所有数据文件都放到指定目录下,只用修改mount.ini的路径,可以不用添加datafile.ini,比如将数据文件都放到/data/xugu/xugudb/DATA下就只有修改mount.ini中的/DATA
vim mount.ini
/XGLOG ./XGLOG
/CATA ./XHOME/CATA
/DATA /data/xugu/xugudb/DATA
/TEMP ./XHOME/TEMP
/REDO ./XHOME/REDO
/BACKUP ./BACKUP
/ARCH ./XHOME/ARCH
/UNDO ./XHOME/UNDO
/MODI ./XHOME/XMODI
数据文件放到指定的多个目录下,添加mount.ini的路径,不用删除默认路径,添加datafile.ini指定每个目录下的文件(datafile.ini中的注释不能随便写,否则无法识别是什么文件)
比如将数据文件分别指定路径:
vim mount.ini
/DATA1 /data/xugu/xugudb/data1
/DATA2 /data/xugu/xugudb/data1
/DATA3 /data/xugu/xugudb/data2
/DATA4 /data/xugu/xugudb/data2
/XGLOG ./XGLOG
/CATA ./XHOME/CATA
/DATA ./XHOME/DATA
/TEMP ./XHOME/TEMP
/REDO ./XHOME/REDO
/BACKUP ./XHOME/BACKUP
/ARCH ./XHOME/ARCH
/UNDO ./XHOME/UNDO
/MODI ./XHOME/XMODI
vim datafile.ini
#DATA_FILES
/DATA1/DBDATA1.DBF
/DATA2/DBDATA2.DBF
/DATA3/dbdata3.DBF
/DATA4/dbdata4.DBF
启动数据库:
到数据库BIN目录下执行启动脚本或者命令
sh xugu_start.sh
或者
$PWD/xugu_linux_x86_64_20240924 -service
执行启动脚本或者命令后可以查看stdout.txt,如果打印出端口号表示启动成功
登录数据库
拷贝命令行工具xgconsole到/usr/bin下
cp -a xgconsole /usr/bin
使用命令行工具登录数据库
xgconsole nssl 127.0.0.1 5138 system sysdba SYSDBA
Show clusters;
创建数据库
创建数据库只能在system系统库下执行
create database yewuku char set ‘utf8’;
创建用户
每个数据库都是独立的,每个库下的对象都只能进入各个库后进行操作,比如在新建库下创建用户,必须先进入新建库再执行创建用户的命令
use yewuku;
create user yonghu identified by ‘yonghu@2024!’;
grant dba to yonghu;
这样分布式集群数据库就安装部署完成啦