数据库管理-第252期 深入浅出多主多活数据库技术- Cantian存储引擎(二)(20241017)

数据库管理252期 2024-10-17

  • 数据库管理-第252期 深入浅出多主多活数据库技术- Cantian存储引擎(二)(20241017)
    • 1 部署规划
    • 2 服务器基础配置
      • 2.1 配置HOSTS
      • 2.2 关闭防火墙
      • 2.3 关闭SELinux
      • 2.4 配置yum源
    • 3 编译服务器配置
      • 3.1 安装git
      • 3.2 安装docker
      • 3.3 安装容器依赖软件
    • 4 共享存储服务器配置
      • 4.1 安装NFS
      • 4.2 创建挂载目录
      • 4.3 处理磁盘并挂载
      • 4.4 配置NFS
      • 4.5 启动NFS
    • 5 编译Cantian
      • 5.1 下载源码
      • 5.2 下载MySQL源码包
      • 5.3 添加镜像仓库加速
      • 5.4 构建镜像
      • 5.5 编译源码
      • 5.6 关闭容器
    • 6 部署Cantian
      • 6.1 检查CPU支持
      • 6.2 根目录检查
      • 6.3 Python检查
      • 6.4 检查/dev/shm权限
      • 6.5 调整系统配置
      • 6.6 创建用户
      • 6.7 创建安装目录
      • 6.8 修改Cantian配置文件
      • 6.9 调整其他配置参数
      • 6.10 部署Cantian
      • 6.11 节点2部署
      • 6.12 启动Cantian
      • 6.13 检查Cantian状态
    • 7 配置MySQL
      • 7.1 下载并上传MySQL源码包
      • 7.2 安装依赖软件
      • 7.3 创建MySQL软件目录并解压软件
      • 7.4 编译MySQL
      • 7.5 创建其他目录
      • 7.6 拷贝插件文件
      • 7.7 编写配置文件
      • 7.8 加载插件
      • 7.9 启动MySQL
      • 7.10 节点2部署并启动MySQL
    • 8 意见和建议
    • 总结

数据库管理-第252期 深入浅出多主多活数据库技术- Cantian存储引擎(二)(20241017)

作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Pro: Database(Oracle与MySQL)
PostgreSQL ACE Partner
10年数据库行业经验,现主要从事数据库服务工作
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP、年度墨力之星,ITPUB认证专家、专家百人团成员,OCM讲师,PolarDB开源社区技术顾问,HaloDB外聘技术顾问,OceanBase观察团成员,青学会MOP技术社区(青年数据库学习互助会)技术顾问
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭

演示文稿1_01.png
前面对Cantian存储引擎进行了简单的介绍,本期进行一次部署演示。

1 部署规划

本次部署使用最新的Cantian 24.06进行部署,部署架构如下图:
image.png

服务器配置如下:
image.png

共享磁盘配置如下:
这里通过nfs实现共享。
image.png

Cantian部署流程图:
image.png

2 服务器基础配置

以下配置需要在所有服务器执行:

2.1 配置HOSTS

cat >> /etc/hosts <<EOF
10.10.10.111 ct01
10.10.10.112 ct02
10.10.11.110 mgr
10.10.11.111 ct01-mgr
10.10.11.112 ct02-mgr
20.20.20.111 ct01-priv
20.20.20.112 ct02-priv
30.30.30.113 ctst
30.30.30.111 ct01-san
30.30.30.112 ct02-san
EOF

2.2 关闭防火墙

systemctl stop firewalld.service 
systemctl disable firewalld.service

2.3 关闭SELinux

sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
setenforce 0

2.4 配置yum源

