2023-02-09 16:46:53 +00:00
..
2023-02-09 16:46:53 +00:00
2023-02-09 16:46:53 +00:00
2023-02-09 16:46:53 +00:00
2023-02-09 16:46:53 +00:00

How to deploy OceanBase with docker

OceanBase provide a standalone test image named oceanbase-ce for OceanBase Database. By default, this image deploys a MINI_MODE OceanBase instance.

WARNING

  • The oceanbase-ce docker image is just used for study or test;
  • Please use oceanbase-operator instead if you want to deploy oceanbase in k8s;
  • You should not deploy it with important data as it is not used in production environment.

Reasons:

  1. The cluster contains only one instance, so there is no disaster tolerant ability;
  2. It is very difficult to recover after failure because docker container cannot started while the oceanbase instance cannot start success, which means you lost the container and the data with it;
  3. K8s can not restart a new pod because the container still exists after the observer process quit.

Prerequisite

Before you deploy oceanbase-ce docker, do the following checks:

  • Make sure that your machine has enough resource that can execute at least 2 phycical core and 8GB memory.
  • Your machine has installed these applications:
    Application Recommended version Documentation
    Docker Latest Docker Documentation
  • You have started the Docker service on your machine.

Start an OceanBase instance

To start an OceanBase instance, run this command:

# deploy mini instance
docker run -p 2881:2881 --name oceanbase-ce -d oceanbase/oceanbase-ce

# deploy an instance of the largest size according to the current container
docker run -p 2881:2881 --name oceanbase-ce -e MINI_MODE=0 -d oceanbase/oceanbase-ce

Two to five minutes are necessary for the boot procedure. To make sure that the boot procedure is successful, run this command:

$ docker logs oceanbase-ce | tail -1
boot success!

After started, there is an oceanbase instance. You can connect to the oceanbase by root user without password.

Connect to an OceanBase instance

oceanbase-ce image contains obclient (OceanBase Database client) and the default connection script ob-mysql.

docker exec -it oceanbase-ce ob-mysql sys # Connect to sys tenant
docker exec -it oceanbase-ce ob-mysql root # Connect to the root account of a general tenant
docker exec -it oceanbase-ce ob-mysql test # Connect to the test account of a general tenant

Or you can run this command to connect to an OceanBase instance with your local obclient or MySQL client.

mysql -uroot -h127.1 -P2881

Supported environment variables

This table shows the supported environment variables of the current oceanbase-ce mirror version:

Variable name Default value Description
MINI_MODE false If ture, will use mini mode to deploy OceanBase Database instance, it should be used only for research/study/evaluation. DO NOT use it for production or performance testing.
EXIT_WHILE_ERROR true Whether quit the container while start observer failed. If start observer failed, you can not explore the logs as the container will exit. But if you set the EXIT_WHILE_ERROR=false, the container will not exit while observer starting fail and you can use docker exec to debug.

Run the Sysbench script

oceanbase-ce image installs the Sysbench tool by default. And the Sysbench tool is configured. You can run these commands in sequence to run the Sysbench script with the default configurations.

docker exec -it oceanbase-ce obd test sysbench obcluster

Mount Volumn

You can use -v /your/host/path:/container/path parameter in docker run command to save data in host os if you want to persistence the data of a container.

Below is an example.

docker run -d -p 2881:2881 -v $PWD/ob:/root/ob -v $PWD/obd:/root/.obd --name oceanbase oceanbase/oceanbase-ce

Note that you should use your own path.

The docker image oceanbase-ce saves the data to /root/ob directory default. You should bind both the /root/ob and /root/.obd. You can not start new docker image if you only bind the /root/ob directory, because the docker image oceanbase-ce uses the obd to manage database clusters and there is no information about the database cluster in a new docker container.

You can view more information about docker -v at docker volumn.