本文共 13354 字,大约阅读时间需要 44 分钟。
主机名 | 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 |
关闭防火墙
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/
安装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
安装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"
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即可
优化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命令查看
安装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
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;
在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的后台数据库是一套跑在docker中的ob集群,obproxy也是跑在docker中,同样ocp也是部署在docker中的
主机名 | ip | 内存(G) | cpu | 安装软件 | 占用端口 |
mgr0 | 172.16.80.56 | 128 | 32 | docker、ocp(observer、obproxy、ocp) | 2881、2882、2883、8080 |
按照一.(2)的步骤初始化ocp主机
rpm -ivh t-oceanbase-antman-1.3.5-1912795.alios7.x86_64.rpm
antman安装后会在/root/t-oceanbase-antman下自动生成各种安装脚本、docker安装包
./init_obcluster_conf.sh
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
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
只列出了需要修改的必要部分,其他保持默认即可:
#配置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
根据脚本的help指导分别执行1,3-7步骤
(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密码并登陆
ocp可以创建集群,同样也可以接管已存在的集群,只需要【接管集群】,填写必要的连接信息即可
下一步自动添加主机,即接管完成
oms迁移工具可以实现mysql、oracle到observer的迁移,oms安装也可以通过antman的install.sh完成
安装oms一定要以 root 用户登录曾执行过安装 OCP 的服务器,因为安装 OCP 时本地生成了相关用户和密码信息;且安装的oms不能与ocp在同一台主机,否则会导致端口冲突
主机名 | ip | 安装软件 | 占用端口 |
mgr3 | 172.16.80.59 | oms | 80、8080 |
oms跟ocp的安装逻辑不太一样,需要保证oms安装包在相应目录下;同时要保证repo和tag正确,也需要手动load oms镜像
##### 如果准备部署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
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
./install.sh -i 9
oms_tenant的root密码等信息在/root/t-oceanbase-antman/config/oms_conf.yaml
默认登陆用户为admin,密码等信息在oms_tips.txt中(此文件还包括配置同步任务需要符合的要求)
(1)检查 Oracle 源端字符集配置
select * from v$nls_parameters where parameter like '%CHARACTER%';
(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;
(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机器同步
oracle源端数据源:
保证迁移的用户具有dba权限:
OB目标端数据源(先保证创建oracle租户,可参考语雀【ob运维相关--oracle和mysql租户】):
新建迁移项目,分别选择建好的源端数据源和目标数据源
正常全量迁移只需选择【迁移无主键表】、【结构同步】、【需要全量校验】即可
将要迁移的表加入白名单
预检查--保证所有表disable row movement,且保证表没有blob等长字符类型,源库和目标库主机ntp同步
进入迁移项目,生成代做任务
运行任务
全量数据的迁移是在【确认全量迁移完成】这一步
可能遇到的问题
此时可能由于oms组件问题,导致所有任务一直pending,需要检查oms组件状态
进入oms容器,执行supervisorctl status
需要重启oms容器或者此组件
docker restart 098b51ba543f 或者
supervisor -i start oms_drc_ha
然后pending的任务会自动running
转载地址:http://glwmf.baihongyu.com/