首页 > 数据库 > > 数据库系统管理-数据重分布
分布式部署模式下,用户可以使用数据搬迁工具完成数据重分布,使得分片之间数据均衡,保证访问性能。
mkdir -p /opt/software/tools
cd /opt/software/toolstar -zxvf GaussDB_100_1..1-ZEBRATOOL.tar.gz -C /opt/software/tools
首先在当前路径下解压两个工具包,然后切换到root用户,后切换到zebratool目录,执行安装操作
先安装ptyprocess在安装pexpect,下面以ptyprocess为例,pexpect安装方法与ptyprocess相同
[omma@zebratool]\>su - root
Password:
Last login: Tue Sep 24 17:38:38 CST 2019 from 10.134.183.149 on pts/6
[root@host236 ~]#cd /opt/software/tools/GaussDB_100_1.0.1-ZEBRATOOL/zebratool
[root@host236 zebratool]#cd ptyprocess-0.6./
[root@host236 ptyprocess-0.6.]#python setup.py install
running install
running build
running build_py
creating build
creating build/lib
creating build/lib/ptyprocess
copying ptyprocess/__init__.py -> build/lib/ptyprocess
copying ptyprocess/util.py -> build/lib/ptyprocess
copying ptyprocess/_fork_pty.py -> build/lib/ptyprocess
copying ptyprocess/ptyprocess.py -> build/lib/ptyprocess
running install_lib
running install_egg_info
Writing /usr/lib/python2.7/site-packages/ptyprocess-0.6.-py2.7.egg-info
[root@zebratool]#python
Python 2.7.5 (default, Oct 11 2015, 17:47:16)
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ptyprocess
>>> ptyprocess.__path__
['/usr/lib/python2.7/site-packages/ptyprocess']
>>> exit()
[root@zebratool]#chmod 755 -R /usr/lib/python2.7/site-packages/ptyprocess

在pexpect安装过程中,可能出现如下提示,此提示可忽略,不影响正常安装。
File "/usr/lib/python2.7/site-packages/pexpect/_async.py", line 20
transport, pw = yield from asyncio.get_event_loop()\
^
SyntaxError: invalid syntaxcd GaussDB_100_1.0.1-ZEBRATOOL/zebratoolpython encrypttool.py cn_passwd 123456
#其中cn_passwd代表目录名称,工具会在当前目录下生成cn_passwd目录,用于存放用户输入的数据库用户密码加密后生成的加密文件;123456代表用户在配置文件中配置的重分布表的用户对应的密码。cd cn_passwd--查看存放密钥的文件
[omm@plat1 cn_passwd]$ ll
total 12
-rw------- 1 24 Sep 3 22:01 factorstore.dat
-rw------- 1 24 Sep 3 22:01 privilege.dat
-rw------- 1 69 Sep 3 22:01 workerstore.dat
vi repconf_db.json
{
"CN_INFO":[
{
"host": "88.88.88.88",
"port": "1888",
"user": "shard",
"passwd": "path_to_dir_of_encrypted_string"
}
],
"DN_INFO":[
{
"host": "88.88.88.88",
"port": "9888",
"user": "shard",
"passwd": "path_to_dir_of_encrypted_string"
}
],
"parallellevel":10,
"gap_time":20,
"logicrep_user":"lrep",
"bill_user":"shard",
"tasklist":[
{
"tablename":"apple",
"stagingtablename":"staging_apple",
"sql":"create table staging_apple(a INT CONSTRAINT apple primary key, staff_name VARCHAR(16))distribute by RANGE
(a) (groupid 1 VALUES LESS THAN (50000),groupid 2 VALUES LESS THAN (150000))",
"backupname":"apple_bak"
},
{
"tablename":"orange",
"stagingtablename":"staging_orange",
"sql":"create table staging_orange(a INT CONSTRAINT orange primary key, staff_name VARCHAR(16))distribute by RAN
GE (a) (groupid 1 VALUES LESS THAN (50000),groupid 2 VALUES LESS THAN (150000))",
"backupname":"orange_bak"
},
{
"tablename":"strawberry",
"stagingtablename":"staging_strawberry",
"sql":"create table staging_strawberry(a INT CONSTRAINT strawberry primary key, staff_name VARCHAR(16))distribut
e by RANGE (a) (groupid 1 VALUES LESS THAN (50000),groupid 2 VALUES LESS THAN (150000))",
"backupname":"strawberry_bak"
}
]
}
字段含义说明如下:
CN_INFO:CN登陆信息。
host:CN所在主机IP。
port:CN连接端口。
user:搬迁表所属用户名,需要有DBA权限。
passwd:登录CN要用到的秘钥存放路径。
DN_INFO:源表所在节点的主DN登录信息。
host:主DN所在主机IP。
port:主DN连接端口。
user:搬迁表所属用户名,需要有DBA权限。
passwd:登录主DN要用到的秘钥存放路径。
parallellevel:任务并行度。
gap_time:单位秒,检查DN节点的逻辑复制过程表LOGICREP_PROGRESS中COMMITTED_TX_TIME跟系统当前TIME作比对,根据此数值判定是否达到快追平条件。
logicrep_user:配置逻辑复制用户名。
bill_user:搬迁表所属用户名。
tasklist:搬迁任务列表。
tablename:待搬迁表的表名即源表名。
stagingtablename:过程表的表名。
sql:过程表建表语句。过程表和源表的表结构必须完全一致,字段个数和类型需要和源表完全一致,约束类型需要和源表一致,约束名需要与源表区分 。
backupname:如果要备份源表,则需要配置备份名,备份名不能与源表名字重复,并且各个表的备份名也不能重复。
依次登陆DN节点节点,将作为主机的DN节点上部署的逻辑复制工具路径添加到环境变量LOGICREP_HOME中。使用source命令使环境变量生效。
vi ~/.bashrcexport LOGICREP_HOME="/opt/software/tools/GaussDB_100_1.0.1-TOOLS/GaussDB_100_1.0.1-LOGICREP/logicrep"
python zebramain.py
程序执行完成代表数据重分布结束。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3129604/ ,如需转载,请注明出处,否则将追究法律责任。