Git Product home page Git Product logo

obdeploy's Introduction

OceanBase Logo

English doc Chinese doc last commit stars building status license

Join Slack Stack Overflow

English | 中文版

OceanBase Database is a distributed relational database. It is developed entirely by Ant Group. The OceanBase Database is built on a common server cluster. Based on the Paxos protocol and its distributed structure, the OceanBase Database provides high availability and linear scalability. The OceanBase Database is not dependent on specific hardware architectures.

Key features

  • Transparent Scalability: 1,500 nodes, PB data and a trillion rows of records in one cluster.
  • Ultra-fast Performance: TPC-C 707 million tmpC and TPC-H 15.26 million QphH @30000GB.
  • Cost Efficiency: saves 70%–90% of storage costs.
  • Real-time Analytics: supports HTAP without additional cost.
  • Continuous Availability: RPO = 0(zero data loss) and RTO < 8s(recovery time)
  • MySQL Compatible: easily migrated from MySQL database.

See also key features for more details.

Quick start

🔥 Start with all-in-one

You can quickly deploy a stand-alone OceanBase Database to experience with the following commands:

Note: Linux Only

# download and install all-in-one package (internet connection is required)
bash -c "$(curl -s https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/oceanbase-all-in-one/installer.sh)"
source ~/.oceanbase-all-in-one/bin/env.sh

# quickly deploy OceanBase database
obd demo

🐳 Start with docker

  1. Start an OceanBase Database instance:

    # Deploy a mini standalone instance.
    docker run -p 2881:2881 --name oceanbase-ce -e MODE=mini -d oceanbase/oceanbase-ce
  2. Connect to the OceanBase Database instance:

    docker exec -it oceanbase-ce ob-mysql sys # Connect to the root user of the sys tenant.

See also Quick experience or Quick Start (Simplified Chinese) for more details.

☸️ Start with Kubernetes

You can deploy and manage OceanBase Database instance in kubernetes cluster with ob-operator quickly. Refer to the document Quick Start for ob-operator to see details.

👨‍💻 Start developing

See OceanBase Developer Document to learn how to compile and deploy a manually compiled observer.

Roadmap

For future plans, see Product Iteration Progress. See also OceanBase Roadmap for more details.

Case study

OceanBase has been serving more than 1000 customers and upgraded their database from different industries, including Financial Services, Telecom, Retail, Internet, and more.

See also success stories and Who is using OceanBase for more details.

System architecture

Introduction to system architecture

Contributing

Contributions are highly appreciated. Read the development guide to get started.

License

OceanBase Database is licensed under the Mulan Public License, Version 2. See the LICENSE file for more info.

Community

Join the OceanBase community via:

obdeploy's People

Contributors

amber1990zhang avatar chrisyuan avatar dbres4power avatar donghy-coredumped avatar frf12 avatar hnwyllmm avatar linxiansheng avatar longdafeng avatar mizuhahimuraki avatar oceanbase-admin avatar xjxjy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

obdeploy's Issues

obd报错KeyError: 'content-length'

[root@48a7a86a1598 obdeploy]# obd --version
OceanBase Deploy: 1.1.2
REVISION: af5965a
BUILD_BRANCH: master
BUILD_TIME: Nov 03 2021 11:42:34OURCE
Copyright (C) 2021 OceanBase
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[root@48a7a86a1598 obdeploy]#
[root@48a7a86a1598 obdeploy]#
[root@48a7a86a1598 obdeploy]# obd cluster deploy c1 -c ./example/mini-local-example.yaml -v

  • open /root/.obd/version for a+
  • cmd: ['c1']
  • opts: {'config': './example/mini-local-example.yaml', 'force': False, 'unuselibrepo': None, 'auto_create_tenant': None}
  • Get Deploy by name
  • mkdir /root/.obd/cluster/
  • Get deploy info
  • judge deploy status
  • config path is None or not
  • Create deploy by configuration path
  • mkdir /root/.obd/cluster/c1
  • copy ./example/mini-local-example.yaml /root/.obd/cluster/c1/config.yaml
  • Get deploy configuration
  • Search best suitable repository
  • Search package for components...
  • Get oceanbase-ce repository
  • mkdir /root/.obd/repository
  • mkdir /root/.obd/repository/oceanbase-ce
  • Search oceanbase-ce package from mirror
  • mkdir /root/.obd/mirror
  • mkdir /root/.obd/mirror/remote
  • mkdir /root/.obd/mirror/local
    Update OceanBase-community-stable-el7 x
    [ERROR] Failed to download http://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64///repodata/repomd.xml to /root/.obd/mirror/remote/OceanBase-community-stable-el7/repomd.xml
    Traceback (most recent call last):
    File "core.py", line 787, in deploy_cluster
    repositories, install_plugins = self.search_components_from_mirrors_and_install(deploy_config)
    File "core.py", line 660, in search_components_from_mirrors_and_install
    pkgs, repositories, errors = self.search_components_from_mirrors(deploy_config, only_info=False)
    File "core.py", line 215, in search_components_from_mirrors
    pkg = self.mirror_manager.get_best_pkg(name=component, version=config.version, md5=config.package_hash, fuzzy_match=fuzzy_match, only_info=only_info)
    File "_mirror.py", line 789, in get_best_pkg
    return self.get_exact_pkg(**pattern)
    File "_mirror.py", line 778, in get_exact_pkg
    mirrors = self.get_mirrors()
    File "_mirror.py", line 772, in get_mirrors
    mirros = self.get_remote_mirrors()
    File "_mirror.py", line 767, in get_remote_mirrors
    mirror = RemoteMirrorRepository(mirror_path, meta_data, self.stdio)
    File "_mirror.py", line 259, in init
    self.update_mirror()
    File "_mirror.py", line 357, in update_mirror
    self.get_repomds(True)
    File "_mirror.py", line 376, in get_repomds
    self.download_file(url, path, self.stdio)
    File "_mirror.py", line 500, in download_file
    file_size = int(fget.headers["Content-Length"])
    File "requests/structures.py", line 54, in getitem
    KeyError: 'content-length'

[ERROR] Failed to download http://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64///repodata/repomd.xml to /root/.obd/mirror/remote/OceanBase-community-stable-el7/repomd.xml
Traceback (most recent call last):
File "core.py", line 787, in deploy_cluster
repositories, install_plugins = self.search_components_from_mirrors_and_install(deploy_config)
File "core.py", line 660, in search_components_from_mirrors_and_install
pkgs, repositories, errors = self.search_components_from_mirrors(deploy_config, only_info=False)
File "core.py", line 215, in search_components_from_mirrors
pkg = self.mirror_manager.get_best_pkg(name=component, version=config.version, md5=config.package_hash, fuzzy_match=fuzzy_match, only_info=only_info)
File "_mirror.py", line 789, in get_best_pkg
return self.get_exact_pkg(**pattern)
File "_mirror.py", line 778, in get_exact_pkg
mirrors = self.get_mirrors()
File "_mirror.py", line 772, in get_mirrors
mirros = self.get_remote_mirrors()
File "_mirror.py", line 767, in get_remote_mirrors
mirror = RemoteMirrorRepository(mirror_path, meta_data, self.stdio)
File "_mirror.py", line 259, in init
self.update_mirror()
File "_mirror.py", line 358, in update_mirror
primary_repomd = self._get_repomd_by_type(self.PRIMARY_REPOMD_TYPE)
File "_mirror.py", line 339, in _get_repomd_by_type
repodmds = self.get_repomds()
File "_mirror.py", line 376, in get_repomds
self.download_file(url, path, self.stdio)
File "_mirror.py", line 500, in download_file
file_size = int(fget.headers["Content-Length"])
File "requests/structures.py", line 54, in getitem
KeyError: 'content-length'

Update OceanBase-development-kit-el7 x
[ERROR] Failed to download http://mirrors.aliyun.com/oceanbase/development-kit/el/7/x86_64///repodata/repomd.xml to /root/.obd/mirror/remote/OceanBase-development-kit-el7/repomd.xml
Traceback (most recent call last):
File "core.py", line 787, in deploy_cluster
repositories, install_plugins = self.search_components_from_mirrors_and_install(deploy_config)
File "core.py", line 660, in search_components_from_mirrors_and_install
pkgs, repositories, errors = self.search_components_from_mirrors(deploy_config, only_info=False)
File "core.py", line 215, in search_components_from_mirrors
pkg = self.mirror_manager.get_best_pkg(name=component, version=config.version, md5=config.package_hash, fuzzy_match=fuzzy_match, only_info=only_info)
File "_mirror.py", line 789, in get_best_pkg
return self.get_exact_pkg(**pattern)
File "_mirror.py", line 778, in get_exact_pkg
mirrors = self.get_mirrors()
File "_mirror.py", line 772, in get_mirrors
mirros = self.get_remote_mirrors()
File "_mirror.py", line 767, in get_remote_mirrors
mirror = RemoteMirrorRepository(mirror_path, meta_data, self.stdio)
File "_mirror.py", line 259, in init
self.update_mirror()
File "_mirror.py", line 357, in update_mirror
self.get_repomds(True)
File "_mirror.py", line 376, in get_repomds
self.download_file(url, path, self.stdio)
File "_mirror.py", line 500, in download_file
file_size = int(fget.headers["Content-Length"])
File "requests/structures.py", line 54, in getitem
KeyError: 'content-length'

[ERROR] Failed to download http://mirrors.aliyun.com/oceanbase/development-kit/el/7/x86_64///repodata/repomd.xml to /root/.obd/mirror/remote/OceanBase-development-kit-el7/repomd.xml
Traceback (most recent call last):
File "core.py", line 787, in deploy_cluster
repositories, install_plugins = self.search_components_from_mirrors_and_install(deploy_config)
File "core.py", line 660, in search_components_from_mirrors_and_install
pkgs, repositories, errors = self.search_components_from_mirrors(deploy_config, only_info=False)
File "core.py", line 215, in search_components_from_mirrors
pkg = self.mirror_manager.get_best_pkg(name=component, version=config.version, md5=config.package_hash, fuzzy_match=fuzzy_match, only_info=only_info)
File "_mirror.py", line 789, in get_best_pkg
return self.get_exact_pkg(**pattern)
File "_mirror.py", line 778, in get_exact_pkg
mirrors = self.get_mirrors()
File "_mirror.py", line 772, in get_mirrors
mirros = self.get_remote_mirrors()
File "_mirror.py", line 767, in get_remote_mirrors
mirror = RemoteMirrorRepository(mirror_path, meta_data, self.stdio)
File "_mirror.py", line 259, in init
self.update_mirror()
File "_mirror.py", line 358, in update_mirror
primary_repomd = self._get_repomd_by_type(self.PRIMARY_REPOMD_TYPE)
File "_mirror.py", line 339, in _get_repomd_by_type
repodmds = self.get_repomds()
File "_mirror.py", line 376, in get_repomds
self.download_file(url, path, self.stdio)
File "_mirror.py", line 500, in download_file
file_size = int(fget.headers["Content-Length"])
File "requests/structures.py", line 54, in getitem
KeyError: 'content-length'

