博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ob集群安装部署相关
阅读量:2065 次
发布时间:2019-04-29

本文共 13354 字,大约阅读时间需要 44 分钟。

 

一、黑屏(命令行)模式安装ob三节点集群

1、主机规划

主机名

ip

内存(G)

cpu

安装软件

占用端口

mgr1

172.16.80.57

128

32

observer(zone1)、obclient、obproxy

2881、2882、2883(obproxy)

mgr2

172.16.80.58

128

32

observer(zone2)、obclient

2881、2882

mgr3

172.16.80.59

128

32

observer(zone3)、obclient

2881、2882、80

2、所有主机初始化(关键步骤)

关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

关闭SELINUX

关闭 NUMA 特性

调整cpu主频

vim set_cpufreq.sh

#!/bin/bash

performance_cpu_num=`cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor | grep 'performance' | wc -l`

cpu_num=`cat /proc/cpuinfo | grep ^processor | wc -l`

if [[ performance_cpu_num -ne cpu_num ]]; then

cpupower frequency-set -g performance

if [[ $? -ne 0 ]]; then

cpu_num=`cat /proc/cpuinfo | grep ^processor | wc -l`

let cpu_num=$cpu_num-1

for i in $(seq 0 $cpu_num); do

echo 'performance' > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_governor

done

fi

fi

 

sh set_cpufreq.sh

 

安装必要包

yum install -y expect mariadb mariadb-devel python-devel openssl-devel gcc gcc-gfortran gcc-c++ python-setuptools bc net-t ools mtr ntp bind-utils libaio

添加配置到/etc/sysctl.conf

# for oceanbase

net.core.somaxconn=32768

net.core.netdev_max_backlog=10000

net.core.rmem_default=16777216

net.core.wmem_default=16777216

net.core.rmem_max=16777216

net.core.wmem_max=16777216

net.ipv4.ip_local_port_range=10000 65535

net.ipv4.ip_forward=1

net.ipv4.conf.default.rp_filter=1

net.ipv4.conf.default.accept_source_route=0

net.ipv4.tcp_rmem=4096 87380 16777216

net.ipv4.tcp_wmem=4096 65536 16777216

net.ipv4.tcp_max_syn_backlog=16384

net.ipv4.tcp_fin_timeout=15

net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_slow_start_after_idle=0

vm.swappiness=0

kernel.core_pattern=/data/1/core-%e-%p-%t

vm.min_free_kbytes=2097152

fs.aio-max-nr=1048576

vm.max_map_count=655360

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.all.arp_ignore = 1

配置会话参数

vi /etc/security/limits.conf

* soft nofile 655360

* hard nofile 655360

* soft nproc 655360

* hard nproc 655360

* hard core unlimited

* soft core unlimited

* hard stack 10240

* soft stack 10240

* hard cpu unlimited

* soft cpu unlimited

配置yum源

配置ntp时间同步

(1)配置ntp服务器

yum -y install ntp ntpdate

 

vi /etc/ntp.conf

restrict 172.16.80.57 nomodify notrap nopeer noquery

restrict 127.0.0.1

restrict ::1

restrict 172.16.83.254 mask 255.255.252.0 nomodify notrap

server 127.127.1.0

Fudge 127.127.1.0 stratum 10

 

systemctl enable ntpd

systemctl start ntpd

(2)配置客户端

yum -y install ntp ntpdate

 

vi /etc/ntp.conf

restrict 172.16.80.59 nomodify notrap nopeer noquery

restrict 127.0.0.1

restrict ::1

restrict 172.16.83.254 mask 255.255.252.0 nomodify notrap

server 172.16.80.57

Fudge 172.16.80.57 stratum 10

 

systemctl enable ntpd

systemctl start ntpd

 

安装mysql客户端(最好使用mariadb版mysql)

yum -y install mariadb*

创建admin用户(保证uid和gid均为500,且保证/home分区大于200G)

groupadd -g 500 admin

useradd -u 500 -g admin admin

配置admin用户的sudo权限

visudo

Defaults:admin !requiretty

admin ALL = NOPASSWD: ALL

配置必要目录(生产要保证使用SSD,ob建议使用ext4)

mkdir -p /data/1

mkdir -p /data/log1

lvcreate -L +500g -n lvlog1 vgflash

lvcreate -L +800g -n lv1 vgflash(保证留给/data/log1的空间大小是内存的 2-4 倍)

