OceanBase集群手动安装方法

前言

目前有关OceanBase功能、案例、故事的文章已经很多,对OceanBase感兴趣的朋友都想安装一个数据库试试。本文就是分享初学者如何手动搭建一个OceanBase集群。这也是学习理解OceanBase集群原理的第一步。在生产环境,我们有自动化运维平台OCP可以负责生产环境的OceanBase集群部署和运维。同时官网上提供的下载文件里也有python脚本自动化部署OceanBase集群,大家熟悉了安装原理后就可以使用那个自动化脚本。

OceanBase是分布式数据库,以集群的形式存在,是share-nothing架构。各个节点就是普通的x86服务器,使用本地盘(SSD),不依赖共享存储,也没有集群文件系统。各个节点之间网络互通即可,不需要直连线。所以OceanBase集群的搭建相比ORACLE RAC集群而言,还是很简单的。不过目前还不完美的是OceanBase对内存资源要求不低,建议学习环境每个节点在32G以上,64G更好。并且OceanBase集群至少包含三个节点,节点数以奇数递增。如果有三台机器更好,但是如果只有一台机器,但是内存够大(192G以上),那也可以启动三个OceanBase进程来模拟三个节点。

observer安装

OceanBase分布式数据库是以集群形式存在,至少三个节点,每个节点的形式一个observer进程,不同节点上多个observer进程组成一个集群对外提供服务。

安装规划

本次安装目标会搭建一个2-2-2架构的OceanBase集群,理论上这个需要6台机器,实际上我只有3台。因此我会在每个机器上启动2个OceanBase进程来模拟2个节点。
机器节点规划如下。如果你只有一台大内存的机器,可以在上面起3个或者6个OceanBase进程,注意RPC PortConnect Port不要重复或者跟其他应用端口冲突即可。

Zone IP RPC Port Connect Port
Zone1 192.168.1.241 2882 2881
Zone1 192.168.1.241 3882 3881
Zone2 192.168.1.81 2882 2881
Zone2 192.168.1.81 3882 3881
Zone3 192.168.1.86 2882 2881
Zone3 192.168.1.86 3882 3881

由于OceanBase是分布式数据库,应用的数据可能分布在任一节点上,所以应用需要通过一个反向代理OBProxy来访问OceanBase集群。OBProxy可以安装在任意机器上,包括OceanBase数据库节点上。这里我安装在其中一个节点上。

机器环境准备

OceanBase机器节点环境主要是安装用户、内核参数配置、防火墙和SELinux设置、时间同步设置、和用户会话限制等。

  • 安装用户

OceanBase默认会安装在用户admin下。可以选择安装在其他用户下(不使用RPM包安装)。
通常建议admin用户配置sudo权限,这样安装过程中就不需要root账户介入。

useradd admin
passwd admin# 赋予sudo权限
chmod u+w /etc/sudoers
vi /etc/sudoers
root ALL=(ALL) ALL
admin ALL=(ALL) ALL
chmod u-w /etc/sudoers
  • 用户会话设置

使用命令ulimit可以查看用户会话默认限制。修改下面文件可以默认会话限制修改永久生效。

sudo 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
  • 内核参数配置

内核参数主要是网络、内存相关的设置。

sudo vi /etc/sysctl.conffs.aio-max-nr = 65536
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 = 16777216net.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=0vm.swappiness = 0
kernel.core_pattern = /data/1/core-%e-%p-%t
vm.min_free_kbytes = 2097152
vm.max_map_count=655360

修改后使用下面命令生效,并检查

sudo sysctl -p
  • 关闭防火墙和SELinux

Linux的防火墙和SELinux安全特性可能会导致OceanBase各个节点之间通信异常,所以都建议关闭

sudo systemctl disable firewalld
sudo systemctl stop firewalld
sudo systemctl status firewalldsudo vi /etc/selinux/config
SELINUX=disabledsudo setenforce 0
  • 节点时间同步设置