rm -rf /etc/yum.repos.d/*
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
dnf clean all
dnf repolist

3 编译服务器配置

用于编译的服务器可以为本次规划的mgr或ct01/ct02。本次由于资源问题,未部署mgr服务器,编译操作在ct01执行,实际生产中建议用单独服务器执行。其中部分操作需要在所有服务器上执行。

3.1 安装git

#要求git版本>=2.18.0
dnf --showduplicates list git #检查仓库中git版本,为2.27.0,满足需求
dnf -y install git

3.2 安装docker

#要求docker版本>=19.03
# 1.加载br_netfilter内核
modprobe br_netfilter
cat <<EOF | sudo tee /etc/modules-load.d/netfilter.conf
br_netfilter
EOF
lsmod |grep br_netfilter

# 2.配置sysctl
cat >> /etc/sysctl.conf <<EOF
net.ipv4.ip_forward = 1
net.ipv4.conf.all.proxy_arp = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.netfilter.nf_conntrack_max=2310720
vm.swappiness = 0
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
EOF

sysctl -p

# 3.配置docker yum源
dnf install -y yum-utils dnf-utils
dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
dnf --showduplicates list docker-ce #检查仓库中docker版本,最低版本为19.03.13,满足需求

# 4. 安装docker-ce
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin --allowerasing

# 5.配置docker开机启动
systemctl enable --now docker

# 6.检查docker版本
docker --version
[root@ct01 ~]# docker --version
Docker version 26.1.3, build b72abbb

3.3 安装容器依赖软件

# 版本要求cmake 3.14.1,automake 1.16.1,libtool 2.4.6,g++ 8.5.0,pkgconfig 0.29.1-3,rpm-build 4.14.3, 仓库中软件版本均满足条件
dnf -y install cmake automake libaio-devel pkgconf-pkg-config rpm-build libtool gcc-c++ --allowerasing

4 共享存储服务器配置

这里使用NFS实现存储共享。

4.1 安装NFS

dnf install nfs-utils

4.2 创建挂载目录

mkdir /ctst
mkdir /ctst/dbstore
mkdir /ctst/metadata
mkdir /ctst/share
mkdir /ctst/archive

4.3 处理磁盘并挂载

这里使用了一块200G的磁盘做演示:

pvcreate /dev/nvme0n2
vgcreate ctst /dev/nvme0n2
lvcreate -L 150G -n dbstore ctst
lvcreate -L 5G -n metadata ctst
lvcreate -L 2G -n share ctst
lvcreate -L 10G -n archive ctst

mkfs.xfs /dev/mapper/ctst-archive
mkfs.xfs /dev/mapper/ctst-dbstore
mkfs.xfs /dev/mapper/ctst-metadata
mkfs.xfs /dev/mapper/ctst-share

cat >> /etc/fstab << EOF
/dev/mapper/ctst-dbstore /ctst/dbstore xfs defaults 0 0
/dev/mapper/ctst-metadata /ctst/metadata xfs defaults 0 0
/dev/mapper/ctst-share /ctst/share xfs defaults 0 0
/dev/mapper/ctst-archive /ctst/archive xfs defaults 0 0
EOF

mount /ctst/dbstore
mount /ctst/metadata
mount /ctst/share
mount /ctst/archive

image.png

4.4 配置NFS

cat >> /etc/exports << EOF
/ctst 30.30.30.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0,no_root_squash)
/ctst/dbstore 30.30.30.0/24(rw,sync,no_subtree_check,no_root_squash)
/ctst/metadata 30.30.30.0/24(rw,sync,no_subtree_check,no_root_squash)
/ctst/share 30.30.30.0/24(rw,sync,no_subtree_check,no_root_squash)
/ctst/archive 30.30.30.0/24(rw,sync,no_subtree_check,no_root_squash)
EOF

配置说明:第一行的fsid=0配置可以以/ctst为根目录,仅输入该目录下的二级目录名称即可挂载

4.5 启动NFS

systemctl start nfs-server
systemctl enable nfs-server

image.png

注:这里不需要在ct01和ct02上挂载磁盘

5 编译Cantian

5.1 下载源码

mkdir /ctdb/cantian_compile
cd /ctdb/cantian_compile
git clone -b cantian24.6 https://gitee.com/openeuler/cantian.git
git clone -b cantian24.6 https://gitee.com/openeuler/cantian-connector-mysql.git

5.2 下载MySQL源码包

cd /ctdb/cantian_compile/cantian-connector-mysql
# 拷贝8.0.26源码包mysql-server-mysql-8.0.26.tar.gz至该目录
tar -zxf mysql-server-mysql-8.0.26.tar.gz
mv mysql-server-mysql-8.0.26 mysql-source

5.3 添加镜像仓库加速

cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": [
    "https://dockerpull.com",
    "https://hub.uuuadc.top",
    "https://docker.anyhub.us.kg",
    "https://dockerhub.jobcher.com",
    "https://dockerhub.icu",
    "https://docker.ckyl.me",
    "https://docker.awsl9527.cn",
    "https://y8y6vosv.mirror.aliyuncs.com",
    "https://registry.dockercn.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://dockerhub.azk8s.cn",
    "http://hubmirror.c.163.com"
  ]
}
EOF

systemctl reload-daemon
systelctl restart docker

5.4 构建镜像

cd /ctdb/cantian_compile/cantian/docker
# 这里先需要调整Dockfile内容
vim ./Dockfile
#RUN wget --progress=bar:force -O /tmp/libasan5-8.2.1-3.el7.x86_64.rpm http://mirror.centos.org/centos/7/sclo/x86_64/rh/Packages/l/libasan5-8.2.1-3.el7.x86_64.rpm #原内容,对应rpm包地址已失效
RUN wget --progress=bar:force -O /tmp/libasan5-8.2.1-3.el7.x86_64.rpm https://vault.centos.org/7.9.2009/sclo/x86_64/rh/Packages/l/libasan5-8.2.1-3.el7.x86_64.rpm

docker build -t cantian_dev:latest -f Dockerfile .

docker images

image.png

5.5 编译源码

# 1. 启动容器
cd /ctdb/cantian_compile/cantian/docker
sh container.sh dev
# 这里将进入容器内

# 2. 进入编译脚本目录
cd /home/regress/CantianKernel/build

# 3. 生成Cantian引擎软件包
sh build_cantian.sh release

image.png

# 4. 检查生成文件
ls /tmp/cantian_output

image.png

5.6 关闭容器

docker ps
docker stop [CONTAINER ID]

image.png

# (可选)清理image与缓存
docker images
docker rmi [IMAGE ID]
docker system prune

6 部署Cantian

6.1 检查CPU支持

cat /proc/cpuinfo | grep -o constant_tsc | uniq

image.png
需要返回内容为constant_tsc,确保数据库服务器的时间精度

6.2 根目录检查

这里需要确认根目录至少有20GB剩余空间。
image.png

6.3 Python检查

Python版本需>=3.6.0。
image.png
检查pyopenssl,cryptography是否安装

pip3 show pyopenssl
pip3 show cryptography

# 如未安装执行以下命令安装
pip3 install pyopenssl --trusted-host=mirrors.huaweicloud.com -i https://mirrors.huaweicloud.com/repository/pypi/simple/
pip3 install cryptography --trusted-host=mirrors.huaweicloud.com -i https://mirrors.huaweicloud.com/repository/pypi/simple/

image.png

6.4 检查/dev/shm权限

/dev/shm目录权限需要为drwxrwxrwt

ll -d /dev/shm

# 如权限未正确,执行
chmod 777 /dev/shm

image.png

6.5 调整系统配置

cat >> /etc/sysctl.conf <<EOF
kernel.shmmax = 23192823399
EOF

sysctl -p

6.6 创建用户

useradd -m -u 5000 -d /home/ctdba ctdba

6.7 创建安装目录

mkdir /ctdb/cantian_install
chmod 755 /ctdb/cantian_install
chown ctdba:ctdba /ctdb/cantian_install
cd /ctdb/cantian_install
mv /path/to/Cantian_24.06_x86_64_RELEASE.tgz ./
tar -zxvf Cantian_24.06_x86_64_RELEASE.tgz

6.8 修改Cantian配置文件

修改配置文件/ctdb/cantian_install/cantian_connector/action/config_params_file.json

{
  "deploy_mode": "nas",
  "deploy_user": "ctdba:ctdba",
  "node_id": "0",
  "cms_ip": "20.20.20.111;20.20.20.112",
  "storage_dbstore_fs": "dbstore",
  "storage_share_fs": "share",
  "storage_archive_fs": "archive",
  "storage_metadata_fs": "metadata",
  "cantian_in_container": "0",
  "mysql_in_container": "0",
  "share_logic_ip": "30.30.30.113",
  "archive_logic_ip": "30.30.30.113",
  "metadata_logic_ip": "30.30.30.113",
  "storage_logic_ip": "30.30.30.113",
  "db_type": "1",
  "mes_ssl_switch": false,
  "mysql_metadata_in_cantian": false,
  "MAX_ARCH_FILES_SIZE": "512M",
  "ca_path": "",
  "crt_path": "",
  "key_path": "",
  "redo_num": "3",
  "redo_size": "1G"
}

附:配置文件说明
image.png

6.9 调整其他配置参数

在/ctdb/cantian_install/cantian_connector/action/cantian/install_config.json配置中添加以下内容:

"Z_KERNEL_PARAMETER3": "TEMP_BUFFER_SIZE=1G",
"Z_KERNEL_PARAMETER4": "TEMP_POOL_NUM=4",
"Z_KERNEL_PARAMETER5": "BUF_POOL_NUM=16",
"Z_KERNEL_PARAMETER6": "LARGE_POOL_SIZE=256M",
"Z_KERNEL_PARAMETER7": "DATA_BUFFER_SIZE=8G",
"Z_KERNEL_PARAMETER8": "SHARED_POOL_SIZE=512M",
"Z_KERNEL_PARAMETER9": "SESSIONS=512"

注:因为测试环境内存不足,需要调整MySQL相关内存参数。

6.10 部署Cantian

sh /ctdb/cantian_install/cantian_connector/action/appctl.sh install /ctdb/cantian_install/cantian_connector/action/config_params_file.json

这里在操作过程中出现了点小插曲,输出的检查日志的路径和实际的路径位置不一致:
image.png

设置Cantian管理员密码:
image.png

密码:Cantian_123

image.png

6.11 节点2部署

在ct02节点重复6.5-6.10操作内容,注意配置文件"node_id": “1”。

注:如部署过程中(未完成)因为各种原因重启服务器后,需要执行以下命令启动自动挂载
systemctl start cantian
该服务自动挂载后续安装完成后将由服务cantian.timer接管

注:部署过程中会对操作系统相关配置进行调整,并创建用户cantian,用于运行Cantian存储引擎以及MySQL

6.12 启动Cantian

在两个节点上分别执行以下命令:

sh /opt/cantian/action/appctl.sh start

image.png

6.13 检查Cantian状态

systemctl status cantian.timer
systemctl status cantian_logs_handler.timer

su -s /bin/bash - cantian
cms stat

image.png
image.png

注:如安装失败需要重新调整配置并部署,步骤如下:
1.关闭Cantian
sh /opt/cantian/action/appctl.sh stop
2.卸载Cantian
sh /opt/cantian/action/appctl.sh uninstall override
3.删除无效文件
#所有计算节点
rm -rf /mnt/dbdata/local/*
#存储节点
rm -rf /ctst/dbstore/*
rm -rf /ctst/metadata/*
rm -rf /ctst/share/*
rm -rf /ctst/archive/*
4.重新部署
在所有调整完成后重新部署Cantian

7 配置MySQL

7.1 下载并上传MySQL源码包

这里需要注意,需要使用和前面编译过程中一样的8.0.26版本,需要使用编译安装,否则在后续加载Cantian相关插件过程中会出现异常。

mysql-server-mysql-8.0.26.tar.gz

7.2 安装依赖软件

dnf -y install libncurses* ncurses ncurses-devel bison libarchive openssl-devel libtirpc-devel
rpm -ivh rpcgen-1.3.1-4.el8.x86_64.rpm

7.3 创建MySQL软件目录并解压软件

mkdir /ctdb/mysql
mkdir /ctdb/mysql/base
mkdir /ctdb/mysql/boost
chown cantian:cantian /ctdb/mysql -R
cp /path/to/mysql-server-mysql-8.0.26.tar.gz /ctdb/mysql
su -s /bin/bash - cantian
cd /ctdb/mysql
tar -xvf mysql-server-mysql-8.0.26.tar.gz
mv mysql-server-mysql-8.0.26/ mysql_source/

7.4 编译MySQL

cd /ctdb/mysql/mysql_source/
cmake -DCMAKE_INSTALL_PREFIX=/ctdb/mysql/base -DBUILD_CONFIG=mysql_release -DWITH_UNIT_TESTS=0 -DDOWNLOAD_BOOST=1 -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DFORCE_INSOURCE_BUILD=1 -DWITH_BOOST=/ctdb/mysql/boost

image.png

make
make install

image.png

7.5 创建其他目录

su -s /bin/bash - cantian
mkdir /ctdb/mysql/var
mkdir /ctdb/mysql/data
mkdir /ctdb/mysql/tmp
mkdir /ctdb/mysql/log

7.6 拷贝插件文件

cp /opt/cantian/mysql/server/plugin/ha_ctc.so /ctdb/mysql/base/lib/plugin/
cp /opt/cantian/image/cantian_connector/for_mysql_official/mf_connector_mount_dir/cantian_lib/libctc_proxy.so /ctdb/mysql/base/lib/plugin/
cp /opt/cantian/image/cantian_connector/for_mysql_official/mf_connector_mount_dir/cantian_lib/libsecurec.so /ctdb/mysql/base/lib/plugin/
cp /opt/cantian/image/cantian_connector/for_mysql_official/mf_connector_mount_dir/cantian_lib/libsecurec.a /ctdb/mysql/base/lib/plugin/

cp /opt/cantian/image/cantian_connector/for_mysql_official/mf_connector_mount_dir/cantian_lib/libctc_proxy.so /usr/lib64/
cp /opt/cantian/image/cantian_connector/for_mysql_official/mf_connector_mount_dir/cantian_lib/libsecurec.so /usr/lib64/
cp /opt/cantian/image/cantian_connector/for_mysql_official/mf_connector_mount_dir/cantian_lib/libsecurec.a /usr/lib64/

chmod 755 /usr/lib64/libctc_proxy.so
chmod 755 /usr/lib64/libsecurec.so
chmod 755 /usr/lib64/libsecurec.a

chmod 755 /ctdb/mysql/base/lib/plugin/ha_ctc.so
chmod 755 /ctdb/mysql/base/lib/plugin/libctc_proxy.so
chmod 755 /ctdb/mysql/base/lib/plugin/libsecurec.so
chmod 755 /ctdb/mysql/base/lib/plugin/libsecurec.a

chown -R cantian:cantian /ctdb/mysql/base/lib/plugin/ha_ctc.so
chown -R cantian:cantian /ctdb/mysql/base/lib/plugin/libctc_proxy.so
chown -R cantian:cantian /ctdb/mysql/base/lib/plugin/libsecurec.so
chown -R cantian:cantian /ctdb/mysql/base/lib/plugin/libsecurec.a

7.7 编写配置文件

编写配置文件/etc/my.cnf

[client]
socket                             = /ctdb/mysql/var/mysql.sock
port                               = 3306
[mysqld]
############# GENERAL #############
event_scheduler                    = ON
autocommit                         = OFF
character_set_server               = UTF8MB4
collation_server                   = UTF8MB4_UNICODE_CI
explicit_defaults_for_timestamp    = ON
lower_case_table_names             = 1
port                               = 3306
read_only                          = OFF
transaction-isolation              = READ-COMMITTED
interactive_timeout                = 600
max_allowed_packet                 = 32M
max_connections                    = 256
max_user_connections               = 200
sort_buffer_size                   = 1M
table_definition_cache             = 1400
table_open_cache                   = 2000
table_open_cache_instances         = 4
thread_cache_size                  = 9
thread_stack                       = 256K
tmp_table_size                     = 64M
max_heap_table_size                = 64M
check_proxy_users                  = ON
mysql_native_password_proxy_users  = ON

############# SAFETY ##############
local_infile                       = OFF
skip_name_resolve                  = ON
sql_mode                           = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY
############# LOGGING #############
general_log                        = 0
log_queries_not_using_indexes      = ON
log_slow_admin_statements          = ON
long_query_time                    = 10
slow_query_log                     = ON
log_raw                            = ON

############# REPLICATION #############
server_id                          = 101010111

############### PATH ##############
basedir                            = /ctdb/mysql/base
datadir                            = /ctdb/mysql/data
tmpdir                             = /ctdb/mysql/tmp
socket                             = /ctdb/mysql/var/mysql.sock
pid_file                           = /ctdb/mysql/data/mysql.pid
innodb_data_home_dir               = /ctdb/mysql/data
log_error                          = /ctdb/mysql/log/error.log
general_log_file                   = /ctdb/mysql/log/general.log
slow_query_log_file                = /ctdb/mysql/log/slow.log

[mysql]
############# CLIENT #############
max_allowed_packet                 = 32M
socket                             = /ctdb/mysql/var/mysql.sock
[mysqldump]
max_allowed_packet                 = 32M

注:以下参数必须配置
check_proxy_users=ON
mysql_native_password_proxy_users=ON
log_raw= ON

注:MySQL配置的max_connections要低于Cantian部署时的"Z_KERNEL_PARAMETER9": "SESSIONS=512"配置的值(详见本文6.9),也可使用下面命令查询

su -s /bin/bash - cantian
ctsql sys@127.0.0.1:1611 -q #这里需要输入Cantian部署过程中配置的管理员密码
show parameter sessions

image.png

7.8 加载插件

chmod 755 /etc/my.cnf
chown -R cantian:cantian /etc/my.cnf
/ctdb/mysql/base/bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure --datadir=/ctdb/mysql/data --plugin-dir=/ctdb/mysql/base/lib/plugin --early-plugin-load="ctc_ddl_rewriter=ha_ctc.so;ctc=ha_ctc.so;" --initialize-insecure --user=cantian

7.9 启动MySQL

/ctdb/mysql/base/bin/mysqld_safe --defaults-file=/etc/my.cnf --datadir=/ctdb/mysql/data --plugin-dir=/ctdb/mysql/base/lib/plugin --plugin-load="ctc_ddl_rewriter=ha_ctc.so;ctc=ha_ctc.so;" --check_proxy_users=ON --mysql_native_password_proxy_users=ON --default-storage-engine=CTC --user=cantian &

image.png

7.10 节点2部署并启动MySQL

可以将节点1的base目录直接复制到节点2对应路径,并完成本节除MySQL源码编译以外的其他内容。这里需要注意需要调整配置文件中的server_id=101010112。

8 意见和建议

在编译、部署Cantian的过程中针对Cantian 24.06有以下一些地方想吐槽的(也是意见和建议):

  • 只能部署在CentOS 8.2(x86_64)和OpenEuler-22.03-LTS(aarch64)这两个指定的操作系统版本;数据库也只能使用MySQL 8.0.26。这两点造成操作系统和数据库的适配度较差,无法获得最新的更新、修复与安全相关升级。
  • 编译需要依赖docker,以容器方式运行,操作复杂度略大。
  • 编译过程中用了大量EL7的包,未做到良好的版本匹配,有点不解。
  • 编译时间比较长,比肩部署EMCC,按小时计(这也可能是我给的CPU资源不足)。
  • git拉取源代码的时候输入版本24.6,与文档对应和编译后安装版本24.06不一致。
  • 目前仅支持2个节点,希望可以支持更多节点。
  • 官方文档及默认部署针对不同规格服务器的支持不是太好,需要调低部分参数才能执行。
  • MySQL也需要通过编译安装,建议在Cantian编译过程中可以直接包含对应MySQL包生成(如果有的话,请在文档中显著位置标明)。

总结

本篇文章从目录来看就比较复杂,可以说是现在最完善的Cantian存储引擎部署与MySQL对接文档,看着挺复杂实际也不简单,也希望我的意见和建议能够帮助Cantian引擎发展。
老规矩,知道写了些啥。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/893837.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

方法:禁止修改word文件的某些地方

工作中&#xff0c;我们可能会在word中制作一些请柬、表格之类的&#xff0c;有些文件内容不想要进行修改&#xff0c;为了防止他人随意修改内容。我们可以设置限制编辑&#xff0c;可以对一部分内容设置限制编辑&#xff0c;具体方法如下&#xff1a; 我们将需要将可以编辑的…

数据中台业务架构图

数据中台的业务架构是企业实现数据驱动决策和业务创新的关键支撑。它主要由数据源层、数据存储与处理层、数据服务层以及数据应用层组成。 数据源层涵盖了企业内部各个业务系统的数据&#xff0c;如 ERP、CRM 等&#xff0c;以及外部数据来源&#xff0c;如社交媒体、行业数据…

构建effet.js人脸识别交互系统的实战之路

文章目录 前言一、什么是effet.js二、为什么需要使用effet.js四、effet.js能做什么五、使用步骤1.引入库2.main.js中注册全局2.使用3.效果图 六、其他模式讲解人脸打卡人脸添加睡眠检测 在h5中的使用总结 前言 在当今数字化的时代&#xff0c;用户体验变得尤为重要&#xff0c…

OPENSSL-2023/11/10学习记录-C/C++对称分组加密DES

对称分组加密常用算法&#xff1a; DES 3DES AES 国密SM4 对称分组加密应用场景&#xff1a; 文件或者视频加密 加密比特币私钥 消息或者配置项加密 SSL通信加密 对称分组加密 使用异或实现一个简易的对称加密算法 A明文 B秘钥 AB密文AB (AB)B A 密码补全和初始化 数…

链上的羁绊,数据与节点的暗涌心跳

公主请阅 1. 合并两个有序链表1.1 题目说明示例 1示例 2示例 3 1.2 题目分析1.3 代码部分1.4 代码分析 2. 链表的中间节点2.1 题目说明示例 1示例 2 2.2 题目分析2.3 代码部分2.4 代码分析 1. 合并两个有序链表 题目传送门 1.1 题目说明 这个问题要求将两个升序链表合并成一个…

安装谷歌JSON可视化插件-JSON-Handle

背景&#xff1a; 最近在学习node开发&#xff0c;返回的数据看起来太难受&#xff0c;非常需要浏览器自动格式化接口返回的json数据。以下介绍一下怎么在浏览器安装JSON-Handle插件。 步骤&#xff1a; 1、下载扩展文件 地址&#xff1a;JSON-Handle 官网 - 打开json格式文…

健康推荐系统:SpringBoot技术革新

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

音频分割:长语音音频 分割为 短语音音频 - python 实现

在做语音任务时&#xff0c;有是会用到的语音音频是长音频&#xff0c;这就需要我们将长音频分割为短音频。 该示例将声音的音量和静默时间结合作为语音的分割条件。 使用音量和静默时间结合的分割条件&#xff0c;能够比较好的进行自然断句&#xff0c;不会话语没有说完就切断…

Pycharm下载安装教程(详细步骤)+汉化设置教程

今天讲解的是Pycharm安装教程和配置汉化设置&#xff0c;希望能够帮助到大家。 创作不易&#xff0c;还请各位同学三连点赞&#xff01;&#xff01;收藏&#xff01;&#xff01;转发&#xff01;&#xff01;&#xff01; 对于刚入门学习Python还找不到方向的小伙伴可以试试…

搭建mongodb单机部署-认证使用

搭建mongodb单机部署-认证使用 实现思路 先将配置文件配置好&#xff0c;使用不用认证的启动命令启动docker&#xff0c;然后创建账号并制定角色。在使用开启认证的命令重新启动容器就好。 这里我并没有说先停止容器&#xff0c;删掉容器重新创建容器。是因为我的启动命令中…

MyBatis 用法详解

文章目录 一、普通 SQL1.1 注解实现&#xff1a;1.1.1 参数传递&#xff1a;1.1.2 增&#xff08;Insert&#xff09;&#xff1a;1.1.3 删&#xff08;Delete&#xff09;&#xff1a;1.1.4 改&#xff08;Update&#xff09;&#xff1a;1.1.5 查&#xff08;Select&#xff…

OpenCV高级图形用户界面(15)注册一个回调函数来处理鼠标事件的函数setMouseCallback()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 为指定的窗口设置鼠标处理器。 setMouseCallback 是 OpenCV 中的一个功能&#xff0c;允许开发者注册一个回调函数来处理鼠标事件。当用户在窗口…

自监督学习:引领机器学习的新革命

引言 自监督学习&#xff08;Self-Supervised Learning&#xff09;近年来在机器学习领域取得了显著进展&#xff0c;成为人工智能研究的热门话题。不同于传统的监督学习和无监督学习&#xff0c;自监督学习通过利用未标注数据生成标签&#xff0c;从而大幅降低对人工标注数据…

champ模型部署指南

一、介绍 champ是由阿里巴巴、复旦大学和南京大学的研究人员共同提出的一种基于3D的将人物图片转换为视频动画的模型&#xff0c;该方法结合了3D参数化模型(特别是SMPL模型)和潜在扩散模型&#xff0c;能够精确地捕捉和再现人体的3D形状和动态&#xff0c;同时保持动画的时间一…

用SVM做时间序列预测真绝!最新思路无敌了,卷不动的进来看!

时间序列预测算法如今也算是百花齐放了&#xff0c;不过最近大家都在卷爆火的Transformer-based&#xff0c;卷不动的盆友其实也可以考虑从传统方法下手找创新&#xff0c;比如用SVM做时间序列预测。 SVM是一种经典的机器学习算法&#xff0c;在处理非线性及高维模式识别方面很…

k8s中的微服务

一、什么是微服务 用控制器来完成集群的工作负载&#xff0c;那么应用如何暴漏出去&#xff1f;需要通过微服务暴漏出去后才能被访问 Service是一组提供相同服务的Pod对外开放的接口。 借助Service&#xff0c;应用可以实现服务发现和负载均衡。 service默认只支持4层负载均…

黑马程序员-redis项目实践笔记2

目录 三、 Redis实现全局唯一ID 实现优惠卷秒杀下单 超卖问题 一人一单&#xff08;单例项目线程安全问题&#xff09; 一人一单&#xff08;集群环境下的并发问题&#xff09; 分布式锁的基本原理和实现方式对比 Redis分布式锁 实现核心思路 实现代码 Redis分布式锁…

供应商管理是什么?

你是一家制造业的老板&#xff0c;在需求旺盛的时段&#xff0c;却找不到一家合适的供应商&#xff0c;出现供应商突然退出合作&#xff1b;杀熟&#xff0c;供应的产品质量不过关等情况&#xff0c;企业的利益空间瞬间被压榨&#xff0c;急需一套管理系统来帮助选择供应商&…

《七度荒域:混沌之树》风灵月影二十二项游戏辅助:上帝模式/无限HP和EP/金币不减

《七度荒域:混沌之树》是款国产Roguelike银河恶魔城横版动作游戏&#xff0c;融合刷宝玩法。玩家将扮演修补世界的命运之子&#xff0c;探寻碎裂世界的秘密&#xff0c;在战斗轮回中成长&#xff0c;挑战未知与隐秘力量。风灵月影版修改器提供更多自定义和游戏体验调整选项&…

关于MyBatis的一些面试题

mybatis的执行流程 MyBatis 的执行流程主要包括 SQL 解析、参数绑定、执行查询/更新、结果映射等几个步骤。下面详细解释每个步骤的执行流程&#xff1a; 1. 加载配置文件和映射文件 加载 MyBatis 配置文件&#xff1a;启动时&#xff0c;MyBatis 通过 SqlSessionFactoryBui…