![SequoiaDB分布式数据库权威指南](https://wfqqreader-1252317822.image.myqcloud.com/cover/100/43738100/b_43738100.jpg)
3.1.5 Docker模式部署
Docker是一个开源的应用容器引擎,允许开发者将应用及依赖包打包到一个可移植的容器中,然后发布到任意一种流行的Linux机器上。不同容器之间不会有任何接口,完全采用沙箱机制。Docker也支持虚拟化,能利用LXC(Linux Container)来实现类似虚拟机(VM)的功能,以通过节省硬件资源为用户提供更多计算资源。
SequoiaDB提供了Docker镜像,可用来快速部署集群,以及进行开发和测试工作。下面讲解如何在Linux系统中安装Docker,并通过拉取镜像进行SequoiaDB的部署,同时也将展示如何在部署后的环境中进行MySQL实例的增查改删操作。
1.集群配置
如表3-7所示,我们将演示在5个容器中部署多节点、高可用的SequoiaDB集群。集群包含协调节点与编目节点各1个,3个三副本数据节点,以及1个MySQL实例节点。
表3-7 SequoiaDB的集群配置
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_64_1.jpg?sign=1739265245-8HBAx83LuTwDUToas1skUqMFtzNYnSmN-0-2c7c0368b3cec0382fff24ee0f436ebd)
2.在Linux Docker环境中部署SequoiaDB
SequoiaDB在Linux Docker环境中的部署,可参考如下步骤。
(1)下载镜像并上传至docker服务器:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_64_2.jpg?sign=1739265245-IXdRJxXXWysY34Z8yZtGrjtTYrWS3UBV-0-193a82e7414353f56dbcda7983b79118)
(2)对sequoiadb_docker_image.gz进行解压:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_65_1.jpg?sign=1739265245-8hpBg9cFXJEEwR1WL07U62H57NK8G125-0-b84d2443d167190c66caecb052ed566c)
(3)恢复镜像sequoiadb.tar与sequoiasql-mysql.tar:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_65_2.jpg?sign=1739265245-nAnr3OEys8rrS9CZ0ojem7fK84VMqOSx-0-600dac2e25c0ebf2894133bcd6f51112)
(4)启动4个SequoiaDB容器:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_65_3.jpg?sign=1739265245-x1w968XoMUA4rTF6okPC6i5yDMt0pN3E-0-ed1faad1b4fb912830a6924dba470f6f)
(5)查看4个容器的容器ID:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_65_4.jpg?sign=1739265245-kNFLSsRLKZdjkX410Mhh00dGWCqemlYz-0-1da06435b8e908ba34e43eab59bf4c39)
(6)查看4个容器对应的IP地址:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_65_5.jpg?sign=1739265245-tQtaYiukkCcUGsdR0BJp3IlnX7hBbYie-0-ad9a32e6e4ea7f73899bb236150d330d)
(7)部署SequoiaDB集群。根据集群规划及各容器的IP地址,在对应参数处填入地址与端口号。建议存储空间在30GB以上:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_65_6.jpg?sign=1739265245-jPc4g77U0U5jRbRRE4m6gOTdCbiWNzaF-0-ac50089a2a692b6d0dba43a5af62b55f)
(8)启动一个MySQL实例容器,并查看容器的ID:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_65_7.jpg?sign=1739265245-rXZH1IGU5owajHkAcpLpuCPfOj7BDuNA-0-0af2457ee89388c8a1f0a84d58d4646d)
(9)查看容器的IP地址:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_65_8.jpg?sign=1739265245-2mSSrRbrmRWPRrIHLdc8gZdx5PplXwhC-0-1f9b02858a912127640bb66fdf72f7fd)
(10)将MySQL实例注册到协调节点:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_66_1.jpg?sign=1739265245-BY7EPaamFpEVfzUSCmTNQwfeBY0svpgB-0-840897deb734dd4ed5c78b37845934e1)
(11)进入MySQL容器:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_66_2.jpg?sign=1739265245-58csjMkePVwqJryJ17ST79V2bA2mihfx-0-96bd8fefdf54448edd53bd4e3931a675)
(12)查看MySQL实例的状态:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_66_3.jpg?sign=1739265245-dIi7MYiGyAylkXPigSxh5VX5suGEmDZB-0-2bb0f5610c6582b74518b4efd85be479)
(13)进入coord_catalog容器,查看SequoiaDB存储引擎节点列。
首先查看SequoiaDB容器的名称:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_66_4.jpg?sign=1739265245-E3uD3BMjEZKUoaJwEKQvwylWH0UDI72F-0-e900963cccfcb195a2b2ae78cc5625d1)
然后进入coord_catalog容器,查看编目节点和协调节点:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_66_5.jpg?sign=1739265245-W5SfBmGVEC04PvdG253lxwNxbq14d4gJ-0-290673f76fdca4ffd39d18e72a80b3d3)
再切换为sdbamdin用户,默认用户密码为sdbadmin:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_66_6.jpg?sign=1739265245-ln5srMUPRBK1KMe7ppxTGTkl6faRMHoC-0-ceafa402f7f2cd52da349c56a0504b4f)
接着查看编目节点和协调节点列表:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_66_7.jpg?sign=1739265245-J8NiW6SDHGKvuIQBHHhgiUk8Dydorm1k-0-3e94c59caa3a7b809a19929fd6d3463c)
最后退出容器:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_66_8.jpg?sign=1739265245-ri6OujWOIowD3QINXtKWl5ZY6O06VDW4-0-b7e21b8517942d7360e134313d82ea19)
3.数据库对接开发
具体操作步骤如下。
(1)进入MySQL容器:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_66_9.jpg?sign=1739265245-YMi2AF9U9KJPnFpn1d4j9So79VAYkPhK-0-0f304d20c30041e9da6b9d540d38a950)
如果未启动MySQL,则需要先启动:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_66_10.jpg?sign=1739265245-4tqqehcrlu5L7l5PK3IVuGYK6IrnmiLk-0-9c5b9800499f9647e5b9a1850245d5b2)
(2)登录到MySQL Shell:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_67_1.jpg?sign=1739265245-MREUIRmU1NZR9DgRhxK5j2MeYhHXfACj-0-1f29d63730eae2a2a6f8d6a98ca7580f)
(3)创建新数据库company,并切换到company:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_67_2.jpg?sign=1739265245-bdYTAEk6kxuR44bu8nV1N9dpNW8itlXL-0-dc1cdb0c89bb2b23610c92ce3e4a8921)
(4)在company数据库中创建数据表employee:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_67_3.jpg?sign=1739265245-gJBY2BSiydlc3AQLc9VT5PzAJ70orj6z-0-06da0c5038eed4f3493c9444fab13a65)
(5)在表employee中插入如下数据:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_67_4.jpg?sign=1739265245-oSExGXCjMWb9JbIBnUJGfFQqcoB8a4sf-0-e31a740b66553f9db9063bcd330e235e)
(6)查询employee表中的数据:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_67_5.jpg?sign=1739265245-2SvdV8sNnuc6TN26xyNVjX0lm6WK2Vtj-0-47300516217799d0ad950382fa595ba9)
(7)退出MySQL容器:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_67_6.jpg?sign=1739265245-oYTFtmWE0vs8NgHm377AhuRitOX8QC32-0-1768c7183cf92b249c721ca6a09e3c61)
(8)进入coord_catalog容器并进入SequoiaDB Shell交互式界面,使用JavaScript连接协调节点并获取数据库连接:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_67_7.jpg?sign=1739265245-cgQpO5jru9rjaUUs2HVJkgL2Q1wT8WmK-0-8e9db24aaa74e035372636d616c66346)
(9)使用insert()向SequoiaDB集合中写入数据记录:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_67_8.jpg?sign=1739265245-NidwUbq1Z2hlOgjWM7uMnOnEHJMiMhHv-0-a6f07090c1084480dde740326a96b7f5)
(10)使用find()从集合中查询数据记录:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_67_9.jpg?sign=1739265245-tHvowcEu8pMygguJ1gJ31j5udDCk1How-0-825e75e1dfd476475a350bd520dbb883)
(11)使用update()对集合中的数据记录进行修改:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_68_1.jpg?sign=1739265245-IRuGiFr6YKQdkEvttoFEIazzTm6uuRzq-0-3982957278124742e093740639989e74)
(12)使用find()从集合中查询数据记录,确认数据记录是否已被修改:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_68_2.jpg?sign=1739265245-3sUuxjdTcb6pQI2DssLqJdmhGVZd8E00-0-974b95bf6dbd631a950905416ae96a45)
(13)使用remove()从集合中删除数据记录:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_68_3.jpg?sign=1739265245-EqVuTlXfJMzeGl47KhcOMDBpF392YWaA-0-93a6f77a7bbbd5f3f77f6745e11a829b)
(14)使用find()从集合中查询数据记录,确认数据记录是否已被删除:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_68_4.jpg?sign=1739265245-babsyaI0Mz451Yxjv2YvpHEcDr9CVjPB-0-013cc88bfb2d934d2731d4729e0ebb81)
从本节3项任务的实现步骤可以看出,使用基于Docker的SequoiaDB镜像,可快速创建一个数据库集群,并执行SequoiaDB操作。