OceanBase是个分布式数据库,要求各个节点的时间保持同步,时间误差控制在50ms以内。节点时间误差偏大时,后面初始化OceanBase集群会失败,或者现有的OceanBase集群会出现异常。

节点间的时间同步要靠Linux的NTP同步来保证。检查时间误差 使用clockdiff命令

clockdiff 192.168.1.86
clockdiff 192.168.1.81
clockdiff 192.168.1.241

配置节点的NTP同步

sudo vi /etc/ntp.conf
server 192.168.1.239

停掉ntpd服务,强行同步一次时间,再启动ntpd服务。后续时间同步靠ntpd服务。

sudo service ntpd stop;
sudo ntpdate 192.168.1.239;
sudo service ntpd start;ntpq -4p

软件安装

  • 软件目录

目前官网(oceanbase.alipay.com)上提供了OCP试用版下载,里面包含了OCP和OB的很多文件,手动安装只需要里面两个RPM文件:obproxyoceanbase。获取方法如下:

wget https://gw.alipayobjects.com/os/downloads/ossupload/ocp-release.zip
unzip ocp-release.zip
tar zxvf ocp-setup.tar.gz
cd ocp_yh
ls -lrth obproxy-1.3.3-1506155.el7.x86_64.rpm  oceanbase-1.4.60-1571952.el7.x86_64.rpm

我们先看一下oceanbaseRPM包内容,

rpm2cpio oceanbase-1.4.60-1571952.el7.x86_64.rpm |cpio –divcd home/admin;tar czvf ob1.4.6.tar.gz oceanbase/cd ~/
scp home/admin/ob1.4.6.tar.gz 192.168.1.241:/tmp/;
scp home/admin/ob1.4.6.tar.gz 192.168.1.81:/tmp/;
scp home/admin/ob1.4.6.tar.gz 192.168.1.86:/tmp/;

可以看到目录结构如下。其中bin下有可执行文件observeretc目录用于存放配置和相关脚本。

如果直接安装该RPM包,则会安装在admin用户的根目录下。由于我们要在一个机器上启动两个observer进程,彼此软件目录要分开。所以改用解压缩RPM包文件然后复制到两个目录,目录owneradmin

su - admin
mkdir -p node1 node2cd ~/node1; tar zxvf /tmp/ob1.4.6.tar.gz -C .cd ~/node2; tar zxvf /tmp/ob1.4.6.tar.gz -C .    cd ~/; tree
  • 存储目录

OceanBase的存储目录是在软件目录下的store文件夹里。存储目录会包含数据文件目录和相关日志文件目录。出于性能考虑,数据文件目录和相关日志文件目录都需要单独的文件系统(如果底层是独立的盘会更好)。然后把实际目录映射到软件目录下的store目录下。

su - adminmkdir -p /data/data/1/obdemo/{etc3,sort_dir,sstable}
mkdir -p /data/log/log1/obdemo/{clog,etc2,ilog,oob_clog,slog}
mkdir -p /home/admin/node1/oceanbase/store/obdemo
for t in {etc3,sort_dir,sstable};do ln -s /data/data/1/obdemo/$t /home/admin/node1/oceanbase/store/obdemo/$t; done
for t in {clog,etc2,ilog,slog,oob_clog};do ln -s /data/log/log1/obdemo/$t /home/admin/node1/oceanbase/store/obdemo/$t; donetree /home/admin/node1/oceanbase/store/obdemo/ -uh
tree ~/node1 -uhmkdir -p /data/data/2/obdemo/{etc3,sort_dir,sstable}
mkdir -p /data/log/log2/obdemo/{clog,etc2,ilog,oob_clog,slog}
mkdir -p /home/admin/node2/oceanbase/store/obdemo
for t in {etc3,sort_dir,sstable};do ln -s /data/data/2/obdemo/$t /home/admin/node2/oceanbase/store/obdemo/$t; done
for t in {clog,etc2,ilog,slog,oob_clog};do ln -s /data/log/log2/obdemo/$t /home/admin/node2/oceanbase/store/obdemo/$t; donetree /home/admin/node2/oceanbase/store/obdemo/ -uh
tree ~/node2 -uh

