创建复制表的sql语句

请问创建复制表的语句怎么写呀?想实现分布式数据库中,别的表hash分区,这个表在所有节点都有该表全部数据的效果。oceanbase版本 5.7.25-OceanBase_CE-v4.1.0.0。用原来的语句报错。mysql> CREATE TABLE CUSTOMER (
→ C_CUSTKEY INTEGER NOT NULL,
→ C_NAME VARCHAR(25) NOT NULL,
→ C_ADDRESS VARCHAR(40) NOT NULL,
→ C_NATIONKEY INTEGER NOT NULL,
→ C_PHONE CHAR(15) NOT NULL,
→ C_ACCTBAL DECIMAL(15,2) NOT NULL,
→ C_MKTSEGMENT CHAR(10) NOT NULL,
→ C_COMMENT VARCHAR(117) NOT NULL)
→ DUPLICATE SCHEMA = ‘cluster’;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near ‘DUPLICATE SCHEMA = ‘cluster’’ at line 10

语法错了吧。

DUPLICATE_SCOPE才对,并且为之也不对,应该是建表语句括号外的属性

看看建表说明

https://www.oceanbase.com/docs/community-observer-cn-10000000000901486

复制表语法

可以在创建表的时候就指定复制表属性 DUPLICATE_SCOPE 。这个属性有下面几个值:

NONE : 这个是默认值,表示是普通的表。

CLUSTER :表的备副本分布在租户资源池所在的所有机器上。

create table t1(id bigint not null auto_increment , c1 varchar(50), c2 timestamp not null default current_timestamp) duplicate_scope=‘cluster’ ;

也可以在表创建好后修改这个属性。

alter table t1 duplicate_scope = ‘NONE’;

alter table t1 duplicate_scope = ‘CLUSTER’;

非常感谢您的帮助。换成这里的语句,依然报错,四个参数都有尝试 none|cluster|zone|region。通过查看V4.1.0的文档,在创建表时没有发现dupliate_scope语句,所以是不是 5.7.25-OceanBase_CE-v4.1.0.0 |这个版本没有这个功能了
mysql> CREATE TABLE CUSTOMER ( C_CUSTKEY INTEGER NOT NULL,
→ C_NAME VARCHAR(25) NOT NULL,
→ C_ADDRESS VARCHAR(40) NOT NULL,
→ C_NATIONKEY INTEGER NOT NULL,
→ C_PHONE CHAR(15) NOT NULL,
→ C_ACCTBAL DECIMAL(15,2) NOT NULL,
→ C_MKTSEGMENT CHAR(10) NOT NULL,
→ C_COMMENT VARCHAR(117) NOT NULL)
→ DUPLICATE_SCOPE = “cluster”;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near ‘DUPLICATE_SCOPE = “cluster”’ at line 9

非常感谢您的帮助,我的数据库有一些奇奇怪怪的问题,所以只能在创建表时指定分区键之类的,对于表的所有alter操作都会报错ERROR 4013 (HY001): No memory or reach tenant memory limit。
我复制了您的示例语句,依然报错,这个地方就是很奇怪。
mysql> create table t1(id bigint not null auto_increment , c1 varchar(50), c2 timestamp not null default current_timestamp) duplicate_scope=‘cluster’ ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near ‘duplicate_scope=‘cluster’’ at line 1

你的observer配置和租户配置是怎么样的参数

你好,我没找到怎么看内存配置之类的参数,只找到一个看节点数目的参数,看起来它们都还在正常运行。我记得我创建租户的时候,采用的官访问文档的默认配置,应该不大。我再找找对应的参数,查看一下

找到了个配置文件
__min_full_resource_pool_memory=1073741824
log_disk_size=15G
min_observer_version=4.1.0.0
enable_syslog_recycle=True
enable_syslog_wf=False
max_syslog_file_count=4
syslog_level=WDIAG
cluster_id=1
cluster=myoceanbase
rootservice_list=219.216.65.186:2882:2881;219.216.65.188:2882:2881;202.199.13.207:2882:2881
cpu_count=16
system_memory=1G
memory_limit=6G
zone=zone2
devname=eno1
mysql_port=2881
rpc_port=2882
datafile_size=20G
data_dir=/home/myoceanbase/oceanbase/store
^AÔ<81><80><80>^@^A¶<80><80><80>^@[1]
^A¬<80><80><80>^@compatible=4.1.0.0
cpu_quota_concurrency=10
^A <80><80><80>^@[1001]
^A<93><80><80><80>^@compatible=4.1.0.0
^A <80><80><80>^@[1002]
^A<93><80><80><80>^@compatible=4.1.0.0
^A <80><80><80>^@[1003]
^A<93><80><80><80>^@compatible=4.1.0.0
^A <80><80><80>^@[1004]
^A<93><80><80><80>^@compatible=4.1.0.0

image
这两个参数能给大点么 ,目前observer最小推荐参数是要8g的内在,看起来你只给了6g,且系统租户只有1g, 你整成8g然后系统内存给个3g吧,然后再试试

好的,感激不尽

OB 4.1中目前还不支持复制表,会在OB4.2中支持。

ob版本向下兼容的能力有点低 好的动不动某个功能就没了