ITPub博客

首页 > 数据库 > 国内数据库 > 实践练习二(必选):手动部署 OceanBase 集群

实践练习二(必选):手动部署 OceanBase 集群

原创 国内数据库 作者:zy_rain 时间:2024-03-13 22:53:48 0 删除 编辑

     

    练习内容

    请记录并分享下列内容:

    1. (必选)手动部署一个 OB 单副本集群,包括一个 OBProxy 节点。
    2. (必选)创建一个业务租户、一个业务数据库,以及一些表等。

     

    服务器规划:

    服务器一台

    名称

    说明

    操作系统

    CentOS Linux    release 7.8.2003

    处理器

    4 v

    内存

    12 g

    硬盘

    80 g

     

    初始化服务器

    禁用防火墙

    停止 firewall

    systemctl stop  firewalld.service

    禁止 firewall 开机启动

    systemctl disable  firewalld.service

    禁用透明大页

    临时禁用

    echo 'never' >  /sys/kernel/mm/transparent_hugepage/enabled

     

    内核参数修改

    vi /etc/security/limits.conf

    * soft nofile 655350
      * hard nofile 655350
      * soft stack 20480
      * hard stack 20480
      * soft nproc 655360
      * hard nproc 655360
      * soft core unlimited
      * hard core unlimited

    重新会话查看限制

    ulimit  -a

     

    vi /etc/sysctl.conf
      net.core.somaxconn = 2048
      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  = 3500 65535
      net.ipv4.ip_forward = 0
      net.ipv4.conf.default.rp_filter = 1
      net.ipv4.conf.default.accept_source_route = 0
      net.ipv4.tcp_syncookies = 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_max_syn_backlog = 16384
      net.ipv4.tcp_tw_reuse = 1
      net.ipv4.tcp_tw_recycle = 1
      net.ipv4.tcp_slow_start_after_idle=0

    vm.swappiness = 0
      vm.min_free_kbytes = 2097152
     
    vm.max_map_count=655360

    fs.aio-max-nr=1048576

    sysctl -p

     

    添加用户admin

    useradd  admin

    echo " admin123 " | passwd --stdin admin

     

    从官网下载安装包上上传主机

     

    手动安装,缺少依赖的需要配置yum安装其依赖包

    安装Oceanbase server

    安装Obproxy

     

    创建

    chown admin:admin  -R /home/admin/oceanbase/

    su - admin

    mkdir -p ~/oceanbase/store/obdemo    /data/obdemo/{sstable,etc3}   /redo/obdemo/{clog,ilog,slog,etc2}

    for f in  {clog,ilog,slog,etc2}; do ln -s /redo/obdemo/$f ~/oceanbase/store/obdemo/$f ;  done

    for f in {sstable,etc3}; do ln -s   /data/obdemo/$f  ~/oceanbase/store/obdemo/$f; done

     

    • 首先创建工作目录下的总数据目录 ~/oceanbase/store/obdemo 、 数据文件目录 /data/obdemo 和日志相关目录 /redo/obdemo 。 注意,跟使用 OBD 自动化部署的 OceanBase 节点目录稍微有点不一样的地方是我在目录里加入了集群名标识( obdemo )。
    • 第二个不一样的地方是在 ~/oceanbase/store/obdemo 是真实的目录,下面的子目录是映射到其他两个文件系统路径(指 /data/ 和 /redo/ )。生产环境要求这两个文件系统尽可能是两块独立的物理盘,或者最低要求是两个独立的逻辑盘。

    我们看一下初始化后的目录结构。这个目录结构很重要,有时候进程 observer 启动失败就跟目录结构和权限不对有关。

     

    查看目录结构

    tree ~/oceanbase/store/  /data/  /redo/

     

    启动  OBSERVER 进程

     

    su - admin
      echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/oceanbase/lib' >>  ~/.bash_profile
      . ~/.bash_profile

    cd ~/oceanbase

    bin/observer  -i ens33 -p 2881 -P 2882 -z  zone1 -d ~/oceanbase/store/obdemo -r  '192.168.163.113:2882:2881' -c 20240313 -n obdemo -o  "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,cpu_count=8,net_thread_count=4,datafile_size=20G,stack_size=536K,config_additional_dir=/data/obdemo/etc3;/redo/obdemo/etc2"

     

    第一次执行报错,修改参数再次执行成功:

    bin/observer -i  ens33 -p 2881 -P 2882 -z zone1 -d ~/oceanbase/store/obdemo -r  '192.168.163.113:2882:2881' -c 20240313 -n obdemo -o  "memory_limit=10G,cache_wash_threshold=1G,__min_full_resource_pool_memory=2147483648,system_memory=3G,cpu_count=8,net_thread_count=4,datafile_size=20G,stack_size=536K,config_additional_dir=/data/obdemo/etc3;/redo/obdemo/etc2"

     

     

    检查端口是否正常

     

    集群初始化

    安装obclient

    配置环境变量

     

    通过 2881 端口直连,进行自举( bootstrap 集群初始化)操作。  初始密码是空。

    集群管理员( root@sys )密码默认集群管理员( root@sys )的密码是空的,这里需要设置一个密码

    alter user root  identified by 'rootPWD123' ;

    OBPROXY   用户( proxyro )密码默认 OBPROXY 连接 OceanBase 集群使用用户 proxyro 。这个用户不存在,需要创建

    grant select on  oceanbase.* to proxyro identified by 'rootPWD123' ;

     

    启动 obproxy,并检查端口

    cd ~/obproxy-4.0.0/  && bin/obproxy -r "192.168.163.113:2881" -p 2883 -o  "enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false"  -c obdemo

     

    • 登录 OBPROXY 修改密码

    登录用户名: root@proxysys ,  端口: 2883 ,初始密码:空。

    obclient -h 192.168.163.113 -u root@proxysys -P 2883 -p

    报错说是有bug 使用mysql 登录

    修改 OBPROXY 用户密码是通过修改参数的方式,命令是: alter proxyconfig set 。

    alter  proxyconfig set obproxy_sys_password = 'rootPWD123' ;

    同时还需要修改 OBPROXY 连接 OceanBase 集群用户 proxyro 的密码。这样 OBPROXY 才能跟  OceanBase 集群正常连接。这个密码就是前面 OceanBase 集群初始化后创建的用户 proxyro 的密码。

    alter  proxyconfig set observer_sys_password  =  'rootPWD123' ;

     

    退出,通过 OBPROXY 连接 OceanBase 集群看看, 如果能查看所有会话,则说明 OBPROXY 部署成功。

    创建一个oceanbase mysql tenant,创建一些业务数据

    通过proxy登录

    mysql -h192.168.163.113 -uroot@sys#obdemo -P2883 -prootPWD123 -c -A oceanbase

    修改资源规格,创建资源规格,创建资源规格池,创建 obmysql tenant :

     



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30349701/viewspace-3008904/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
没有刻骨铭心的记忆,怎么会有潇洒自如的帅气!

注册时间:2015-07-15

  • 博文量
    16
  • 访问量
    18031