由此一个完整的OBServer进程的相关目录如下:

  • 依赖RPM包安装

OceanBase会对数据进行压缩,所以依赖两个压缩协议的RPM文件:snappy.x86_64lzo.x86_64

rpm -q snappy.x86_64 lzo.x86_64yum -y install snappy.x86_64 lzo.x86_64

OceanBase集群初始化

observer启动

  • 启动参数

首先分别在每个节点上启动第一个observer进程,监听端口是2881和2882. 下图中灰色斜体部分都根据实际情况调整。注意根据实际情况修改zone名称、ip, 网卡名字等。

  • 启动3节点

192.168.1.241:2881:2882 zone1 注意修改 zone, ip, 网卡名字

cd /home/admin/node1/oceanbase && /home/admin/node1/oceanbase/bin/observer -i eth0 -P 2882 -p 2881 -z zone1 -d /home/admin/node1/oceanbase/store/obdemo -r '192.168.1.241:2882:2881;192.168.1.81:2882:2881;192.168.1.86:2882:2881' -c 20190423 -n obdemo -o "cpu_count=24,memory_limit=100G,datafile_size=200G,config_additional_dir=/data/data/1/obdemo/etc3;/data/log/log1/obdemo/etc2"ps -ef|grep observervi log/observer.log

其他两个节点的启动民两个分别如下。

192.168.1.81:2881:2882 zone2 注意修改 zone, ip, 网卡名字

cd /home/admin/node1/oceanbase && /home/admin/node1/oceanbase/bin/observer -i eth3 -P 2882 -p 2881 -z zone2 -d /home/admin/node1/oceanbase/store/obdemo -r '192.168.1.241:2882:2881;192.168.1.81:2882:2881;192.168.1.86:2882:2881' -c 20190423 -n obdemo -o "cpu_count=24,memory_limit=100G,datafile_size=200G,config_additional_dir=/data/data/1/obdemo/etc3;/data/log/log1/obdemo/etc2"ps -ef|grep observervi log/observer.log

192.168.1.86:2881:2882 zone3 注意修改 zone, ip, 网卡名字

cd /home/admin/node1/oceanbase && /home/admin/node1/oceanbase/bin/observer -i eth3 -P 2882 -p 2881 -z zone3 -d /home/admin/node1/oceanbase/store/obdemo -r '192.168.1.241:2882:2881;192.168.1.81:2882:2881;192.168.1.86:2882:2881' -c 20190423 -n obdemo -o "cpu_count=24,memory_limit=100G,datafile_size=200G,config_additional_dir=/data/data/1/obdemo/etc3;/data/log/log1/obdemo/etc2"ps -ef|grep observervi log/observer.log

集群初始化

3节点observer都启动后,这一步集群初始化命令就至关重要,成败在此一举。

首先使用mysql命令登录任一节点,然后执行bootstrap命令。注意命令中不要有空格和空白。

mysql -h192.168.1.241 -uroot -P2881 -palter system bootstrap ZONE 'zone1' SERVER '192.168.1.241:2882', ZONE 'zone2' SERVER '192.168.1.81:2882', ZONE 'zone3' SERVER '192.168.1.86:2882';

大概十几秒后集群启动成功。此时重新退出再登录集群。登录命令的username格式需要变化一下。登录成功后修改默认sys租户管理员root@sys

mysql -h192.168.1.241 -uroot@sys -P2881 -p -c -A oceanbase
alter user root identified by 'rootpwd';

退出使用密码登录验证,同时查看集群资源信息。

