安装SequoiaDB
- 先创建三台虚拟机,然后将ip配置为192.168.xx.11-13,然后配置hostname和hosts
1 | hostname sdb1 |
- 关闭掉三台机子的防火墙,把开机自启动防火墙设置成禁止
1 | systemctl stop firewalld.service |
- 安装SequoiaDB
1 | tar -zxvf sequoiadb-5.0.1-linux_x86_64.tar.gz |
- 在安装完之后,就可以通过图形化界面或者shell来创建集群了。
使用shell创建集群
- 创建临时的协调节点
1 | 使用集群管理对象来创建临时的协调节点 |
- 启动临时协调节点
1 | oma.startNode(18900) |
- 连接临时协调节点
1 | var db = new Sdb("localhost", 18900) |
- 创建编目节点组
1 | db.createCataRG("sdb1", 11800, "/opt/sequoiadb/database/catalog/11800") |
- 获取编目节点组的句柄,用于创建其他编目节点
1 | var rg = db.getRG(1) |
- 使用临时协调节点创建数据节点组group1,并创建数据节点
1 | var rg = db.createRG("group1") |
- 再使用临时协调节点创建数据节点组group2,并创建数据节点
1 | var rg = db.createRG("group2") |
这样就创建了一个两分区三副本的一个数据集群
创建协调节点组并启动,然后删除之前的临时协调节点
1 | 创建协调节点组并启动 |
- 这样,一个集群就创建好了
1 | SPARK_MASTER_PORT="7077" |
创建SparkSql实例
JDK配置
- 首先,为三台虚拟机sdb1、sdb2、sdb3解压JDK压缩包,并配置Java环境变量
1 | tar -zxvf ./jdk-8u202-linux-x64.tar.gz |
- 为三台虚拟机配置ssh,以便虚拟机之间互相连接时不用验证身份
1 | 生成ssh密钥,密钥将会在~/.ssh/id_rsa.pub生成 |
- 然后在其余两台虚拟机也执行以上两个操作,然后将sdb2和sdb3的密钥拷贝到sdb1的authorized_keys中,再将sdb1的authorized_keys复制到sdb2和sdb3中
1 | scp ~/.ssh/authorized_keys root@sdb2:~/.ssh/ |
Spark配置
- 在三台虚拟机中安装sparksql,并修改sparksql的环境配置
1 | tar -zxvf spark-2.4.7-bin-hadoop2.7.tgz |
- 再将spark-env.sh文件复制到sdb2和sdb3
1 | scp spark-env.sh sdb2:/root/spark-2.4.7-bin-hadoop2.7/conf/ |
- 修改spark的slaves,指定集群列表
1 | cp slaves.template slaves |
- 再将slaves文件复制到sdb2和sdb3
1 | scp ./slaves sdb2:/root/spark-2.4.7-bin-hadoop2.7/conf/ |
- 将sequoiadb的驱动jar包复制到spark的jars目录中
1 | 在spark的目录下执行以下语句 |
Spark运行
- 在三台虚拟机中启动sparksql
1 | sbin/start-all.sh |
- 启动Thrift Server服务,使spark可以兼容HiveServer2(接口和协议),这样我们就可以使用hive的beeline访问Spark Thrift Server执行相关语句
1 | sbin/start-thriftserver.sh --master spark://sdb1:7077 |
部署集合空间
- 使用巨杉数据库引擎的集合空间可以很容易地在不同的宿主之间操作同一个spark实例,具体步骤:
- 在sdb2中进入sequoiadb的shell环境
1 | su - sdbadmin |
- 进入shell环境后,执行下面语句
1 | //创建一个Sdb实例,用于连接SequoiaDB |
- 在sdb1的beeline中创建数据表,并指定该表的宿主、集合空间、集合
1 | /*using表示使用巨杉数据库引擎*/ |
- 然后在sdb2中往bar中插入数据
1 | db.foo.bar.insert({id:1, name:"sequoiadb"}) |
- 插入后可以在sdb1中看到这条数据
1 | select * from t1 |
- 同样,在sdb1中插入数据,在sdb2中也可以查看到,这个就不演示了
创建sequoiasql-mysql实例
- 首先,安装sequoiasql-mysql的服务器
1 | cd sequoiadb-5.0.1 |
- 进入sdbadmin角色,再cd到
/opt/sequoiasql/mysql/
目录里
1 | su - sdbadmin |
- 使用巨杉数据库提供的sdb_sql_ctl工具来部署mysql实例
1 | 这里默认端口是3306,可以使用-p来指定端口 |
- 启动完实例后,这个mysql实例已经在巨杉系统架构中进行管理了,进入mysql的shell环境
1 | mysql -uroot -h 127.0.0.1 |
- 这时,创建出来的database和table都可以在sequoiadb的sdb工具查询到
创建sequoiasql-postgresql实例
- 首先,安装sequoiasql-posgresql的服务器
1 | cd sequoiadb-5.0.1 |
- 进入sdbadmin角色,再cd到
/opt/sequoiasql/postgresql/
目录里,创建一个database目录
1 | su - sdbadmin |
- 使用巨杉数据库提供的sdb_sql_ctl工具来部署postgresql实例,这个和mysql一样
1 | 这里默认端口是5432,可以使用-p来指定端口 |
- 使用
bin/createdb [数据库名称]
来创建pgsql的数据库,然后使用bin/psql
进入pgsql的shell环境
1 | bin/createdb foo |
- 加载 SequoiaDB 连接驱动
1 | foo=# create extension sdb_fdw; |
- 在pgsql中创建巨杉服务器,设置一些配置信息
1 | address:表示该服务器对应的宿主,service:服务端口,transaction:是否开启事务,还有一些其他的配置项,可以到官网查看 |
- 创建外表
1 | 指定服务器,并设置集合空间和集合 |
- 现在,这个test表在sdb1中的psql中可以访问到,在sdb2中的sdb中也可以访问到
同步MySql
- 由于在sdb1使用mysql命令创建的数据表在sdb2中使用mysql命令访问不到,所以需要一个同步mysql命令的一个过程。即现在只做到sequoiadb层面的同步,但并没有做到在mysql层面上的同步,这里就需要使用一个meta_sync的工具
- 首先切换到sdbadmin用户,在三台虚拟机登录mysql的shell,然后执行以下语句:
1 | CREATE USER 'sdbadmin'@'%' IDENTIFIED BY 'sdbadmin'; |
- 创建存放同步日志auditlog目录,并修改实例的配置文件
auto.cnf
1 | mkdir database/3306/auditlog |
- 切换至root用户,把server_audit.so复制到plugin目录下,修改权限使得sdbadmin用户可以运行它
1 | cp /opt/sequoiasql/mysql/tools/lib/release/server_audit.so /opt/sequoiasql/mysql/lib/plugin/ |
- 切换至sdbadmin用户,重启 MySQL 实例
1 | sdb_sql_ctl restart myinst |
- 在tools/metaSync目录中,有两个文件,一个是
config.sample
,另一个是log.config.sample
,将它们拷贝到当前目录,并改名为config
和log.config
,注意这两个文件的配置需要根据情况进行修改 - 在三台虚拟机中启动工具
1 | python /opt/sequoiasql/mysql/tools/metaSync/meta_sync.py & |
- 完成环境配置后,可通过在各实例进行少量 DDL 操作,进行简单的同步验证
卸载
卸载mysql服务
- 进入sdbadmin用户,停止mysql实例
1 | su - sdbadmin |
- 停止实例后,查看有没有关于mysql的进程,有的话就杀死进程
1 | ps -ef |grep mysql |
- 杀死同步工具meta_sync的进程
1 | ps -ef |grep python |
- 进入root用户,执行卸载程序
1 | su - root |
- 如果不想保存原数据的话,可以把mysql文件给删除
1 | cd /opt/sequoiasql/ |
卸载postgresql服务
- 进入sdbadmin用户,停止posgresql实例
1 | su - sdbadmin |
- 停止实例后,进入root用户,执行卸载程序
1 | su - root |
- 如果不想保存原数据的话,可以把postgresql文件给删除
1 | cd /opt/sequoiasql/ |
- 这样就把pgsql完全卸载了。
卸载sequoiadb服务
- 进入sdbadmin用户,停止sequoiadb所有的节点
1 | sdbstop -t all |
- 查看关于sdb的进程,如果有sdbcm进程,就将其杀死
1 | ps -ef |grep sdb |
- 查看sdbadmin是否有运行与sdb相关的进程,有的话就将其杀死
1 | ps -ef |grep sdbadmin |
- 切换到root用户,执行卸载程序
1 | cd /opt/sequoiadb/ |
- 最后将sequoiadb目录和sequoiasql目录删除
1 | rm -rf /opt/sequoiadb |
- 这样就卸载完毕。