mkfs.ext4 /dev/vgflash/lv1

mkfs.ext4 /dev/vgflash/lvlog1

vi /etc/fstab

/dev/mapper/vgflash-lvlog1  /data/log1   ext4     defaults        0 0

/dev/mapper/vgflash-lv1       /data/1        ext4     defaults        0 0

 

mount /data/log1

mount /data/1

chown -R admin.admin /data/

 

3、安装ob集群

安装oceanbase软件

rpm -ivh oceanbase-2.2.75-20210108170301.el7.x86_64.rpm

会自动安装到/home/admin/oceanbase/下

清理ob目录(第一次安装此步骤可跳过)

当要清理之前的OB 环境,或者 OB 安装部署过程中出现问题影响下一次安装时,选择直接清理老的 OB 目录

su - admin

kill -9 `pidof observer`

sleep 3

/bin/rm -rf /data/1/obdemo

/bin/rm -rf /data/log1/obdemo

/bin/rm -rf /home/admin/oceanbase/store/obdemo /home/admin/oceanbase/log/* /home/admin/oceanbase/etc/*config*

ps -ef|grep observer

df -h |egrep home\|data

初始化ob目录

su - admin

mkdir -p /data/1/obdemo/{etc3,sort_dir,sstable}

mkdir -p /data/log1/obdemo/{clog,etc2,ilog,slog,oob_clog}

mkdir -p /home/admin/oceanbase/store/obdemo

for t in {etc3,sort_dir,sstable};do ln -s /data/1/obdemo/$t /home/admin/oceanbase/store/obdemo/$t; done

for t in {clog,etc2,ilog,slog,oob_clog};do ln -s /data/log1/obdemo/$t /home/admin/oceanbase/store/obdemo/$t; done

 

确认目录结构

cd /home/admin/oceanbase

image.png

安装obclient

mysql客户端可以直接访问ob的mysql租户,但sqlplus无法访问ob的oracle租户,需要安装obclient访问oracle租户

rpm -ivh obclient-1.2.4-20200801182350.el7.alios7.x86_64.rpm

初始化OB集群

mgr1(zone1):

su - admin

cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -i ens5f0 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/obdemo -r '172.16.80.57:2882:2881;172.16.80.58:2882:2881;172.16.80.59:2882:2881' -c 20210127 -n obdemo -o "system_memory=10G,datafile_size=100G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"

 

mgr2(zone2)

su - admin

cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -i ens5f0 -P 2882 -p 2881 -z zone2 -d /home/admin/oceanbase/store/obdemo -r '172.16.80.57:2882:2881;172.16.80.58:2882:2881;172.16.80.59:2882:2881' -c 20210127 -n obdemo -o "system_memory=10G,datafile_size=100G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"

 

mgr3(zone3)

su - admin

cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -i ens5f0 -P 2882 -p 2881 -z zone3 -d /home/admin/oceanbase/store/obdemo -r '172.16.80.57:2882:2881;172.16.80.58:2882:2881;172.16.80.59:2882:2881' -c 20210127 -n obdemo -o "system_memory=10G,datafile_size=100G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"

image.png

bootstrap集群(集群搭建是否成功的关键步骤)

选择一个机器,直接不输入密码

mysql -h127.1 -uroot -P2881 -p

Enter password:

set session ob_query_timeout=1000000000;

alter system bootstrap ZONE 'zone1' SERVER '172.16.80.57:2882', ZONE 'zone2' SERVER '172.16.80.58:2882',ZONE 'zone3' SERVER '172.16.80.59:2882';

alter user root identified by "******";

 

注意:

如果这一步失败报错了,其原因很可能就是三节点或单节点的 observer 进程启动参数有不对、observer 相关目录权限不对、日志目录空间不足一定比例(跟数据目录合用了大目录,空间被数据目录占用了)、三节点时间不同步、节点内存资源不足等等。请先排查这些问题点后,然后从【清理ob目录】开始重新初始化

 

验证集群初始化成功

mysql -h127.1 -uroot@sys -P2881 -p -c -A

show databases; --显示oceanbase即可

image.png

优化ob参数

alter system set enable_syslog_recycle=true;

alter system set max_syslog_file_count=100;

ALTER SYSTEM SET enable_merge_by_turn=FALSE;

ALTER SYSTEM set minor_freeze_times=100;

ALTER SYSTEM set freeze_trigger_percentage=70;

查看ob参数文件

ob参数文件是二进制文件,/home/admin/oceanbase/etc/observer.config.bin,可以用strings命令查看

image.png

4、obproxy配置

安装obproxy(随便选择一台主机mgr1安装)

rpm -ivh obproxy-1.8.4.1-1916278.el7.x86_64.rpm

obproxy会被安装到/opt/taobao/install下,可以做个软连接到obproxy

ln -s obproxy-1.8.4.1 obproxy

image.png

su - admin

mkdir -p /home/admin/logs/obproxy/log

mkdir -p /home/admin/logs/obproxy/minidump

创建ob集群账户

OBProxy 需要跟后端 OBServer 节点保持通信,使用的是内部账户密码,需要提前在 OB 集群(随便找一台)的sys租户下为OBProxy 创建连接账户和密码。(请复制下面SQL不要改动)。

mysql -h127.1 -uroot@sys -P2881 -p -c -A

Enter password:

CREATE USER proxyro IDENTIFIED BY password '*e9c2bcdc178a99b7b08dd25db58ded2ee5bff050' ;

GRANT SELECT ON *.* to proxyro;

image.png

在mgr1上启动obproxy

su - admin

cd /opt/taobao/install/obproxy && bin/obproxy -r "172.16.80.57:2881;172.16.80.58:2881;172.16.80.59:2881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c obdemo

ps -ef|grep obproxy

优化obproxy参数

mysql -h127.1 -uroot@sys -P2883 -p -c -A

alter proxyconfig set slow_proxy_process_time_threshold='1000ms';

alter proxyconfig set xflush_log_level=ERROR;

alter proxyconfig set syslog_level=WARN;

alter proxyconfig set enable_compression_protocol=false;

obproxy操作

停止 OBProxy 进程的方法是直接 kill

kill -9 `pidof obproxy`

再次启动 OBProxy 进程不需要指定参数。因为参数已经写到参数文件 /opt/taobao/install/obproxy/etc/obproxy_config.bin中

cd /opt/taobao/install/obproxy && bin/obproxy

obproxy访问ob集群

obclient -uroot@sys -p -h172.16.80.57 -P2883

二、部署OCP管理控制台

ocp的部署是使用脚本一步步部署的,ocp的后台数据库是一套跑在docker中的ob集群,obproxy也是跑在docker中,同样ocp也是部署在docker中的

1、ocp主机规划

主机名

ip

内存(G)

cpu

安装软件

占用端口

mgr0

172.16.80.56

128

32

docker、ocp(observer、obproxy、ocp)

2881、2882、2883、8080

按照一.(2)的步骤初始化ocp主机

2、安装antman,生成部署脚本和配置文件

rpm -ivh t-oceanbase-antman-1.3.5-1912795.alios7.x86_64.rpm

antman安装后会在/root/t-oceanbase-antman下自动生成各种安装脚本、docker安装包

image.png

3、生成配置文件obcluster.conf

./init_obcluster_conf.sh

4、安装docker

mkdir /docker

lvcreate -L +500g -n lvdocker vgocp

mkfs.ext4 /dev/vgocp/lvdocker

vi /etc/fstab

/dev/vgocp/lvdocker  /docker   ext4     defaults        0 0

mount /docker

 

cd /root/t-oceanbase-antman/clonescripts/db_ob_v1/docker

./install-docker.sh docker-18.03.0-ce.tgz /docker

systemctl status docker

image.png

5、手动加载ocp、ob和obproxy镜像

docker load -i ocp250.tar.gz

docker load -i obmeta2273_x86_1205.tar.gz

docker load -i obproxy173.tar.gz

记录下镜像的TAG填到obcluster.conf中

docker images

image.png

6、配置obcluster.conf

只列出了需要修改的必要部分,其他保持默认即可:

#配置ocp为单机模式

SINGLE_OCP_MODE=TRUE

######## 根据环境必须修改 / MUST CHANGE ACCORDING ENVIRONMENT

############  填写机器IP和root/admin密码 / Edit Machine IP and Password Of root/admin  ############

ZONE1_RS_IP=172.16.80.56

OBSERVER01_ROOTPASS=******

OBSERVER01_ADMINPASS=****

SSH_PORT=22

 

### 根据服务器CPU、内存设置容器资源编排 / Allocate Container Resources According To Server  ########

OB_docker_cpus=32

###注意这个ob分配的内存值一定要够大,否则会安装卡住最后失败,一般安装问题都是此值问题

OB_docker_memory=128G

OCP_docker_cpus=8

OCP_docker_memory=16G

OBProxy_docker_cpus=4

OBProxy_docker_memory=6G

 

##### 填写OCP各组件容器的版本信息 / Edit Docker Image, Repo And Tag of OCP Components  #########

# OB docker

docker_image_package=obmeta2273_x86_1205.tar.gz

OB_image_REPO=reg.docker.alibaba-inc.com/antman/ob-docker

OB_image_TAG=OB2273_x86_20201201_2206

# OCP docker

ocp_docker_image_package=ocp250.tar.gz

OCP_image_REPO=reg.docker.alibaba-inc.com/oceanbase/ocp-all-in-one

OCP_image_TAG=2.5.0-1918031

# OBPROXY docker

obproxy_docker_image_package=obproxy173.tar.gz

obproxy_image_REPO=reg.docker.alibaba-inc.com/antman/obproxy

obproxy_image_TAG=OBP173_20200603_1923

 

######  自动配置,无需修改 / AUTO-CONFIGURATION ######

OBPROXY_VIP=172.16.80.56

OBPROXY_VPORT=2883

OCP_VIP=172.16.80.56

OCP_VPORT=8080

7、开始安装ob、obproxy和ocp

根据脚本的help指导分别执行1,3-7步骤

image.png

(1)配置免密

./install.sh -i 1

(2)安装observer

./install.sh -i 3

此步骤耗时较久,也是最有可能失败的步骤,主要在于配置文件中OB_docker_memory,如果超过10分钟还是卡住的话,则需要清理此步骤(-c可以清理重新安装),重新修改配置文件,重新安装

./install.sh -c 3

 

./install.sh -i 3

(3)安装ocp metadb

此步骤主要是创建ocp_meta\ocp_monitor等租户和相应的表

./install.sh -i 4

(4)安装temp ocp

此步骤是不依托obproxy,直连observer的,可以通过此步预览ocp安装效果

./install.sh -i 5

(5)安装obproxy

./install.sh -i 6

(6)安装ocp

./install.sh -i 7

(7)验证ocp

此时ocp安装部署完成,会生成一个/root/t-oceanbase-antman/config/env_ocp.yaml文件记录各个租户root密码

ocp:

mysql -h172.16.80.56 -P2881 -uroot -p*****

mysql -h172.16.80.56 -P2881 -uroot@ocp_monitor -p****

mysql -v -h172.16.80.56 -P2881 -uroot@ocp_meta -p****

访问可修改admin密码并登陆

image.png

8、ocp接管已存在的ob集群

ocp可以创建集群,同样也可以接管已存在的集群,只需要【接管集群】,填写必要的连接信息即可

image.png

下一步自动添加主机,即接管完成

image.png

三、安装oms迁移工具

oms迁移工具可以实现mysql、oracle到observer的迁移,oms安装也可以通过antman的install.sh完成

image.png

安装oms一定要以 root 用户登录曾执行过安装 OCP 的服务器,因为安装 OCP 时本地生成了相关用户和密码信息;且安装的oms不能与ocp在同一台主机,否则会导致端口冲突

1、主机规划

主机名

ip

安装软件

占用端口

mgr3

172.16.80.59

oms

80、8080

2、手动copy oms软件包到/root/t-oceanbase-antman

oms跟ocp的安装逻辑不太一样,需要保证oms安装包在相应目录下;同时要保证repo和tag正确,也需要手动load oms镜像

image.png

3、配置obcluster.conf

#####  如果准备部署OMS,请填写OMS基本配置 / Edit Configuration Of OMS When Deploying OMS  #####

OMS_IP=172.16.80.59

oms_docker_image_package=oms.feature_1.4.3.202012212114.tar.gz

oms_image_REPO=acs-reg.alipay.com/oceanbase/oms-all-in-one

oms_image_TAG=feature_1.4.3

4、mgr3安装docker

rpm -ivh t-oceanbase-antman-1.3.6-1915555.alios7.x86_64.rpm

lvcreate -L 200g -n lvdocker vgdata

mkfs.xfs /dev/vgdata/lvdocker  

vi /etc/fstab

/dev/vgdata/lvdocker       /var/lib/docker  xfs     defaults        0 0

mount /var/lib/docker  

./install-docker.sh docker-18.03.0-ce.tgz /var/lib/docker

5、mgr3安装oms

./install.sh -i 9

oms_tenant的root密码等信息在/root/t-oceanbase-antman/config/oms_conf.yaml

6、验证oms安装

默认登陆用户为admin,密码等信息在oms_tips.txt中(此文件还包括配置同步任务需要符合的要求)

image.png

四、配置OMS迁移任务

1、迁移前配置oracle

(1)检查 Oracle 源端字符集配置

image.png

select * from v$nls_parameters where parameter like '%CHARACTER%';

image.png

(2)开启oracle附加日志和归档

alter database archivelog; --数据库mount模式开启归档

 

alter database add supplemental log data;

alter database add supplemental log data(primary key) columns;

alter database add supplemental log data(unique) columns;

alter database add supplemental log data(foreign key) columns;

alter database add supplemental log data(all) columns;

 

select log_mode, supplemental_log_data_min,supplemental_log_data_pk, supplemental_log_data_ui, supplemental_log_data_fk, supplemental_log_data_all from v$database;

image.png

(3)设置隐含参数数 _log_parallelism_max

set lines 400;

col name for a30;

col value for a10;

select

x.ksppinm  name,

y.ksppstvl  value,

y.ksppstdf  isdefault,

decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE')  ismod,

decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE')  isadj

from

sys.x$ksppi x,

sys.x$ksppcv y

where

x.inst_id = userenv('Instance') and

y.inst_id = userenv('Instance') and

x.indx = y.indx   and x.ksppinm like '_log_parallelism_max'

order by

translate(x.ksppinm, ' _', ' ');

 

alter system set "_log_parallelism_max" =1 scope=spfile; --需要重启数据库生效

 

(4)重启oracle实例

(5)配置相应权限给迁移用户

Oracle 12c 之后版本,除了dba权限外,数据库用户还需要具备 select on sys.USER$ 权限

grant dba to test;

grant select on sys.USER$ to test;

(5)配置oracle机器时钟源与oms机器同步

2、设置数据源

oracle源端数据源:

保证迁移的用户具有dba权限:

image.png

OB目标端数据源(先保证创建oracle租户,可参考语雀【ob运维相关--oracle和mysql租户】):

image.png

新建迁移项目,分别选择建好的源端数据源和目标数据源

image.png

image.png

正常全量迁移只需选择【迁移无主键表】、【结构同步】、【需要全量校验】即可

image.png

将要迁移的表加入白名单

image.png

预检查--保证所有表disable row movement,且保证表没有blob等长字符类型,源库和目标库主机ntp同步

image.png

进入迁移项目,生成代做任务

image.png

运行任务

image.png

全量数据的迁移是在【确认全量迁移完成】这一步

image.png

可能遇到的问题

此时可能由于oms组件问题,导致所有任务一直pending,需要检查oms组件状态

进入oms容器,执行supervisorctl status

image.png

需要重启oms容器或者此组件

docker restart 098b51ba543f 或者

supervisor -i start oms_drc_ha

image.png

然后pending的任务会自动running

 

转载地址:http://glwmf.baihongyu.com/

你可能感兴趣的文章
【SQL】group by 和order by 的区别。
查看>>
【Python】详解Python多线程Selenium跨浏览器测试
查看>>
Jmeter之参数化
查看>>
Shell 和Python的区别。
查看>>
Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
查看>>
Loadrunner之https协议录制回放报错如何解决?(九)
查看>>
python中xrange和range的异同
查看>>
列表、元组、集合、字典
查看>>
【Python】easygui小甲鱼
查看>>
【Python】关于Python多线程的一篇文章转载
查看>>
【Pyton】【小甲鱼】文件
查看>>
【Pyton】【小甲鱼】永久存储:腌制一缸美味的泡菜
查看>>
【Pyton】【小甲鱼】异常处理:你不可能总是对的
查看>>
APP性能测试工具
查看>>
【Pyton】【小甲鱼】类和对象
查看>>
压力测试工具JMeter入门教程
查看>>
作为一名软件测试工程师,需要具备哪些能力
查看>>
【Pyton】【小甲鱼】类和对象:一些相关的BIF(内置函数)
查看>>
【Pyton】【小甲鱼】魔法方法
查看>>
单元测试需要具备的技能和4大阶段的学习
查看>>