mysql -h192.168.1.241 -uroot@sys -P2881 -prootpwd -c -A oceanbaseselect zone, svr_ip, inner_port, cpu_total, cpu_assigned, cpu_assigned_percent cpu_ass_percent, round(mem_total/1024/1024/1024) mem_total_gb, round(mem_assigned/1024/1024/1024) mem_ass_gb, round(disk_total/1024/1024/1024) disk_total_gb, unit_num, substr(build_version,1,6) version
from __all_virtual_server_stat
order by zone, svr_ip, inner_port;

集群扩容

目前搭建的还是1-1-1布局的OceanBase集群,需要再添加3个节点,扩容到2-2-2布局。这里就直接在3台机器上再启动第二个observer进程,监听端口是3881和3882.

  • 节点准备

192.168.1.241:3881:3882 zone1 注意修改node zone, ip, port, 网卡名字


cd /home/admin/node2/oceanbase && /home/admin/node2/oceanbase/bin/observer -i eth0 -P 3882 -p 3881 -z zone1 -d /home/admin/node2/oceanbase/store/obdemo -r '192.168.1.241:2882:2881;192.168.1.81:2882:2881;192.168.1.86:2882:2881' -c 20190423 -n obdemo -o "cpu_count=24,memory_limit=61440M,datafile_size=100G,config_additional_dir=/data/data/2/obdemo/etc3;/data/log/log2/obdemo/etc2"ps -ef|grep observervi log/observer.log

192.168.1.81:2881:2882 zone2 注意修改node zone, ip, port, 网卡名字

cd /home/admin/node2/oceanbase && /home/admin/node2/oceanbase/bin/observer -i eth3 -P 3882 -p 3881 -z zone2 -d /home/admin/node2/oceanbase/store/obdemo -r '192.168.1.241:2882:2881;192.168.1.81:2882:2881;192.168.1.86:2882:2881' -c 20190423 -n obdemo -o "cpu_count=24,memory_limit=61440M,datafile_size=100G,config_additional_dir=/data/data/2/obdemo/etc3;/data/log/log2/obdemo/etc2"ps -ef|grep observervi log/observer.log

192.168.1.86:2881:2882 zone3 注意修改node zone, ip, port, 网卡名字

cd /home/admin/node2/oceanbase && /home/admin/node2/oceanbase/bin/observer -i eth3 -P 3882 -p 3881 -z zone3 -d /home/admin/node2/oceanbase/store/obdemo -r '192.168.1.241:2882:2881;192.168.1.81:2882:2881;192.168.1.86:2882:2881' -c 20190423 -n obdemo -o "cpu_count=24,memory_limit=61440M,datafile_size=100G,config_additional_dir=/data/data/2/obdemo/etc3;/data/log/log2/obdemo/etc2"ps -ef|grep observervi log/observer.log
  • 集群扩容

将新增的3节点加入到OceanBase集群中。注意zone名称和ip要对应正确。

alter system add server '192.168.1.241:3882' zone 'zone1';
alter system add server '192.168.1.81:3882' zone 'zone2';
alter system add server '192.168.1.86:3882' zone 'zone3';select zone, svr_ip, inner_port, cpu_total, cpu_assigned, cpu_assigned_percent cpu_ass_percent, round(mem_total/1024/1024/1024) mem_total_gb, round(mem_assigned/1024/1024/1024) mem_ass_gb, round(disk_total/1024/1024/1024) disk_total_gb, unit_num, substr(build_version,1,6) version
from __all_virtual_server_stat
order by zone, svr_ip, inner_port;

OBProxy安装和启动

OceanBase是分布式数据库,应用的数据可能分布在任一节点上并且不固定,所以应用不可能知道数据在哪个节点或者记录所有节点ip。这时就需要一个反向代理OBProxy在OceanBase集群前面提供SQL路由功能。应用通过OBProxy访问OceanBase集群,OBProxy就是数据库的代表。

  • OBProxy的软件安装