Traceback (most recent call last):
File "core.py", line 787, in deploy_cluster
repositories, install_plugins = self.search_components_from_mirrors_and_install(deploy_config)
File "core.py", line 660, in search_components_from_mirrors_and_install
pkgs, repositories, errors = self.search_components_from_mirrors(deploy_config, only_info=False)
File "core.py", line 215, in search_components_from_mirrors
pkg = self.mirror_manager.get_best_pkg(name=component, version=config.version, md5=config.package_hash, fuzzy_match=fuzzy_match, only_info=only_info)
File "_mirror.py", line 789, in get_best_pkg
return self.get_exact_pkg(**pattern)
File "_mirror.py", line 778, in get_exact_pkg
mirrors = self.get_mirrors()
File "_mirror.py", line 773, in get_mirrors
mirros.append(self.local_mirror)
File "_mirror.py", line 725, in local_mirror
self._local_mirror = LocalMirrorRepository(self.local_path, self.stdio)
File "_mirror.py", line 541, in init
self._load_db()
File "_mirror.py", line 549, in _load_db
with open(self.db_path, 'rb') as f:
FileNotFoundError: [Errno 2] No such file or directory: '/root/.obd/mirror/local/.db'

  • md5 is None

  • name is oceanbase-ce

  • arch is ['ia32e', 'x86_64', 'athlon', 'i686', 'i586', 'i486', 'i386', 'noarch']

  • release is None

  • version is None
    [ERROR] Failed to download http://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64///repodata/repomd.xml to /root/.obd/mirror/remote/OceanBase-community-stable-el7/repomd.xml
    Traceback (most recent call last):
    File "core.py", line 787, in deploy_cluster
    repositories, install_plugins = self.search_components_from_mirrors_and_install(deploy_config)
    File "core.py", line 660, in search_components_from_mirrors_and_install
    pkgs, repositories, errors = self.search_components_from_mirrors(deploy_config, only_info=False)
    File "core.py", line 215, in search_components_from_mirrors
    pkg = self.mirror_manager.get_best_pkg(name=component, version=config.version, md5=config.package_hash, fuzzy_match=fuzzy_match, only_info=only_info)
    File "_mirror.py", line 789, in get_best_pkg
    return self.get_exact_pkg(**pattern)
    File "_mirror.py", line 781, in get_exact_pkg
    new_one = mirror.get_exact_pkg_info(**pattern)
    File "_mirror.py", line 433, in get_exact_pkg_info
    for key in self.db:
    File "_mirror.py", line 265, in db
    primary_repomd = self._get_repomd_by_type(self.PRIMARY_REPOMD_TYPE)
    File "_mirror.py", line 339, in _get_repomd_by_type
    repodmds = self.get_repomds()
    File "_mirror.py", line 376, in get_repomds
    self.download_file(url, path, self.stdio)
    File "_mirror.py", line 500, in download_file
    file_size = int(fget.headers["Content-Length"])
    File "requests/structures.py", line 54, in getitem
    KeyError: 'content-length'

  • MirrorRepositoryType.REMOTE mirror OceanBase-community-stable-el7 found pkg: None

  • md5 is None

  • name is oceanbase-ce

  • arch is ['ia32e', 'x86_64', 'athlon', 'i686', 'i586', 'i486', 'i386', 'noarch']

  • release is None

  • version is None
    [ERROR] Failed to download http://mirrors.aliyun.com/oceanbase/development-kit/el/7/x86_64///repodata/repomd.xml to /root/.obd/mirror/remote/OceanBase-development-kit-el7/repomd.xml
    Traceback (most recent call last):
    File "core.py", line 787, in deploy_cluster
    repositories, install_plugins = self.search_components_from_mirrors_and_install(deploy_config)
    File "core.py", line 660, in search_components_from_mirrors_and_install
    pkgs, repositories, errors = self.search_components_from_mirrors(deploy_config, only_info=False)
    File "core.py", line 215, in search_components_from_mirrors
    pkg = self.mirror_manager.get_best_pkg(name=component, version=config.version, md5=config.package_hash, fuzzy_match=fuzzy_match, only_info=only_info)
    File "_mirror.py", line 789, in get_best_pkg
    return self.get_exact_pkg(**pattern)
    File "_mirror.py", line 781, in get_exact_pkg
    new_one = mirror.get_exact_pkg_info(**pattern)
    File "_mirror.py", line 433, in get_exact_pkg_info
    for key in self.db:
    File "_mirror.py", line 265, in db
    primary_repomd = self._get_repomd_by_type(self.PRIMARY_REPOMD_TYPE)
    File "_mirror.py", line 339, in _get_repomd_by_type
    repodmds = self.get_repomds()
    File "_mirror.py", line 376, in get_repomds
    self.download_file(url, path, self.stdio)
    File "_mirror.py", line 500, in download_file
    file_size = int(fget.headers["Content-Length"])
    File "requests/structures.py", line 54, in getitem
    KeyError: 'content-length'

  • MirrorRepositoryType.REMOTE mirror OceanBase-development-kit-el7 found pkg: None

  • md5 is None

  • name is oceanbase-ce

  • arch is ['ia32e', 'x86_64', 'athlon', 'i686', 'i586', 'i486', 'i386', 'noarch']

  • release is None

  • version is None

  • MirrorRepositoryType.LOCAL mirror local found pkg: None
    [ERROR] No such package oceanbase-ce.

obd test should be able to run on the cluster which installed by OCP

Right now, obd test can run on the cluster which deployed by OBD, but it can't be run on the cluster which installed by OCP.

In theory, it should be able to run on the cluster which installed by OCP. Because user has input all user/password information, if obd want to fetch the hardware information, it can directly fetch the information from the database.

在256 core 机器上出现bootstrap

Hi, Guys

when I use the obd deploy the 3-host(128 cores-80 cores-256 cores configuration) cluster. and find bootstrap fail, but another 3-host cluster with 128 cores-80 cores-128 cores configuration are ok.

I think there is a bug, right?

OS:CentOS Linux release 8.5.2111
OceanBase Deploy: 1.2.1
obd repo list
name | version | release | arch | md5 | tags |
| oceanbase-ce | 3.1.2 | 20220107080856 | x86_64 | 2990cadae31deb337c20aee26d74834c | obv312 |
| oceanbase-ce | 3.1.2 | 10000392021123010.el8 | x86_64 | 0005ef8ee805db0f6b4c493c9eead69bdb78ef00 | oceanbase-ce |
| oceanbase-ce-libs | 3.1.2 | 10000392021123010.el8 | x86_64 | 87dcfcbaa952874ae41333ab9ba46ff110d5ea70 | oceanbase-ce-libs |

***********************************************8
How to replay/REDO:
1, Deploy one cluster xxxx with at least one 256-core host by OBD
2, Just obd cluster start xxxx.


the clust configuration -yaml:

Only need to configure when remote login is required

user:

username: your username

password: your password if need

key_file: your ssh-key file path if need

port: your ssh port, default 22

timeout: ssh connection timeout (second), default 30

oceanbase-ce:
servers:
- name: z1
# Please don't use hostname, only IP can be supported
ip: 192.168.1.174
- name: z2
ip: 192.168.1.114
- name: z3
ip: 192.168.1.112

global:
# Please set devname as the network adaptor's name whose ip is in the setting of severs.
# if set severs as "127.0.0.1", please set devname as "lo"
# if current ip is 192.168.1.10, and the ip's network adaptor's name is "eth0", please use "eth0"
#devname: ens3
# if current hardware's memory capacity is smaller than 50G, please use the setting of "mini-single-example.yaml" and do a small adjustment.
memory_limit: 160G # The maximum running memory for an observer
# The reserved system memory. system_memory is reserved for general tenants. The default value is 30G.
# system_memory: 30G
datafile_disk_percentage: 30 # The percentage of the data_dir space to the total disk space. This value takes effect only when datafile_size is 0. The default value is 90.
syslog_level: INFO # System log level. The default value is INFO.
enable_syslog_wf: false # Print system logs whose levels are higher than WARNING to a separate log file. The default value is true.
enable_syslog_recycle: true # Enable auto system log recycling or not. The default value is false.
max_syslog_file_count: 4 # The maximum number of reserved log files before enabling auto recycling. The default value is 0.
# root_password: # root user password

In this example , support multiple ob process in single node, so different process use different ports.

If deploy ob cluster in multiple nodes, the port and path setting can be same.

z1:
mysql_port: 2881 # External port for OceanBase Database. The default value is 2881.
rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882.
devname: ens72f1
# The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
home_path: /data/xxxxob
# The directory for data storage. The default value is $home_path/store.
# data_dir: /data
# The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
# redo_dir: /redo
zone: zone1
z2:
mysql_port: 2881 # External port for OceanBase Database. The default value is 2881.
rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882.
devname: enp65s0f0
# The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
home_path: /data/amdob
# The directory for data storage. The default value is $home_path/store.
# data_dir: /data
# The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
# redo_dir: /redo
zone: zone2
z3:
mysql_port: 2881 # External port for OceanBase Database. The default value is 2881.
rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882.
devname: ens3f0
# The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
home_path: /data/intelob
# The directory for data storage. The default value is $home_path/store.
# data_dir: /data
# The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
# redo_dir: /redo
zone: zone3


the log:
Vim: Warning: Output is not to a terminal