一个节点只需要安装一个OBproxy,所以可以直接使用RPM包安装。

su - admin
mkdir -p /home/admin/logs/obproxy/log /home/admin/logs/obproxy/minidump
sudo rpm -ivh obproxy-1.3.3-1506155.el7.x86_64.rpm
  • OBProxy专用用户

OBProxy需要跟OceanBase集群保持通信,所以需要在sys租户里提前创建好账户。

CREATE USER proxyro IDENTIFIED BY password '*e9c2bcdc178a99b7b08dd25db58ded2ee5bff050' ;
GRANT SELECT ON *.* to proxyro;show grants for proxyro;
  • OBProxy启动

OBProxy启动跟OBServer启动类似

注意其中 -r指定的是rootservice list地址,格式稍微不同,不需要RPC Port信息。-p指定OBProxy的监听端口。

cd /opt/taobao/install/obproxy && bin/obproxy -r "192.168.1.241:2881;192.168.1.81:2881;192.168.1.86:2881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false" -c obdemops -ef|grep obproxy

通过OBProxy连接OceanBase集群的命令有两种格式,区别在于用户名的格式。如:[用户名]@[租户名]#[集群名][集群名]:[租户名]:[用户名]

mysql -h192.168.1.241 -uroot@sys#obdemo -P2883 -prootpwd -c -A oceanbase
或
mysql -h192.168.1.241 -uobdemo:sys:root -P2883 -prootpwd -c -A oceanbase

OceanBase集群运维

OceanBase分布式数据库跟传统数据库或者其他分布式数据库产品的一个显著的区别就是它有资源管理的思想在里面。OceanBase集群把多台主机的资源(CPU、内存和空间)聚合在一个大的池子里,然后从中分配出指定规格的资源给一个具体的业务使用。这个提供给业务使用的就是租户,也叫实例。
下面简单演示一个租户的创建过程。

租户的创建

  • 定义资源规格
mysql -h192.168.1.241 -uroot@sys#obdemo -P2883 -prootpwd -c -A oceanbasecreate resource unit unit_4c20g512g, max_cpu=4, max_memory='20G', min_memory='10G', max_iops=10000, min_iops=1000, max_session_num=1000000, max_disk_size=53687091200;
create resource unit unit_8c40g1024g, max_cpu=8, max_memory='40G', min_memory='20G', max_iops=20000, min_iops=5000, max_session_num=1000000, max_disk_size=107374182400;
create resource unit unit_16c80g2048g, max_cpu=16, max_memory='80G', min_memory='40G', max_iops=50000, min_iops=10000, max_session_num=1000000, max_disk_size=214748364800;select unit_config_id,name,max_cpu,min_cpu,round(max_memory/1024/1024/1024) max_mem_gb, round(min_memory/1024/1024/1024) min_mem_gb, round(max_disk_size/1024/1024/1024) max_disk_size_gb
from __all_unit_config
order by unit_config_id;
  • 创建资源池
mysql -h192.168.1.241 -uroot@sys#obdemo -P2883 -prootpwd -c -A oceanbasecreate resource pool pool_demo unit = 'unit_4c20g512g', unit_num = 1;select resource_pool_id, name,unit_count, unit_config_id, zone_list, tenant_id, gmt_modified
from __all_resource_pool order by resource_pool_id  ;
  • 创建租户
mysql -h192.168.1.241 -uroot@sys#obdemo -P2883 -prootpwd -c -A oceanbasecreate tenant t_obdemo resource_pool_list=('pool_demo');select tenant_id, tenant_name, zone_list, locality ,gmt_modified from __all_tenant;
  • 登录租户
    租户连接 断开sys租户,连接用户租户
mysql -h192.168.1.241 -uroot@t_obdemo#obdemo -P2883 oceanbase -A -pshow databases;create database sysbenchtest;
grant all privileges on sysbenchtest.* to testuser@'%' identified by 'testpwd';

租户扩容

  • 租户内查看自己的资源能力
mysql -h192.168.1.241 -uroot@t_obdemo#obdemo -P2883 oceanbase -A -pselect tenant_id,tenant_name, unit_id, zone, svr_ip,svr_port,max_cpu,min_cpu,round(max_memory/1024/1024/1024) max_mem_gb, round(min_memory/1024/1024/1024) min_mem_gb, round(max_disk_size/1024/1024/1024) max_disk_size_gb
from gv$unit;

如果业务觉得数据库很慢且瓶颈是在资源,则对租户的资源能力进行扩容。

  • 租户扩容

租户扩容有两个思路,一是提升资源单元规格,二是增加资源单元数量。

mysql -h192.168.1.241 -uobdemo:sys:root -P2883 -prootpwd -c -A oceanbasealter resource pool pool_demo unit = 'unit_8c40g1024g';
alter resource pool pool_demo unit_num = 2;

缩容同理

alter resource pool pool_demo unit_num = 1;

集群参数配置

至此,OceanBase集群和租户都搭建好了。为了避免学习环境因为资源紧张导致OceanBase不稳定,还需要做一些参数配置,类似于ORACLE中的参数变更。

  • 集群参数修改

配置日志相关参数

mysql -h192.168.1.241 -uobdemo:sys:root -P2883 -prootpwd -c -A oceanbase-- observer log自清理设置
alter system set enable_syslog_recycle=True;
alter system set max_syslog_file_count=5;show parameters where name in ('enable_syslog_recycle', 'max_syslog_file_count');

配置OBProxy参数

-- obproxy设置:
alter proxyconfig set enable_metadb_used=False;
alter proxyconfig set enable_proxy_scramble=True;
alter proxyconfig set proxy_mem_limited=2G;
alter proxyconfig set log_dir_size_threshold=10G;

配置冻结合并参数

-- 关闭轮转合并,设置转储次数
alter system set enable_merge_by_turn = false;
alter system set minor_freeze_times=3;
alter system set minor_warm_up_duration_time='300s';
  • 租户变量修改

OceanBase还支持对租户的行为进行配置,这些是通过租户变量的修改实现。类似于MySQL中的变量修改。

mysql -h192.168.1.241 -uroot@t_obdemo#obdemo -P2883 oceanbase -A -p
set global ob_query_timeout=100000000;

OceanBase集群清理

如果前面在集群初始化中出现报错,则需要清理所有步骤重新来过。