�[36mglobal�[m�[35m:�[m
�[34m # Please set devname as the network adaptor's name whose ip is in the setting of severs.
�[m �[34m # if set severs as "127.0.0.1", please set devname as "lo"
�[m �[34m # if current ip is 192.168.1.10, and the ip's network adaptor's name is "eth0", please use "eth0"
�[m �[34m #devname: ens3
�[m �[34m # if current hardware's memory capacity is smaller than 50G, please use the setting of "mini-single-example.yaml" and do a small adjustment.�[m
�[36mmemory_limit�[m�[35m:�[m 160G�[34m # The maximum running memory for an observer
�[m �[34m # The reserved system memory. system_memory is reserved for general tenants. The default value is 30G.
�[m �[34m # system_memory: 30G�[m
�[36mdatafile_disk_percentage�[m�[35m:�[m �[31m30�[m�[34m # The percentage of the data_dir space to the total disk space. This value takes effect only when datafile_size is 0. The default value is 90.�[m
�[36msyslog_level�[m�[35m:�[m INFO�[34m # System log level. The default value is INFO.�[m
�[36menable_syslog_wf�[m�[35m:�[m �[31mfalse�[m�[34m # Print system logs whose levels are higher than WARNING to a separate log file. The default value is true.�[m
�[36menable_syslog_recycle�[m�[35m:�[m �[31mtrue�[m�[34m # Enable auto system log recycling or not. The default value is false.�[m
�[36mmax_syslog_file_count�[m�[35m:�[m �[31m4�[m�[34m # The maximum number of reserved log files before enabling auto recycling. The default value is 0.
�[m �[34m # root_password: # root user password
�[m �[34m # In this example , support multiple ob process in single node, so different process use different ports.
�[m �[34m # If deploy ob cluster in multiple nodes, the port and path setting can be same. �[m
�[36mz1�[m�[35m:�[m
�[36mmysql_port�[m�[35m:�[m �[31m2881�[m�[34m # External port for OceanBase Database. The default value is 2881.�[m
�[36mrpc_port�[m�[35m:�[m �[31m2882�[m�[34m # Internal port for OceanBase Database. The default value is 2882.�[m
�[36mdevname�[m�[35m:�[m ens72f1
�[34m # The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.�[m
�[36mhome_path�[m�[35m:�[m /data/xxxxob
�[34m # The directory for data storage. The default value is $home_path/store.
�[m �[34m # data_dir: /data
�[m �[34m # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
�[m �[34m # redo_dir: /redo�[m
�[36mzone�[m�[35m:�[m zone1
�[36mz2�[m�[35m:�[m
�[36mmysql_port�[m�[35m:�[m �[31m2881�[m�[34m # External port for OceanBase Database. The default value is 2881.�[m
�[36mrpc_port�[m�[35m:�[m �[31m2882�[m�[34m # Internal port for OceanBase Database. The default value is 2882.�[m
�[36mdevname�[m�[35m:�[m enp65s0f0
�[34m # The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.�[m
�[36mhome_path�[m�[35m:�[m /data/amdob
�[34m # The directory for data storage. The default value is $home_path/store.
�[m �[34m # data_dir: /data
�[m �[34m # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
�[m �[34m # redo_dir: /redo�[m
�[36mzone�[m�[35m:�[m zone2
�[36mz3�[m�[35m:�[m
�[36mmysql_port�[m�[35m:�[m �[31m2881�[m�[34m # External port for OceanBase Database. The default value is 2881.�[m
�[36mrpc_port�[m�[35m:�[m �[31m2882�[m�[34m # Internal port for OceanBase Database. The default value is 2882.�[m
�[36mdevname�[m�[35m:�[m ens3f0
�[34m # The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.�[m
�[36mhome_path�[m�[35m:�[m /data/intelob
�[34m # The directory for data storage. The default value is $home_path/store.
�[m �[34m # data_dir: /data
�[m �[34m # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
�[m �[34m # redo_dir: /redo�[m
�[36mzone�[m�[35m:�[m zone3�[66;171H71,15�[9CBot�[65;15H�[?25h�[?25l�[66;161H:�[65;15H�[66;1H�[K�[66;1H:�[?2004h�[?25hq�[?25l�[?25h
�[?25l�[?2004l�[66;1H�[K�[66;1H�[?2004l�[?1l�>�[?25h�[?1049l�[23;0;0t- open /root/.obd/version for a+

  • mkdir /root/.obd/lock/
  • try to get share lock /root/.obd/lock/global
  • share lock /root/.obd/lock/global, count 1
  • cmd: ['xxxx_intel_amd10']
  • opts: {'servers': None, 'components': None, 'force_delete': None, 'strict_check': None, 'without_parameter': None}
  • Get Deploy by name
  • mkdir /root/.obd/cluster/
  • try to get exclusive lock /root/.obd/lock/deploy_xxxx_intel_amd10
  • exclusive lock /root/.obd/lock/deploy_xxxx_intel_amd10, count 1
  • Deploy status judge
  • Get deploy config
    Get local repositories and plugins ok
  • mkdir /root/.obd/repository
  • Get local repository oceanbase-ce-3.1.2-0005ef8ee805db0f6b4c493c9eead69bdb78ef00
  • try to get share lock /root/.obd/lock/mirror_and_repo
  • share lock /root/.obd/lock/mirror_and_repo, count 1
  • mkdir /root/.obd/repository/oceanbase-ce
  • Searching start_check plugin for components ...
  • Searching start_check plugin for oceanbase-ce-3.1.2-0005ef8ee805db0f6b4c493c9eead69bdb78ef00
  • mkdir /root/.obd/plugins
  • Found for oceanbase-ce-py_script_start_check-3.1.0 for oceanbase-ce-3.1.2
  • Searching start plugin for components ...
  • Searching start plugin for oceanbase-ce-3.1.2-0005ef8ee805db0f6b4c493c9eead69bdb78ef00
  • Found for oceanbase-ce-py_script_start-3.1.0 for oceanbase-ce-3.1.2
  • Searching connect plugin for components ...
  • Searching connect plugin for oceanbase-ce-3.1.2-0005ef8ee805db0f6b4c493c9eead69bdb78ef00
  • Found for oceanbase-ce-py_script_connect-3.1.0 for oceanbase-ce-3.1.2
  • Searching bootstrap plugin for components ...
  • Searching bootstrap plugin for oceanbase-ce-3.1.2-0005ef8ee805db0f6b4c493c9eead69bdb78ef00
  • Found for oceanbase-ce-py_script_bootstrap-3.1.0 for oceanbase-ce-3.1.2
  • Searching display plugin for components ...
  • Searching display plugin for oceanbase-ce-3.1.2-0005ef8ee805db0f6b4c493c9eead69bdb78ef00
  • Found for oceanbase-ce-py_script_display-3.1.0 for oceanbase-ce-3.1.2

Open ssh connection ok
Load cluster param plugin ok

  • Searching param plugin for components ...

  • Search param plugin for oceanbase-ce

  • Found for oceanbase-ce-param-3.1.0 for oceanbase-ce-3.1.2

  • Applying oceanbase-ce-param-3.1.0 for oceanbase-ce-3.1.2-0005ef8ee805db0f6b4c493c9eead69bdb78ef00

  • Call oceanbase-ce-py_script_start_check-3.1.0 for oceanbase-ce-3.1.2-0005ef8ee805db0f6b4c493c9eead69bdb78ef00

  • import start_check

  • add start_check ref count to 1
    Check before start observer ok
    -- [email protected] execute: cat /data/xxxxob/run/observer.pid -- exited code 1, error output:
    cat: /data/xxxxob/run/observer.pid: No such file or directory

-- z1(192.168.1.174) port check
-- [email protected] execute: bash -c 'cat /proc/net/{tcp,udp}' | awk -F' ' '{print $2,$10}' | grep '00000000:0B41' | awk -F' ' '{print $2}' | uniq -- exited code 0
-- [email protected] execute: bash -c 'cat /proc/net/{tcp,udp}' | awk -F' ' '{print $2,$10}' | grep '00000000:0B42' | awk -F' ' '{print $2}' | uniq -- exited code 0
-- [email protected] execute: ls /data/xxxxob/store/sstable/block_file -- exited code 0
-- [email protected] execute: cat /data/amdob/run/observer.pid -- exited code 1, error output:
cat: /data/amdob/run/observer.pid: No such file or directory

-- z2(192.168.1.114) port check
-- [email protected] execute: bash -c 'cat /proc/net/{tcp,udp}' | awk -F' ' '{print $2,$10}' | grep '00000000:0B41' | awk -F' ' '{print $2}' | uniq -- exited code 0
-- [email protected] execute: bash -c 'cat /proc/net/{tcp,udp}' | awk -F' ' '{print $2,$10}' | grep '00000000:0B42' | awk -F' ' '{print $2}' | uniq -- exited code 0
-- [email protected] execute: ls /data/amdob/store/sstable/block_file -- exited code 0
-- [email protected] execute: cat /data/intelob/run/observer.pid -- exited code 1, error output:
cat: /data/intelob/run/observer.pid: No such file or directory

-- z3(192.168.1.112) port check
-- [email protected] execute: bash -c 'cat /proc/net/{tcp,udp}' | awk -F' ' '{print $2,$10}' | grep '00000000:0B41' | awk -F' ' '{print $2}' | uniq -- exited code 0
-- [email protected] execute: bash -c 'cat /proc/net/{tcp,udp}' | awk -F' ' '{print $2,$10}' | grep '00000000:0B42' | awk -F' ' '{print $2}' | uniq -- exited code 0
-- [email protected] execute: ls /data/intelob/store/sstable/block_file -- exited code 0
-- [email protected] execute: cat /proc/sys/fs/aio-max-nr /proc/sys/fs/aio-nr -- exited code 0
-- [email protected] execute: ulimit -n -- exited code 0
-- [email protected] execute: cat /proc/meminfo -- exited code 0
-- [email protected] execute: df --block-size=1024 -- exited code 0
-- disk: {'/': {'total': 3989277446144, 'avail': 3612209303552, 'need': 0, 'threshold': 2}, '/dev': {'total': 270287323136, 'avail': 270287323136, 'need': 0, 'threshold': 2}, '/dev/shm': {'total': 270315888640, 'avail': 270315888640, 'need': 0, 'threshold': 2}, '/run': {'total': 270315888640, 'avail': 270296506368, 'need': 0, 'threshold': 2}, '/sys/fs/cgroup': {'total': 270315888640, 'avail': 270315888640, 'need': 0, 'threshold': 2}, '/boot': {'total': 1023303680, 'avail': 460541952, 'need': 0, 'threshold': 2}, '/run/user/42': {'total': 54063177728, 'avail': 54063161344, 'need': 0, 'threshold': 2}, '/run/user/0': {'total': 54063177728, 'avail': 54063177728, 'need': 0, 'threshold': 2}, '/data': {'total': 1575068344320, 'avail': 497190289408, 'need': 0, 'threshold': 2}}
-- [email protected] execute: cat /proc/sys/fs/aio-max-nr /proc/sys/fs/aio-nr -- exited code 0
-- [email protected] execute: ulimit -n -- exited code 0
-- [email protected] execute: cat /proc/meminfo -- exited code 0
-- [email protected] execute: df --block-size=1024 -- exited code 0
-- disk: {'/': {'total': 75125227520, 'avail': 67840217088, 'need': 0, 'threshold': 2}, '/dev': {'total': 118053625856, 'avail': 118053625856, 'need': 0, 'threshold': 2}, '/dev/shm': {'total': 118082760704, 'avail': 118082760704, 'need': 0, 'threshold': 2}, '/run': {'total': 118082760704, 'avail': 118062694400, 'need': 0, 'threshold': 2}, '/sys/fs/cgroup': {'total': 118082760704, 'avail': 118082760704, 'need': 0, 'threshold': 2}, '/boot': {'total': 1063256064, 'avail': 624144384, 'need': 0, 'threshold': 2}, '/home': {'total': 3917710397440, 'avail': 3868386504704, 'need': 0, 'threshold': 2}, '/run/user/0': {'total': 23616548864, 'avail': 23616495616, 'need': 0, 'threshold': 2}, '/data': {'total': 1599539908608, 'avail': 560329302016, 'need': 0, 'threshold': 2}}
-- [email protected] execute: cat /proc/sys/fs/aio-max-nr /proc/sys/fs/aio-nr -- exited code 0
-- [email protected] execute: ulimit -n -- exited code 0
-- [email protected] execute: cat /proc/meminfo -- exited code 0
-- [email protected] execute: df --block-size=1024 -- exited code 0
-- disk: {'/': {'total': 75125227520, 'avail': 58658381824, 'need': 0, 'threshold': 2}, '/dev': {'total': 202001055744, 'avail': 202001055744, 'need': 0, 'threshold': 2}, '/dev/shm': {'total': 202031288320, 'avail': 202031288320, 'need': 0, 'threshold': 2}, '/run': {'total': 202031288320, 'avail': 201994788864, 'need': 0, 'threshold': 2}, '/sys/fs/cgroup': {'total': 202031288320, 'avail': 202031288320, 'need': 0, 'threshold': 2}, '/boot': {'total': 1063256064, 'avail': 697192448, 'need': 0, 'threshold': 2}, '/home': {'total': 399375269888, 'avail': 396548882432, 'need': 0, 'threshold': 2}, '/run/user/0': {'total': 40406257664, 'avail': 40406220800, 'need': 0, 'threshold': 2}, '/data': {'total': 1575068344320, 'avail': 677431332864, 'need': 0, 'threshold': 2}}
-- [email protected] execute: date +%s%N -- exited code 0
-- 192.168.1.174 time delta -1.206787109375
-- [email protected] execute: date +%s%N -- exited code 0
-- 192.168.1.114 time delta -0.87451171875
-- [email protected] execute: date +%s%N -- exited code 0
-- 192.168.1.112 time delta -0.5009765625

  • sub start_check ref count to 0
  • export start_check
  • Call oceanbase-ce-py_script_start-3.1.0 for oceanbase-ce-3.1.2-0005ef8ee805db0f6b4c493c9eead69bdb78ef00
  • import start
  • add start ref count to 1
    Start observer ok
    -- [email protected] execute: bash -c 'if [ -f /data/xxxxob/bin/observer ]; then exit 1; else exit 0; fi;' -- exited code 1, error output:

-- [email protected] execute: ls /data/xxxxob/store/ilog/ -- exited code 0
-- [email protected] execute: cat /data/xxxxob/run/observer.pid -- exited code 1, error output:
cat: /data/xxxxob/run/observer.pid: No such file or directory

-- z1(192.168.1.174) start command construction
-- [email protected] execute: bash -c 'if [ -f /data/amdob/bin/observer ]; then exit 1; else exit 0; fi;' -- exited code 1, error output:

-- [email protected] execute: ls /data/amdob/store/ilog/ -- exited code 0
-- [email protected] execute: cat /data/amdob/run/observer.pid -- exited code 1, error output:
cat: /data/amdob/run/observer.pid: No such file or directory

-- z2(192.168.1.114) start command construction
-- [email protected] execute: bash -c 'if [ -f /data/intelob/bin/observer ]; then exit 1; else exit 0; fi;' -- exited code 1, error output:

-- [email protected] execute: ls /data/intelob/store/ilog/ -- exited code 0
-- [email protected] execute: cat /data/intelob/run/observer.pid -- exited code 1, error output:
cat: /data/intelob/run/observer.pid: No such file or directory

-- z3(192.168.1.112) start command construction
-- starting z1(192.168.1.174) observer
-- [email protected] set env LD_LIBRARY_PATH to '/data/xxxxob/lib:'
-- [email protected] execute: cd /data/xxxxob; /data/xxxxob/bin/observer -r '192.168.1.174:2882:2881;192.168.1.114:2882:2881;192.168.1.112:2882:2881' -o __min_full_resource_pool_memory=268435456,memory_limit='160G',datafile_disk_percentage=30,enable_syslog_wf=False,enable_syslog_recycle=True,max_syslog_file_count=4 -z 'zone1' -p 2881 -P 2882 -c 1 -d '/data/xxxxob/store' -i 'ens72f1' -l 'INFO' -- exited code 0
-- [email protected] set env LD_LIBRARY_PATH to ''
-- starting z2(192.168.1.114) observer
-- [email protected] set env LD_LIBRARY_PATH to '/data/amdob/lib:'
-- [email protected] execute: cd /data/amdob; /data/amdob/bin/observer -r '192.168.1.174:2882:2881;192.168.1.114:2882:2881;192.168.1.112:2882:2881' -o __min_full_resource_pool_memory=268435456,memory_limit='160G',datafile_disk_percentage=30,enable_syslog_wf=False,enable_syslog_recycle=True,max_syslog_file_count=4 -z 'zone2' -p 2881 -P 2882 -c 1 -d '/data/amdob/store' -i 'enp65s0f0' -l 'INFO' -- exited code 0
-- [email protected] set env LD_LIBRARY_PATH to ''
-- starting z3(192.168.1.112) observer
-- [email protected] set env LD_LIBRARY_PATH to '/data/intelob/lib:'
-- [email protected] execute: cd /data/intelob; /data/intelob/bin/observer -r '192.168.1.174:2882:2881;192.168.1.114:2882:2881;192.168.1.112:2882:2881' -o __min_full_resource_pool_memory=268435456,memory_limit='160G',datafile_disk_percentage=30,enable_syslog_wf=False,enable_syslog_recycle=True,max_syslog_file_count=4 -z 'zone3' -p 2881 -P 2882 -c 1 -d '/data/intelob/store' -i 'ens3f0' -l 'INFO' -- exited code 0
-- [email protected] set env LD_LIBRARY_PATH to ''

observer program health check ok
-- z1(192.168.1.174) program health check
-- [email protected] execute: cat /data/xxxxob/run/observer.pid -- exited code 0
-- [email protected] execute: ls /proc/132439 -- exited code 0
-- z1(192.168.1.174) observer[pid: 132439] started
-- z2(192.168.1.114) program health check
-- [email protected] execute: cat /data/amdob/run/observer.pid -- exited code 0
-- [email protected] execute: ls /proc/22872 -- exited code 0
-- z2(192.168.1.114) observer[pid: 22872] started
-- z3(192.168.1.112) program health check
-- [email protected] execute: cat /data/intelob/run/observer.pid -- exited code 0
-- [email protected] execute: ls /proc/1113311 -- exited code 0
-- z3(192.168.1.112) observer[pid: 1113311] started

  • sub start ref count to 0

  • export start

  • Call oceanbase-ce-py_script_connect-3.1.0 for oceanbase-ce-3.1.2-0005ef8ee805db0f6b4c493c9eead69bdb78ef00

  • import connect

  • add connect ref count to 1
    Connect to observer ok
    -- connect 192.168.1.174 -P2881 -uroot -p

  • sub connect ref count to 0

  • export connect
    Initialize cluster

  • Call oceanbase-ce-py_script_bootstrap-3.1.0 for oceanbase-ce-3.1.2-0005ef8ee805db0f6b4c493c9eead69bdb78ef00

  • import bootstrap

  • add bootstrap ref count to 1
    -- execute sql: set session ob_query_timeout=1000000000
    Cluster bootstrap x
    -- execute sql: alter system bootstrap REGION "sys_region" ZONE "zone1" SERVER "192.168.1.174:2882",REGION "sys_region" ZONE "zone2" SERVER "192.168.1.114:2882",REGION "sys_region" ZONE "zone3" SERVER "192.168.1.112:2882"
    Traceback (most recent call last):
    File "core.py", line 1084, in start_cluster
    File "_plugin.py", line 235, in call
    else:
    File "_plugin.py", line 209, in _new_func
    except Exception as e:
    File "/root/.obd/plugins/oceanbase-ce/3.1.0/bootstrap.py", line 46, in bootstrap
    cursor.execute(sql)
    File "/usr/obd/lib/site-packages/pymysql/cursors.py", line 148, in execute
    result = self._query(query)
    File "/usr/obd/lib/site-packages/pymysql/cursors.py", line 310, in _query
    conn.query(q)
    File "/usr/obd/lib/site-packages/pymysql/connections.py", line 548, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
    File "/usr/obd/lib/site-packages/pymysql/connections.py", line 775, in _read_query_result
    result.read()
    File "/usr/obd/lib/site-packages/pymysql/connections.py", line 1156, in read
    first_packet = self.connection._read_packet()
    File "/usr/obd/lib/site-packages/pymysql/connections.py", line 725, in _read_packet
    packet.raise_for_error()
    File "/usr/obd/lib/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
    File "/usr/obd/lib/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
    pymysql.err.OperationalError: (4015, 'System error')

Traceback (most recent call last):
File "/root/.obd/plugins/oceanbase-ce/3.1.0/bootstrap.py", line 46, in bootstrap
cursor.execute(sql)
File "/usr/obd/lib/site-packages/pymysql/cursors.py", line 148, in execute
result = self._query(query)
File "/usr/obd/lib/site-packages/pymysql/cursors.py", line 310, in _query
conn.query(q)
File "/usr/obd/lib/site-packages/pymysql/connections.py", line 548, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
File "/usr/obd/lib/site-packages/pymysql/connections.py", line 775, in _read_query_result
result.read()
File "/usr/obd/lib/site-packages/pymysql/connections.py", line 1156, in read
first_packet = self.connection._read_packet()
File "/usr/obd/lib/site-packages/pymysql/connections.py", line 725, in _read_packet
packet.raise_for_error()
File "/usr/obd/lib/site-packages/pymysql/protocol.py", line 221, in raise_for_error
err.raise_mysql_exception(self._data)
File "/usr/obd/lib/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
raise errorclass(errno, errval)
pymysql.err.OperationalError: (4015, 'System error')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "core.py", line 1084, in start_cluster
File "_plugin.py", line 235, in call
else:
File "_plugin.py", line 209, in _new_func
except Exception as e:
File "/root/.obd/plugins/oceanbase-ce/3.1.0/bootstrap.py", line 70, in bootstrap
cursor.execute('select * from oceanbase.__all_rootservice_event_history where module = "bootstrap" and event = "bootstrap_succeed"')
File "/usr/obd/lib/site-packages/pymysql/cursors.py", line 148, in execute
result = self._query(query)
File "/usr/obd/lib/site-packages/pymysql/cursors.py", line 310, in _query
conn.query(q)
File "/usr/obd/lib/site-packages/pymysql/connections.py", line 548, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
File "/usr/obd/lib/site-packages/pymysql/connections.py", line 775, in _read_query_result
result.read()
File "/usr/obd/lib/site-packages/pymysql/connections.py", line 1156, in read
first_packet = self.connection._read_packet()
File "/usr/obd/lib/site-packages/pymysql/connections.py", line 725, in _read_packet
packet.raise_for_error()
File "/usr/obd/lib/site-packages/pymysql/protocol.py", line 221, in raise_for_error
err.raise_mysql_exception(self._data)
File "/usr/obd/lib/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
raise errorclass(errno, errval)
pymysql.err.ProgrammingError: (1146, "Table 'oceanbase.__all_rootservice_event_history' doesn't exist")

  • sub bootstrap ref count to 0
  • export bootstrap
    Cluster init failed
  • share lock /root/.obd/lock/mirror_and_repo release, count 0
  • unlock /root/.obd/lock/mirror_and_repo
  • exclusive lock /root/.obd/lock/deploy_xxxx_intel_amd10 release, count 0
  • unlock /root/.obd/lock/deploy_xxxx_intel_amd10
  • share lock /root/.obd/lock/global release, count 0
  • unlock /root/.obd/lock/global

DNS record of yum.tbsite.net is broken

Issue Report

1. Minimal reproduce step

sudo yum-config-manager --add-repo http://yum.tbsite.net/mirrors/oceanbase/OceanBase.repo

2. What did you expect to see?

Add repo sucessfully.

3. What did you see instead

$ sudo yum-config-manager --add-repo http://yum.tbsite.net/mirrors/oceanbase/OceanBase.repo
Loaded plugins: fastestmirror, langpacks
adding repo from: http://yum.tbsite.net/mirrors/oceanbase/OceanBase.repo
grabbing file http://yum.tbsite.net/mirrors/oceanbase/OceanBase.repo to /etc/yum.repos.d/OceanBase.repo
Could not fetch/save url http://yum.tbsite.net/mirrors/oceanbase/OceanBase.repo to file /etc/yum.repos.d/OceanBase.repo: [Errno 14] curl#6 - "Could not resolve host: yum.tbsite.net; Unknown error"

dig yum.tbsite.net also returns no A record

4. Workaround

Use yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo instead.

Maybe fix README or DNS resolution

[Bug]: OBD will check os version when install obproxy.

Please check the issue list for the same bug

  • I have checked issue list and this bug is encountered for the first time.

Environment

- OB Version&commit_id or other module version&commit_id (e.g. observer V3.1.2 8b23a93):
obproxy (OceanBase 3.2.3 2)
- Hardware parameter:OS type & Compliler & CPU etc.
Linux OPNOB01 4.19.90-23.15.v2101.ky10.x86_64 oceanbase/oceanbase#1 SMP Wed Sep 1 16:09:15 CST 2021 x86_64 x86_64 x86_64 GNU/Linux 
Kylin Linux Advanced Server release V10 (Tercel)
Model name:  Hygon C86 7285 32-core Processor
- Others

Fast Reproduce Steps(Required)

obd cluster autodeploy openob -c distributed-with-obproxy-example.yaml -v -f

Actual Behavior

[2022-04-12 15:47:06.530554] INFO [PROXY] ob_proxy_main.cpp:558 [95998][Y0-0] [lt=0] [dc=0] succ to init logger(max_log_file_size=268435456, async_tid=140036463412992)
[2022-04-12 15:47:06.530621] INFO ob_file.cpp:59 [95998][Y0-0] [lt=35] [dc=0] open fname=[/dev/urandom] fd=14 flags=0 succ
[2022-04-12 15:47:06.530661] INFO [PROXY] ob_proxy_main.cpp:476 [95998][Y0-0] [lt=5] [dc=0] ObProxy-OceanBase 3.2.3-2-6-local-99faebfc7130b70ad0f56330a28cab6a32ec9a33
[2022-04-12 15:47:06.530669] INFO [PROXY] ob_proxy_main.cpp:480 [95998][Y0-0] [lt=7] [dc=0] has no inherited sockets, start new obproxy(info={is_inherited:false, upgrade_version:-1, need_conn_accept:true, user_rejected:0, fd:-1, received_sig:-1, sub_pid:-1, graceful_exit_end_time:0, graceful_exit_start_time:0, active_client_vc_count:-1, local_addr:"0.0.0.0", rc_status:"", hu_cmd:"", state:"HU_STATE_WAIT_HU_CMD", hu_status:"", is_parent:true, sub_status:"", last_parent_status:"", last_sub_status:"", upgrade_version_buf:"", argc:9, argv[0]="bin/obproxy", argv[1]="-o", argv[2]="obproxy_sys_password=***,enable_cluster_checkout=False", argv[3]="--listen_port", argv[4]="2883", argv[5]="--prometheus_listen_port", argv[6]="2884", argv[7]="--rs_list", argv[8]="197.0.33.28:2881;197.0.33.29:2881;197.0.33.30:2881", inherited_argv[0]="bin/obproxy", inherited_argv[1]="(null)", inherited_argv[2]="(null)", inherited_argv[3]="(null)"})
[2022-04-12 15:47:06.536614] INFO [PROXY] ob_proxy.cpp:635 [95998][Y0-0] [lt=37] [dc=0] fail to load config from file, but we can get the config from OCP by sql later(ret=0)
[2022-04-12 15:47:06.536637] INFO [SHARE] ob_common_config.cpp:102 [95998][Y0-0] [lt=12] [dc=0] Load config succ(name="obproxy_sys_password", value="Cmbc@2022")
[2022-04-12 15:47:06.536649] INFO [SHARE] ob_common_config.cpp:102 [95998][Y0-0] [lt=7] [dc=0] Load config succ(name="enable_cluster_checkout", value="False")
[2022-04-12 15:47:06.536716] WARN [PROXY] get_kernel_release_by_uname (ob_config_server_processor.cpp:1043) [95998][Y0-0] [lt=6] [dc=0] unknown uname release(u_info.release="4.19.90-23.15.v2101.ky10.x86_64", ret=-4016)
[2022-04-12 15:47:06.536730] WARN [PROXY] init_proxy_kernel_release (ob_config_server_processor.cpp:1156) [95998][Y0-0] [lt=14] [dc=0] fail to get_kernel_release_by_uname(ret=-4016)
[2022-04-12 15:47:06.536745] WARN [PROXY] init (ob_config_server_processor.cpp:120) [95998][Y0-0] [lt=15] [dc=0] fail to init proxy kernel release(ret=-4016)
[2022-04-12 15:47:06.536749] ERROR [PROXY] init_conn_pool (ob_proxy.cpp:581) [95998][Y0-0] [lt=4] [dc=0] fail to init config server processor(ret=-4016) BACKTRACE:0xb83a9a 0xb57eab 0xae5a6c 0xb2d949 0xb2da40 0xb2dd96 0xaf4df5 0xb0a0fe 0xaf2574 0x7f5cda136b67 0xae403f
[2022-04-12 15:47:06.537005] WARN [PROXY] init_config (ob_proxy.cpp:813) [95998][Y0-0] [lt=256] [dc=0] fail to init connection pool(ret=-4016)
[2022-04-12 15:47:06.537011] ERROR [PROXY] init (ob_proxy.cpp:175) [95998][Y0-0] [lt=5] [dc=0] fail to init config(ret=-4016) BACKTRACE:0xb83a9a 0xb57eab 0xae5a6c 0xb2e14c 0xaf4df5 0xb0a0fe 0xaf2574 0x7f5cda136b67 0xae403f
[2022-04-12 15:47:06.537029] WARN [PROXY] init (ob_proxy.cpp:233) [95998][Y0-0] [lt=17] [dc=0] fail to init obproxy(ret=-4016)
[2022-04-12 15:47:06.537033] ERROR [PROXY] do_start_work (ob_proxy_main.cpp:663) [95998][Y0-0] [lt=3] [dc=0] obproxy init failed(ret=-4016) BACKTRACE:0xb83a9a 0xb57eab 0xae5a6c 0xaf4f59 0xb0a0fe 0xaf2574 0x7f5cda136b67 0xae403f

[2022-04-12 15:47:06.537048] ERROR [PROXY] start (ob_proxy_main.cpp:483) [95998][Y0-0] [lt=15] [dc=0] fail to do start work(ret=-4016) BACKTRACE:0xb83a9a 0xb57eab 0xae5a6c 0xb0a51f 0xaf2574 0x7f5cda136b67 0xae403f
obproxy [OPTIONS]
-h,--help print this help
-p,--listen_port LPORT obproxy listen port
-l,--promethues_listen_port PLPORT obproxy prometheus listen port
-o,--optstr OPTSTR extra options string
-n,--appname APPNAME application name
-r,--rs_list RS_LIST root server list(format ip:sql_port)
-c,--cluster_name CLUSTER_NAME root server cluster name
-d,--dump_config_sql DSQL dump config sql to file
-e,--execute_config_sql ESQL exectue config sql(create tables, insert initial data)
-N,--nodaemon don't run in daemon
-V,--version VERSION current obproxy version

Expected Behavior

obproxy can start normal

other information

add enable_strict_kernel_release=false when start obproxy,it will ok.

Question about [ERROR] No such install plugin for obproxy-3.2.0

I'm installing Oceanbase on centOS 7

Linux ob1 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

I get this error and the error message is kind of confusing:

[root@ob1 ~]# obd cluster autodeploy ob-test -c ob-deploy.yml  -A
oceanbase-ce-3.1.4 already installed.
Package obproxy-3.2.0 is available.
obagent-1.1.2 already installed.
[ERROR] No such install plugin for obproxy-3.2.0

What does this message mean? Install is a verb, not a noun. I think this should be replaced with [ERROR] No such plugin for installing obproxy-3.2.0. Correct me if I'm wrong.

autodeploy 无法探测devname, 导致启动报错

enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet xx.xx.xx.xx  netmask 255.255.255.128  broadcast 30.49.4.255
        inet6 xxx::xxx:xxx:xxx:xxx  prefixlen 64  scopeid 0x20<link>
        ether xx:xx:xx:xx:xx:xx  txqueuelen 1000  (Ethernet)
        RX packets 191565  bytes 262189509 (250.0 MiB)
        RX errors 0  dropped 132  overruns 0  frame 0
        TX packets 78977  bytes 9038834 (8.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 13013  bytes 1448791 (1.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 13013  bytes 1448791 (1.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

导致启动的时候, 会报错

[ERROR] xx.xx.xx.xx lo fail to ping xx.xx.xx.xx. Please check configuration `devname`

work around, 在autodeploy 的example 文件中, 先加上

    # Please set devname as the network adaptor's name whose ip is  in the setting of severs.
    # if set severs as "127.0.0.1", please set devname as "lo"
    # if current ip is 192.168.1.10, and the ip's network adaptor's name is "eth0", please use "eth0"
    devname: eth0

ubuntu 18.04源码编译obdeploy报错 fatal: 不是一个 git 仓库(或者任何父目录):.git

> sh build.sh
build.sh: 9: build.sh: Bad substitution
> bash build.sh
Enter python path [default /usr/bin/python2.7-config]:/usr/bin/python3.8
--2021-12-21 17:08:59-- https://mirrors.aliyun.com/oceanbase/OceanBase.repo
正在连接 127.0.0.1:8889... 已连接。
已发出 Proxy 请求,正在等待回应... 200 OK
长度: 512 [application/octet-stream]
正在保存至: “OceanBase.repo”

OceanBase.repo 100%[================================================================>] 512 --.-KB/s 用时 0s

2021-12-21 17:08:59 (302 MB/s) - 已保存 “OceanBase.repo” [512/512])

fatal: 不是一个 git 仓库(或者任何父目录):.git
fatal: 不是一个 git 仓库(或者任何父目录):.git
Installation of obd finished successfully
Please source /etc/profile.d/obd.sh to enable it

obd编译成功,执行报错

编译一切正常,执行obd命令,报错信息如下:

[chris@obdeploy ~]$ obd
Traceback (most recent call last):
File "obd.py", line 32, in
File "/usr/lib/python2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 391, in load_module
exec(bytecode, module.dict)
File "core.py", line 32, in
File "/usr/lib/python2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 391, in load_module
exec(bytecode, module.dict)
File "prettytable.py", line 46, in
File "/usr/lib/python2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 391, in load_module
exec(bytecode, module.dict)
File "wcwidth/init.py", line 12, in
File "/usr/lib/python2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 391, in load_module
exec(bytecode, module.dict)
File "wcwidth/wcwidth.py", line 79, in
ImportError: No module named functools_lru_cache
[30322] Failed to execute script obd
[chris@obdeploy ~]$

[Bug]: obd failed connect to observer if the password of root@sys is not modified by obd itself.

Please check the issue list for the same bug

  • I have checked issue list and this bug is encountered for the first time.

Environment

- OB Version: observer V3.1.3

Fast Reproduce Steps(Required)

  1. deploying a OB cluster by obd and without setting the password of root
  2. login into the root@sys, change the password of root user
  3. issuing obd cluster display cluster-name, then failure occurs

Actual Behavior

obd will failed connect to observer if the password of root@sys is not modified by obd itself.

Expected Behavior

obd should still be able to connect to observer(such as, by providing obd a corect password of root@sys), even the password of root@sys is not modified by obd itself.

Should not let user to fix it by following steps

  1. login into root@sys,
  2. alter root password to '',
  3. modify the pasword by obd cluster edit-config ...
  4. ...

other information

nop

obd test mysqltest fail

admin@obdriver:~$ obd test mysqltest obtest
Get local repositories and plugins ok
Open ssh connection ok
Cluster status check ok
Connect obproxy(172.30.62.203:2883) ok
[ERROR] /u01/obclient/bin/mysqltest: unknown variable 'default-character-set=utf8mb4'

mysqltest is not an executable file. please use `--mysqltest-bin` to set
You may not have obclient installed
admin@obdriver:~$ which obclient
/app/mariadb/bin/obclient
admin@obdriver:~$ which obclient
/app/mariadb/bin/obclient
admin@obdriver:~$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
VERSION_CODENAME=stretch
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
admin@obdriver:~$ uname -a
Linux obdriver 4.9.0-16-amd64 #1 SMP Debian 4.9.272-1 (2021-06-21) x86_64 GNU/Linux

Please how long will it take for every step of obtpch

Every step will take much time to run, in order to better tuning the performance of system, please add timestamp like this

2022-02-10 10:20:04  Begin to send tbl to remote xxx
2022-02-10 10:24:06 Sussessfully sent tbl to remote xxxx

Get local repositories and plugins ok
Open ssh connection ok
Cluster status check ok
Connect observer(z1(172.30.62.232):2881) ok
Generate Data (Scale Factor: 10) ok
Send tbl to remote (z1(172.30.62.232)) ok
reate table ok
Load data /

obd cluster display[ERROR] Failed to connect oceanbase-ce

OS:Red Hat Enterprise Linux Server release 7.5 (Maipo)
Linux eu-server1 3.10.0-1160.25.1.el7.x86_64 #1 SMP Wed Apr 28 21:49:45 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

部署单节点成功obd cluster deploy local -c mini-local-example.yaml
image

启动几分钟后
再执行obd cluster display oceanbase
报错[ERROR] Failed to connect oceanbase-ce
observer本身没问题,可以用mysql客户端连接。
/root/.obd/log/obd日志
[2021-06-02 10:39:46] [ca36f8aa-c34b-11eb-a39a-5897bde6551a] [DEBUG] -- exited code 0 [2021-06-02 10:39:46] [ca36f8aa-c34b-11eb-a39a-5897bde6551a] [DEBUG] - sub status ref count to 0 [2021-06-02 10:39:46] [ca36f8aa-c34b-11eb-a39a-5897bde6551a] [DEBUG] - export status [2021-06-02 10:39:46] [ca36f8aa-c34b-11eb-a39a-5897bde6551a] [DEBUG] - Call oceanbase-ce-py_script_connect-3.1.0 for oceanbase-ce-3.1.0-56f57e9843e719d830ec03c206d914f4b3adc82b [2021-06-02 10:39:46] [ca36f8aa-c34b-11eb-a39a-5897bde6551a] [DEBUG] - import connect [2021-06-02 10:39:46] [ca36f8aa-c34b-11eb-a39a-5897bde6551a] [DEBUG] - add connect ref count to 1 [2021-06-02 10:39:46] [ca36f8aa-c34b-11eb-a39a-5897bde6551a] [INFO] Connect to observer [2021-06-02 10:40:16] [ca36f8aa-c34b-11eb-a39a-5897bde6551a] [DEBUG] - sub connect ref count to 0 [2021-06-02 10:40:16] [ca36f8aa-c34b-11eb-a39a-5897bde6551a] [DEBUG] - export connect [2021-06-02 10:40:16] [ca36f8aa-c34b-11eb-a39a-5897bde6551a] [ERROR] [ERROR] Failed to connect oceanbase-ce

[浦发银行] micro_block_merge_verify_level block upgrade from 3.1.2 to 3.1.3-ce-bp

For details, please refer to https://open.oceanbase.com/ask/detail?id=33800008

【问题描述】obd从1.2.1升级到1.3.3,然后用obd将原3.1.2版本ob集群升级到3.1.3-ce-bp版本,OBD升级oceanbase-ce 3.1.3报错,upgrade is not allowed temporarily。

执行升级命令是:obd cluster upgrade obtest -c oceanbase-ce -V 3.1.3 -v

[work around]
已解决。

micro_block_merge_verify_level 用于设置合并时宏块的校验级别。

在做benchmarkSQL 5.0测试集群性能时,为了性能最优将改参数修改为0。教程见https://open.oceanbase.com/docs/observer-cn/V3.1.3/10000000000096614

但是OBD升级集群时,会校验这个值必须是2或者3才可以。

obd mirror add function "enable OR disable"

obd mirror add disable(enable) remote mirror function。

for example:
obd mirror disable remote,then first use local mirror;
obd mirror enable remote, default value,then first use remote mirror。

obd test sysbench should support run multiple times with different threads

In normal, it will run one test with different threads like this

obd test sysbench obperf --component=obproxy --tenant=perf --script-name=oltp_read_only.lua --table-size=1000000 --threads=32/64/128/256/512/1024

you can define the format as 32/64/128/256/512/1024 or 32&64&128&256&512&1024 or json format [32,64,128,256,512,1024]

No such net interface: enp1s0 caused by line 170 of start_check.py

Hardware: E5-2650v2 based kvm virtual machine
OS:openAnolis 8.4GA
Problem:
No such net interface: enp1s0
on all nodes when executing obd cluster start obcluster
Caused by:
line 170 of start_check.py:
if not client.execute_command("grep -e ' %s:' /proc/net/dev" % devname):
the space in grep -e ' %s:'
in /proc/net/dev, there is no space before enp1s0
removing the space can fix the problem.
Located in /root/.obd/plugins/oceanbase/3.1.0/start_check.py.
perhaps the same problem in /root/.obd/plugins/obproxy/3.1.0/start_check.py should also be fixed?

Failed to run tpch test after modify root@sys password by SQL

It will report

obd test tpch 3node  --tenant=test -s 100 --remote-tbl-dir=/data/ob/tpch100
Get local repositories and plugins ok
Open ssh connection ok
Cluster status check ok
Connect observer(server1(172.30.62.xxx):2881) x
[ERROR] Failed to connect to the server
See https://open.oceanbase.com/docs/obd-cn/V1.3.0/10000000000099584.

Due to obd failed to connect ob server with root@sys, once the password of root@sys has been modified by SQL

Suggest:

  1. provide more log error message.
  2. provate one error code.

example/mini-single-example.yaml user部分注释调整

目前是Only need to configure when remote login is required
如果就在obd当前机器,当前用户下 部署一个单节点的OB环境,按照现在的提示,可以不用填写密码或者密钥

实际为:
只有在ip为127.0.0.1,用户为当前用户时才不需要身份校验,其他时候请填写正确的密码或者密钥。

obd cluster start失败

使用案例:
mini-single-example.yaml
截图:
QQ截图20210811164927
描述:
yaml配置中IP若配置为obd所在机器,则可以正常start,如果配置为其他机器,则在start时发生上面的报错

离线安装执行obd cluster deploy时, 会请求阿里云下载repomd.xml文件

离线环境
按照官方文档quick-start配置好 yaml文件后,
已执行 obd mirror clone *.rpm
版本:
ob-deploy-1.0.2-2.el7.x86_64.rpm
obproxy-3.1.0-1.el7.x86_64.rpm
oceanbase-ce-3.1.0-2.el7.x86_64.rpm
oceanbase-ce-libs-3.1.0-2.el7.x86_64.rpm

执行obd cluster deploy 后, 会卡在 Update OceanBase-community-stable-el7 - 不动,
image

执行 netstat -nalp | grep obd , 会看到尝试连接外网, 并且会轮询不同的IP
image

在deploy 界面执行 ctrl + C后, 会报如下错误, 可以看到是在请求阿里云
image

希望可以开启完全离线部署模式

Error is raised during obd running ob-sysbench

Please check the FAQ documentation before raising an issue

Please check the old issues before raising an issue in case someone has asked the same question that you are asking.

Describe the bug (must be provided)

A clear and concise description of what the bug is.

Your Environments (must be provided)

  • OS: uname -a
[admin@obce00 sysbench]$ uname -a
Linux obce00 4.18.0-305.12.1.el8_4.x86_64 oceanbase/oceanbase#1 SMP Wed Aug 11 01:59:55 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
  • Compliler: g++ --version or clang++ --version
  • CPU: lscpu
[admin@obce00 sysbench]$ lscpu |grep CPU
CPU op-mode(s):      32-bit, 64-bit
CPU(s):              8
On-line CPU(s) list: 0-7
CPU family:          6
Model name:          Intel(R) Xeon(R) Platinum 8269CY CPU @ 2.50GHz
CPU MHz:             2499.998
NUMA node0 CPU(s):   0-7
[admin@obce00 sysbench]$
  • Commit id (e.g. a3ffc7d8)
[admin@obce00 sysbench]$ obd --version
OceanBase Deploy: 1.1.1.1635419571
REVISION: 568d5be78f586edacc5fb5e3671f86b0ce85e38c
BUILD_BRANCH: master
BUILD_TIME: Oct 28 2021 19:12:51OURCE
Copyright (C) 2021 OceanBase
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[admin@obce00 sysbench]$

How To Reproduce(must be provided)

Steps to reproduce the behavior:

  1. Install OBD and ob-sysbench
[admin@obce00 ~]$ rpm -qa|egrep -i "deploy|sysbench"
ob-sysbench-1.0.20-3.el8.x86_64
ob-deploy-1.1.1-1.alios7.x86_64
[admin@obce00 ~]$

obd configuration file :

## Only need to configure when remote login is required
user:
   username: admin
#   password: your password if need
   key_file: /home/admin/.ssh/id_rsa.pub
   port: your ssh port, default 22
#   timeout: ssh connection timeout (second), default 30
oceanbase-ce:
  servers:
    - name: obce01
      # Please don't use hostname, only IP can be supported
      ip: 192.168.249.53
    - name: obce02
      ip: 192.168.249.55
    - name: obce03
      ip: 192.168.249.56
    - name: obce04
      # Please don't use hostname, only IP can be supported
      ip: 192.168.249.53
    - name: obce05
      ip: 192.168.249.55
    - name: obce06
      ip: 192.168.249.56
  global:
    # Please set devname as the network adaptor's name whose ip is  in the setting of severs.
    # if set severs as "127.0.0.1", please set devname as "lo"
    # if current ip is 192.168.1.10, and the ip's network adaptor's name is "eth0", please use "eth0"
    devname: eth0
    cluster_id: 2
    # please set memory limit to a suitable value which is matching resource.
    memory_limit: 10G # The maximum running memory for an observer
    system_memory: 3G # The reserved system memory. system_memory is reserved for general tenants. The default value is 30G.
    stack_size: 512K
    cpu_count: 16
    cache_wash_threshold: 1G
    __min_full_resource_pool_memory: 268435456
    workers_per_cpu_quota: 10
    schema_history_expire_time: 1d
    # The value of net_thread_count had better be same as cpu's core number.
    net_thread_count: 4
    major_freeze_duty_time: Disable
    minor_warm_up_duration_time: 0
    freeze_trigger_percentage: 40
    enable_separate_sys_clog: 0
    enable_merge_by_turn: FALSE
    #datafile_disk_percentage: 20 # The percentage of the data_dir space to the total disk space. This value takes effect only when datafile_size is 0. The default value is 90.
    datafile_size: 50G
    syslog_level: WARN # System log level. The default value is INFO.
    enable_syslog_wf: false # Print system logs whose levels are higher than WARNING to a separate log file. The default value is true.
    enable_syslog_recycle: true # Enable auto system log recycling or not. The default value is false.
    max_syslog_file_count: 10 # The maximum number of reserved log files before enabling auto recycling. The default value is 0.
    # observer cluster name, consistent with obproxy's cluster_name
    appname: obce-3zones
    root_password: FAKEPASSWORD02 # root user password, can be empty
    proxyro_password: FAKEPASSWORD03 # proxyro user pasword, consistent with obproxy's observer_sys_password, can be empty
  obce01:
    mysql_port: 2881 # External port for OceanBase Database. The default value is 2881.
    rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882.
    #  The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
    home_path: /home/admin/oceanbase-ce
    # The directory for data storage. The default value is $home_path/store.
    data_dir: /data/1
    # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
    redo_dir: /redo/1
    zone: zone1
  obce02:
    mysql_port: 2881 # External port for OceanBase Database. The default value is 2881.
    rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882.
    #  The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
    home_path: /home/admin/oceanbase-ce
    # The directory for data storage. The default value is $home_path/store.
    data_dir: /data/1
    # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
    redo_dir: /redo/1
    zone: zone2
  obce03:
    mysql_port: 2881 # External port for OceanBase Database. The default value is 2881.
    rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882.
    #  The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
    home_path: /home/admin/oceanbase-ce
    # The directory for data storage. The default value is $home_path/store.
    data_dir: /data/1
    # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
    redo_dir: /redo/1
    zone: zone3
  obce04:
    mysql_port: 3881 # External port for OceanBase Database. The default value is 2881.
    rpc_port: 3882 # Internal port for OceanBase Database. The default value is 2882.
    #  The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
    home_path: /home/admin/oceanbase-ce2
    # The directory for data storage. The default value is $home_path/store.
    data_dir: /data/2
    # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
    redo_dir: /redo/2
    zone: zone1
  obce05:
    mysql_port: 3881 # External port for OceanBase Database. The default value is 2881.
    rpc_port: 3882 # Internal port for OceanBase Database. The default value is 2882.
    #  The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
    home_path: /home/admin/oceanbase-ce2
    # The directory for data storage. The default value is $home_path/store.
    data_dir: /data/2
    # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
    redo_dir: /redo/2
    zone: zone2
  obce06:
    mysql_port: 3881 # External port for OceanBase Database. The default value is 2881.
    rpc_port: 3882 # Internal port for OceanBase Database. The default value is 2882.
    #  The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
    home_path: /home/admin/oceanbase-ce2
    # The directory for data storage. The default value is $home_path/store.
    data_dir: /data/2
    # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
    redo_dir: /redo/2
    zone: zone3
obproxy:
  servers:
    - 192.168.249.54
  global:
    listen_port: 2883 # External port. The default value is 2883.
    prometheus_listen_port: 2884 # The Prometheus port. The default value is 2884.
    home_path: /home/admin/obproxy
    # oceanbase root server list
    # format: ip:mysql_port;ip:mysql_port
    rs_list: 192.168.249.53:2881;192.168.249.55:2881;192.168.249.56:2881
    enable_cluster_checkout: false
    # observer cluster name, consistent with oceanbase-ce's appname
    cluster_name: obce-3zones
    obproxy_sys_password: FAKEPASSWORD01 # obproxy sys user password, can be empty
    observer_sys_password: FAKEPASSWORD03 # proxyro user pasword, consistent with oceanbase-ce's proxyro_password, can be empty
  1. Prepare MySQL tenant
CREATE resource unit my_unit_config max_cpu=9, min_cpu=9, max_memory='5G', min_memory='5G', max_iops=10000, min_iops=1000, max_session_num=1000000, max_disk_size='1024G';
create resource pool my_pool unit='my_unit_config',unit_num=1;
create tenant obmysql resource_pool_list=('my_pool'), primary_zone='RANDOM',comment 'mysql tenant/instance', charset='utf8' set ob_tcp_invited_nodes='%', ob_compatibility_mode='mysql';
  1. Prepare sysbenchdb in obmysql tenant.
create database sysbenchdb;
grant all privileges on sysbenchdb.* to u_sysbench identified by '123456';
  1. Run ob-sysbench test
[admin@obce00 ~]$ obd test sysbench obce-3zones --user=root --password=123456 --tenant=obmysql --database=sysbenchdb --script-name=point_select.lua --tables=12 --threads=12 --time=120 --interval=30 --skip-trx=on  -v
- open /home/admin/.obd/version for a+
- cmd: ['obce-3zones']
- opts: {'component': None, 'test_server': None, 'user': 'root', 'password': '123456', 'tenant': 'obmysql', 'database': 'sysbenchdb', 'obclient_bin': 'obclient', 'sysbench_bin': 'sysbench', 'script_name': 'point_select.lua', 'sysbench_script_dir': '/usr/sysbench/sha}
- Get Deploy by name
- mkdir /home/admin/.obd/cluster/
- Check deploy status
- Get deploy configuration
Get local repositories and plugins ok
- mkdir /home/admin/.obd/repository
- Get local repository oceanbase-ce-3.1.1-9bd714fc16b102ff6309330fee51d7e64df4b351
- Get local repository obproxy-3.1.0-d242ea5fe45222b8f61c3135ba2aaa778c61ea22
- Searching param plugin for components ...
- Search param plugin for oceanbase-ce
- mkdir /home/admin/.obd/plugins
- Found for oceanbase-ce-param-3.1.0 for oceanbase-ce-3.1.1
- Applying oceanbase-ce-param-3.1.0 for oceanbase-ce-3.1.1-9bd714fc16b102ff6309330fee51d7e64df4b351
- Search param plugin for obproxy
- Found for obproxy-param-3.1.0 for obproxy-3.1.0
- Applying obproxy-param-3.1.0 for obproxy-3.1.0-d242ea5fe45222b8f61c3135ba2aaa778c61ea22

Open ssh connection ok
Cluster status check ok
- Searching status plugin for components ...
- Searching status plugin for oceanbase-ce-3.1.1-9bd714fc16b102ff6309330fee51d7e64df4b351
- Found for oceanbase-ce-py_script_status-3.1.0 for oceanbase-ce-3.1.1
- Searching status plugin for obproxy-3.1.0-d242ea5fe45222b8f61c3135ba2aaa778c61ea22
- Found for obproxy-py_script_status-3.1.0 for obproxy-3.1.0
- Call oceanbase-ce-py_script_status-3.1.0 for oceanbase-ce-3.1.1-9bd714fc16b102ff6309330fee51d7e64df4b351
- import status
- add status ref count to 1
-- [email protected] execute: cat /home/admin/oceanbase-ce/run/observer.pid -- exited code 0
-- [email protected] execute: ls /proc/81360 -- exited code 0
-- [email protected] execute: cat /home/admin/oceanbase-ce/run/observer.pid -- exited code 0
-- [email protected] execute: ls /proc/73426 -- exited code 0
-- [email protected] execute: cat /home/admin/oceanbase-ce/run/observer.pid -- exited code 0
-- [email protected] execute: ls /proc/76164 -- exited code 0
-- [email protected] execute: cat /home/admin/oceanbase-ce2/run/observer.pid -- exited code 0
-- [email protected] execute: ls /proc/81506 -- exited code 0
-- [email protected] execute: cat /home/admin/oceanbase-ce2/run/observer.pid -- exited code 0
-- [email protected] execute: ls /proc/73580 -- exited code 0
-- [email protected] execute: cat /home/admin/oceanbase-ce2/run/observer.pid -- exited code 0
-- [email protected] execute: ls /proc/76318 -- exited code 0
- sub status ref count to 0
- export status
- Call obproxy-py_script_status-3.1.0 for obproxy-3.1.0-d242ea5fe45222b8f61c3135ba2aaa778c61ea22
- import status
- add status ref count to 1
-- [email protected] execute: cat /home/admin/obproxy/run/obproxy-192.168.249.54-2883.pid -- exited code 0
-- [email protected] execute: ls /proc/758910 -- exited code 0
- sub status ref count to 0
- export status

- Searching connect plugin for components ...
- Searching connect plugin for oceanbase-ce-3.1.1-9bd714fc16b102ff6309330fee51d7e64df4b351
- Found for oceanbase-ce-py_script_connect-3.1.0 for oceanbase-ce-3.1.1
- Searching connect plugin for obproxy-3.1.0-d242ea5fe45222b8f61c3135ba2aaa778c61ea22
- Found for obproxy-py_script_connect-3.1.0 for obproxy-3.1.0
- import connect
- add connect ref count to 1
Connect obproxy(192.168.249.54:2883) ok
-- connect 192.168.249.54 -P2883 -uroot@proxysys -pFAKEPASSWORD01

- sub connect ref count to 0
- export connect
Connect obproxy(192.168.249.54:2883) x
-- connect 192.168.249.54 -P2883 -uroot -pFAKEPASSWORD01
-- connect 192.168.249.54 -P2883 -uroot -p
-- connect 192.168.249.54 -P2883 -uroot -pFAKEPASSWORD01
-- connect 192.168.249.54 -P2883 -uroot -p
-- connect 192.168.249.54 -P2883 -uroot -pFAKEPASSWORD01
-- connect 192.168.249.54 -P2883 -uroot -p
-- connect 192.168.249.54 -P2883 -uroot -pFAKEPASSWORD01
-- connect 192.168.249.54 -P2883 -uroot -p
-- connect 192.168.249.54 -P2883 -uroot -pFAKEPASSWORD01
-- connect 192.168.249.54 -P2883 -uroot -p

[ERROR] Failed to connect to the server
Trace ID: 4efc07d0-3861-11ec-b00a-00163e2ec8ff
[admin@obce00 ~]$

Expected behavior

A clear and concise description of what you expected to happen.

The sysbenchdb data initialization was successfully performed!

Additional context

Provide logs and configs, or any other context to trace the problem.

更新了最新的代码,执行build上来就报依赖包版本错误

错误信息如下:

[chris@ob-allinone obdeploy]$ sudo sh rpm/build.sh build
[sudo] chris 的密码:
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
Looking in indexes: http://mirrors.aliyun.com/pypi/simple/
Collecting mysql-connector-python==8.0.21
  Downloading http://mirrors.aliyun.com/pypi/packages/09/f1/472b2add5d411dd8922e3f2a666d307d152e352e94682f01504ca72bdd37/mysql_connector_python-8.0.21-cp27-cp27mu-manylinux1_x86_64.whl (16.0 MB)
     |████████████████████████████████| 16.0 MB 670 kB/s
Collecting protobuf>=3.0.0
  Downloading http://mirrors.aliyun.com/pypi/packages/6c/be/4e32d02bf08b8f76bf6e59f2a531690c1e4264530404501f3489ca975d9a/protobuf-4.21.0-py2.py3-none-any.whl (164 kB)
     |████████████████████████████████| 164 kB 655 kB/s
ERROR: Package 'protobuf' requires a different Python: 2.7.5 not in '>=3.7'

看了一下属于依赖软件包对CentOS 7当前的Python 2.7已经不支持率,不清楚大家是怎么编译的,请指教。

用root用户部署集群报错

系统版本:CentOS Linux release 7.9.2009 (Core)
部署三节点,执行obd cluster deploy obtest -c /home/sre/observer.yaml
报错:
Open ssh connection /Exception: Error reading SSH protocol banner[Errno 104] Connection reset by peer
Traceback (most recent call last):
File "paramiko/transport.py", line 2211, in _check_banner
File "paramiko/packet.py", line 380, in readline
File "paramiko/packet.py", line 607, in _read_timeout
ConnectionResetError: [Errno 104] Connection reset by peer

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "paramiko/transport.py", line 2039, in run
File "paramiko/transport.py", line 2216, in _check_banner
paramiko.ssh_exception.SSHException: Error reading SSH protocol banner[Errno 104] Connection reset by peer

Open ssh connection x
[ERROR] [email protected] connect failed: Error reading SSH protocol banner[Errno 104] Connection reset by peer

autodeploy 没有探测远程的机器配置

autodeploy 探测的是本机的硬件配置, 不是探测的真正observer 上机器的配置

当主控机器和observer 机器配置出入比较大时, 会有很大的偏差

deploy 和autodeploy 的“-A” 参数解释不对

-A 是创建租户, 但英文的解释是不自动创建
命令解释应该是

Automatically create a tenant whose name is 'test', and the tenant will using all the available resource of the cluster. 
admin@obdriver:~$ obd cluster deploy
Usage: obd cluster deploy <deploy name> [options]

Options:

  -A, --auto-create-tenant, --act
                        Disable OBD from creating a tenant named `test` by
                        using all the available resource of the cluster.


admin@obdriver:~$ obd cluster autodeploy
Usage: obd cluster autodeploy <deploy name> [options]

Options:

  -A, --auto-create-tenant, --act
                        Disable OBD from creating a tenant named `test` by
                        using all the available resource of the cluster.


oceanbase-ce start failed

使用README.md中的步骤部署本地单节点服务时无法启动集群。

使用命令

obd cluster deploy local -c mini-local-example.yaml

可以正确部署集群。

但是使用命令

obd cluster start local

就会得到

Get local repositories and plugins ok
[WARN] (127.0.0.1) fs.aio-max-nr must not be less than 1048576 (Current value: 65536)
[WARN] (127.0.0.1) open files number must not be less than 655350 (Current value: 1024)
[WARN] (127.0.0.1) not enough memory
Start observer ok
observer program health check ok
Connect to observer x
[ERROR] Failed to connect oceanbase-ce

的错误。

使用命令

obd cluster start local -v

得到报告的末尾为

Start observer ok
-- local execute: echo $HOME/.obd -- exited code 0
-- local execute: ls /root/observer/store/clog -- exited code 0
-- local execute: cat /root/observer/run/observer.pid -- exited code 1, error output:
cat: /root/observer/run/observer.pid: No such file or directory

-- 127.0.0.1 start command construction
-- starting 127.0.0.1 observer
-- local execute: cd /root/observer; /root/.obd/repository/oceanbase-ce/3.1.0/56f57e9843e719d830ec03c206d914f4b3adc82b/bin/observer -r '127.0.0.1:2882:2883' -o __min_full_resource_pool_memory=268435456,datafile_size='8G',memory_limit='8G',system_memory='4G',stack_size='512K',cpu_count=16,cache_wash_threshold='1G',workers_per_cpu_quota=10,schema_history_expire_time='1d',net_thread_count=4,sys_bkgd_migration_retry_num=3,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,datafile_disk_percentage=20 -z 'zone1' -p 2883 -P 2882 -c 1 -d '/root/observer/store' -i 'lo' -- exited code 0

observer program health check x
-- 127.0.0.1 program health check
-- local execute: cat /root/observer/run/observer.pid -- exited code 0
-- local execute: ls /proc/3852 -- exited code 2, error output:
ls: cannot access /proc/3852: No such file or directory


[WARN] failed to start 127.0.0.1 observer
- sub start ref count to 0
- export start
[ERROR] oceanbase-ce start failed

/root/observer/log/observer.log末尾为

[2021-06-01 03:04:46.088611] INFO  [CLOG] ob_log_engine.cpp:160 [4411][0][Y0-0000000000000000] [lt=8] [dc=0] log env start success(min_file_id=1, start_file_id=1)
[2021-06-01 03:04:46.088616] INFO  [CLOG] ob_log_engine.cpp:191 [4411][0][Y0-0000000000000000] [lt=3] [dc=0] start from tail locator(file_id=1, offset=0)
[2021-06-01 03:04:46.088619] INFO  [CLOG] ob_log_engine.cpp:664 [4411][0][Y0-0000000000000000] [lt=2] [dc=0] old log env start success
[2021-06-01 03:04:46.088963] INFO  [CLOG.CSR] ob_ilog_store.cpp:560 [4411][0][Y0-0000000000000000] [lt=2] [dc=0] ObIlogStore start finished(ret=0)
[2021-06-01 03:04:46.088973] INFO  [CLOG.CSR] ob_ilog_storage.cpp:798 [4411][0][Y0-0000000000000000] [lt=9] [dc=0] ObIlogStorage start finished(ret=0)
[2021-06-01 03:04:46.088977] INFO  [CLOG] ob_log_engine.cpp:677 [4411][0][Y0-0000000000000000] [lt=4] [dc=0] log engine start success
(libev) error creating signal/async pipe: Too many open files
[2021-6-1 8:4:46.93254] WARN [send_request_and_wait@ob_signal_worker.cpp:65] [4411][Y7369676E616C-1] pipe failed
[2021-06-01 03:04:46.093110] INFO  [STORAGE.TRANS] ob_time_wheel.cpp:399 [4411][0][Y0-0000000000000000] [lt=3] [dc=0] ObTimeWheel start success(timer_name="ClogEventTimeW")
[2021-06-01 03:04:46.093123] INFO  [ARCHIVE] ob_archive_mgr.cpp:93 [4411][0][Y0-0000000000000000] [lt=12] [dc=0] ObArchiveMgr threads begin start
CRASH ERROR!!! sig=6, sig_code=-6, sig_addr=113b, timestamp=1622534686106457, tid=4411, tname=observer, trace_id=0-0, extra_info=((null)), lbt=0x90af028 0x90b0076 0x7f3654c9162f 0x7f36545e8387 0x7f36545e9a77 0x92925aa 0x92904b7 0x9291c3a 0x8ee80c1 0x8eb5429 0x2a50561 0x72569ae 0x72440c8 0x7243d60 0x6d8d8aa 0x7b38cd5 0x870b042 0x24be81b 0x7f36545d4554 0x24bd4e8
[2021-6-1 8:4:46.110423] INFO [cut@ob_memory_cutter.cpp:131] [4917][Y7369676E616C-0] free_chunk, freed: 6291456
[2021-6-1 8:4:46.123443] INFO [cut@ob_memory_cutter.cpp:139] [4917][Y7369676E616C-0] free_stack, freed: 1437982720
[2021-6-1 8:4:46.135977] INFO [cut@ob_memory_cutter.cpp:147] [4917][Y7369676E616C-0] free_memstore, freed: 0
[2021-6-1 8:4:46.136157] INFO [cut@ob_server_memory_cutter.cpp:64] [4917][Y7369676E616C-0] free_cache, freed: 0
[2021-6-1 8:4:46.136173] INFO [coredump_cb@ob_signal_handlers.cpp:114] [4917][Y7369676E616C-0] [MINICORE], TOTAL FREED: 1444274176

默认分布式部署文件缺少机器网卡配置项

使用github/gitee中提供的默认的distributed-with-obproxy-example.yaml进行部署时,启动报错:
[ERROR] server3(x.x.x.x) lo fail to ping x.x.x.x. Please check configuration devname
[ERROR] server3(x.x.x.x) lo fail to ping x.x.x.x. Please check configuration devname
[ERROR] server3(x.x.x.x) lo fail to ping x.x.x.x. Please check configuration devname
调研后发现,需要在yaml的各个server配置项下增加devname: ethx来指定使用的网卡。
由于配置文件中默认没有给出此配置项,且错误信息给的不是很明确,导致部署失败时无法通过错误信息快速定位,建议在默认的yaml文件中给出此配置项,并附说明此项需要修改为目标机器的网卡名称。

[From Bank of Mingshen] Please support debug mode

Python support Debugging, but right now obd doesn't support debugging.

This will leading to it is hard to find root cause when install OB.

Please support one document to show how to debugging the obd, user can download the source code of OBD, and start debugging.

OB进程携带明文密码

ps aux |grep observer 会把root密码携带出来,是不是太不安全了。面在部署的时候写在yaml文件了,是不是该加密下呢
image

Run with compiled binary

Hey guys!

I have successfully compiled and deployed on Ubuntu 20.04 image. I will open a PR after further test.

root@host:/data/oceanbase# cat /etc/issue
Ubuntu 20.04.2 LTS \n \l

root@host:/data/oceanbase# build_debug/src/observer/observer --version
build_debug/src/observer/observer --version
observer (OceanBase CE 3.1.0)

REVISION: -377fa3d62f0b4a7a20dd2e7ebaaa0ef38f190759
BUILD_BRANCH: master
BUILD_TIME: Jun  2 2021 16:39:57
BUILD_FLAGS: Debug
BUILD_INFO:

Copyright (c) 2021 Ant Group Co., Ltd.

After I compile and install the binary from source code, then I find obd cluster deploy xx -c mini-local-example.yaml still download the RPM from yum repo and totally ignored my local install. how can I start the instance with my local binary?

Thank you

Originally posted by @zhihuiFan in oceanbase/oceanbase#56 (comment)

使用obd和模板文件可正常创建obproxy,但是访问obproxy时返回结果异常

image

配置文件如下:
user:
username: root
password: 123456
oceanbase-ce:
servers:
# Please don't use hostname, only IP can be supported
- 172.17.103.212
global:
home_path: /root/observer
# Please set devname as the network adaptor's name whose ip is in the setting of severs.
# if set severs as "127.0.0.1", please set devname as "lo"
# if current ip is 192.168.1.10, and the ip's network adaptor's name is "eth0", please use "eth0"
devname: eth0
mysql_port: 2881
rpc_port: 2882
zone: zone1
# if current hardware's memory capacity is smaller than 50G, please use the setting of "mini-single-example.yaml" and do a small adjustment.
memory_limit: 64G
datafile_disk_percentage: 20
syslog_level: INFO
enable_syslog_recycle: true
max_syslog_file_count: 4
cluster_id: 3
# observer cluster name, consistent with obproxy's cluster_name
appname: single_with_proxy
root_password: # root user password, can be empty
proxyro_password: # proxyro user pasword, consistent with obproxy's observer_sys_password, can be empty
obproxy:
servers:
- 172.17.103.212
global:
listen_port: 2883
prometheus_listen_port: 2884
home_path: /root/obproxy
# oceanbase root server list
# format: ip:mysql_port,ip:mysql_port
rs_list: 172.17.103.212:2881
enable_cluster_checkout: false
# observer cluster name, consistent with oceanbase-ce's appname
cluster_name: single_with_proxy
obproxy_sys_password: # obproxy sys user password, can be empty
observer_sys_password: # proxyro user pasword, consistent with oceanbase-ce's proxyro_password, can be empty

安装过程中的obproxy版本信息如下:
image

麻烦看一下吧,谢谢~

rpm package should provide example configurations

OBD rpm package should contain example configurations, so user can easy get the configuration.

Some tips,

  1. the example configuration can be put /etc/oceanbase
  2. After install the RPM package, it tell user find the example configuration files under /etc/oceanbase.

The obproxy default port should be 2881

升级obproxy异常

obproxy 从3.1.0升级3.2.0失败
Connect to obproxy x

Get local repositories and plugins ok
+---------------------------------------------------------------------------------------------------------+
|                    Search obproxy 3.2.0 Result                    |
+---------+---------+---------+--------+------------------------------------------------------------------+
| name  | version | release | arch  | md5                               |
+---------+---------+---------+--------+------------------------------------------------------------------+
| obproxy | 3.2.0  | 1.el7  | x86_64 | c2ad988860a0fe5c07cbe3755fab0e2c165cf7a771e6c1f11741cc7208bf13d3 |
+---------+---------+---------+--------+------------------------------------------------------------------+
Download obproxy-3.2.0-1.el7.x86_64.rpm (7.80 M): 100% [####################################################################################] Time: 0:00:05  1.38 MB/s
install obproxy-3.2.0 for local ok
Open ssh connection ok
[WARN] No such upgrade_route plugin for obproxy-3.1.0
[WARN] No such upgrade_check plugin for obproxy-3.1.0
[WARN] No such upgrade_check plugin for obproxy-3.2.0
+-----------------------------------------------------------------------------------------+
|                 Packages Will Be Used                 |
+---------+---------+---------+--------+------------------------------------------+-------+
| name  | version | release | arch  | md5                   | mark |
+---------+---------+---------+--------+------------------------------------------+-------+
| obproxy | 3.1.0  | 1.el7  | x86_64 | 0b17cf0459a3b53c5a2febb6572894d183154c64 | start |
| obproxy | 3.2.0  | 1.el7  | x86_64 | 8d5c6978f988935dc3da1dbec208914668dcf3b2 | dest |
+---------+---------+---------+--------+------------------------------------------+-------+
If you use a non-official release, we cannot guarantee a successful upgrade or technical support when you fail. Make sure that you want to use the above package to upgrade. [y/n]: y
Remote obproxy-3.2.0-8d5c6978f988935dc3da1dbec208914668dcf3b2 repository install ok
Remote obproxy-3.2.0-8d5c6978f988935dc3da1dbec208914668dcf3b2 repository lib check ok
Stop obproxy ok
Start obproxy ok
obproxy program health check ok
Connect to obproxy x	

配置文件如下

oceanbase-ce:
  servers:
    - 192.168.1.3
  global:
    home_path: /root/observer
    devname: eth0
    mysql_port: 2881
    rpc_port: 2882
    zone: zone1
    cluster_id: 1
    memory_limit: 8G
    system_memory: 4G
    stack_size: 512K
    cpu_count: 16
    cache_wash_threshold: 1G
    __min_full_resource_pool_memory: 268435456
    workers_per_cpu_quota: 10
    schema_history_expire_time: 1d
    net_thread_count: 4
    major_freeze_duty_time: Disable
    minor_freeze_times: 10
    enable_separate_sys_clog: 0
    enable_merge_by_turn: FALSE
    datafile_disk_percentage: 20
    syslog_level: INFO
    enable_syslog_recycle: true
    max_syslog_file_count: 4
    appname: observer_cluster_name
obproxy:
  servers:
    - 192.168.1.2
  global:
    listen_port: 2883
    prometheus_listen_port: 2884
    home_path: /root/obproxy
    rs_list: 192.168.1.3:2881
    enable_cluster_checkout: false
    cluster_name: observer_cluster_name

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.