### OceanBase安装环境清理```bash
pkill observer
Sleep 10rpm -qa|grep oceanbase
rpm -qa|grep obproxy
sudo rpm -esu - admin
/bin/rm -rf ~/node1 ~/node2
/bin/rm -rf /data/data/* /data/log/*

其他学习资源

有关OceanBase集群手动搭建过程就到此为止。是不是比ORACLE RAC简单很多?限于时间和篇幅,安装中涉及到的OceanBase原理没有详细解释。有兴趣的朋友可以参看OceanBase其他学习资源。后续还会持续推出OceanBase运维实践经验直播分享,敬请关注。

  • OceanBase官网 : oceanbase.alipay.com
  • OceanBase微信公众号:OceanBase
  • OceanBase个人公众号:obpilot
  • OceanBase钉钉交流群:

OceanBase集群手动部署相关推荐

  1. ceph集群手动部署(后期添加mon和osd)

    环境 操作系统 cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 内核 uname -a Linux host-192-168- ...

  2. 实践练习2:手动部署 OceanBase 集群

    实验要求 练习目的 本次练习目的掌握 OceanBase 集群的手动部署技能,理解进程的相关目录.集群初始化.OBProxy和 OB 集群关系等. 练习条件 有笔记本或服务器,内存至少12G . 练习 ...

  3. 猿创征文| 在 OCP 上部署 OceanBase 集群

    前言 OceanBase是由蚂蚁集团完全自主研发的国产原生分布式数据库 ,始创于2010年.已连续9年平稳支撑双11, 创新推出"三地五中心"城市级容灾新标准 ,是一个在TPC-C ...

  4. 数据库周刊36丨2020年8月数据库排行;云厂商腾讯云增速第一;OceanBase集群安装;Oracle RAC调整网卡MTU值;不改代码解决sql性能问题;Mysql索引研究;TiDB电子书……

    热门资讯 [1.2020年8月数据库排行:PolarDB.GoldenDB发力,云数据库和自主可控成主流] [摘要]2020年8月号的国产数据库流行度排行榜发布.本月的前9位排序依旧没有任何变化.达梦 ...

  5. 实践练习四(必选):迁移 MySQL 数据到 OceanBase 集群

    OceanBase Docker安装体验:https://www.xmmup.com/oceanbase-dockeranzhuangtiyan.html 手动部署 OceanBase 单副本集群:h ...

  6. 第二章 oceanbase学习之手动部署

    系列文章目录 第一章 oceanbase学习之docker方式部署 第二章 oceanbase学习之手动部署 第三章 oceanbase学习之迁移MySQL数据到oceanbase 第四章 ocean ...

  7. .netcore 如何获取系统中所有session_集群化部署,Spring Security 要如何处理 session 共享?

    前面和大家聊了 Spring Security 如何像 QQ 一样,自动踢掉已登录用户(Spring Boot + Vue 前后端分离项目,如何踢掉已登录用户?),但是前面我们是基于单体应用的,如果我 ...

  8. rancher安装mysql_四、rancher搭建Mysql集群化部署,做到同步备份

    一.Rancher基础镜像查找: 1.基础镜像操作地址:https://hub.docker.com/r/library/mariadb/ 2.选择自己需要的镜像进行搜索,里面有对应版本:也有最新的如 ...

  9. docker swarm英文文档学习-8-在集群中部署服务

    Deploy services to a swarm在集群中部署服务 集群服务使用声明式模型,这意味着你需要定义服务的所需状态,并依赖Docker来维护该状态.该状态包括以下信息(但不限于): 应该运 ...

最新文章

  1. java高淇_高淇java300集JAVA常用类作业
  2. 马云谈计算机技术发展趋势,马云谈创业:靠的不是技术而是观念
  3. 推荐 | 方便好用的浏览器插件
  4. CF1286D-LCC【动态dp,数学期望】
  5. mysql 导入导出大文件
  6. Mybatis中Mapper映射文件详解(默认值)
  7. 2018.01.25-现货黄金复盘
  8. [Oracle] 别被View 整伤了
  9. python数据结构与算法知识点_数据结构和算法基础知识点(示例代码)
  10. springBoot springSecurty: x-frame-options deny禁止iframe调用
  11. 计算机课后感400字,观后感400字
  12. html多选框写法,HTML多选框
  13. 强大的Java辅助类工具箱Hutool
  14. 两个mysql 数据库表结构_MYSQL对比两个数据库表结构
  15. 15个好用的百度网盘搜索引擎
  16. 二分法和黄金分割法的区别和联系,附Python代码
  17. 软文营销有什么效果,主要作用是什么?
  18. 如何在word中打带矩形的√
  19. 使用正则表达式查找Word文件中AABB和ABAC形式的成语
  20. replicate vs duplicate

热门文章

  1. ObjectPostProcessor使用与多种用户定义方式(9)
  2. Latex输入分段函数
  3. 移动办公APP的开发费用和开发流程开发流程
  4. Vue.js笔记(一)
  5. vue-cli脚手架卡在 ‘98%’ after emitting CopyPlugin 报错,无法运行
  6. sim的准确识别技术
  7. 非均匀三次B样条曲线插值实现及MATLAB代码
  8. Outlook打不开附件
  9. 平面设计必备学习软件
  10. IBM ECM平台助力泰康人寿集约化经营