cockroachDB生产环境部署指南

#cockroachDB生产环境部署指南
--------------------------------------------------------------------------------------------------------------------
#官网下载文件
wget https://binaries.cockroachdb.com/cockroach-v1.1.4.linux-amd64.tgz


#解压
tar -xzf cockroach-v1.1.4.linux-amd64.tgz


#复制到指定目录
cp -i cockroach-v1.1.4.linux-amd64/cockroach /usr/local/bin


---------------------------------------------------------------------------------------------------------------------
#配置CA认证,官网推荐,生产环境必须设置证书


#从主节点创建证书
#初始化证书,进入主节点root用户根目录,输入命令
mkdir certs
mkdir my-safe-directory
cockroach cert create-ca --certs-dir=certs --ca-key=my-safe-directory/ca.key


#创建节点证书,<mainnode address>主节点占位符,必须替换为内网IP,如192.168.1.15,<node2 address>,<node3 address>以此类推
#要部署多少台服务器,就要创建多少个证书,且必须在同一台机使用同一个根证书创建,certs01,certs02是目录certs及所包含文件ca.crt的复制,请先行创建
cockroach cert create-node <mainnode address> --certs-dir=certs --ca-key=my-safe-directory/ca.key
cockroach cert create-node <node2 address> --certs-dir=certs01 --ca-key=my-safe-directory/ca.key
cockroach cert create-node <node3 address> --certs-dir=certs02 --ca-key=my-safe-directory/ca.key
......


#证书复制到其他节点,root登录每个节点进入根目录,自己用mkdir创建目录certs,然后回到主节点,root登录,进入根目录,执行以下命令:
# Upload the CA certificate and node certificate and key:
scp certs/ca.crt certs/node.crt certs/node.key <username>@<node2 address>:~/certs
#举例,所有节点服务器命令以此类推
scp certs02/ca.crt certs02/node.crt certs02/node.key [email protected]:~/certs


#创建用户SQL客户端证书,有证书的用户可以在服务器启动本地SQL命令行工具,例如root
cockroach cert create-client root --certs-dir=certs --ca-key=my-safe-directory/ca.key
-----------------------------------------------------------------------------------------------------------------------
#服务器时间同步(重要)
#参考同步文章CSDN,URL:http://blog.csdn.net/xw_classmate/article/details/50611489
#文章中授时服务器地址已经全部不能访问,这里给出最新授时服务器地址,替换文章中的地址即可
cn.ntp.org.cn #国内标准NTP 服务器
#来自阿里云的 NTP 服务器:
ntp1.aliyun.com
ntp2.aliyun.com
ntp3.aliyun.com
ntp4.aliyun.com
ntp5.aliyun.com
ntp6.aliyun.com
ntp7.aliyun.com
-----------------------------------------------------------------------------------------------------------------------
#服务器启动
#启动之前:
#1、服务器之间时间必须同步,否则无法启动服务,详情请见前章《服务器时间同步》。不能连外网则创建内网时间同步服务器。
#2、ping命令检查服务器之间网络是否通畅
#3、检查默认启动web端口:8080,数据库端口:26257是否被占用,如果被占用则更换端口,或者排除占用的服务。对应参数--http-port=8081 --port=26258
#第一次启动主服务器,启动之后可访问web服务监控地址:https://<mainnode address>:8080/,如出现证书错误,点击继续访问
cockroach start --certs-dir=certs --host=<mainnode address> --cache=25% --max-sql-memory=25% --background
#第一次启动其他服务器,以下命令分别用终端进入自己服务器启动
cockroach start --certs-dir=certs --host=<node2 address> --join=<mainnode address>:26257 --cache=25% --max-sql-memory=25% --background
cockroach start --certs-dir=certs --host=<node3 address> --join=<mainnode address>:26257 --cache=25% --max-sql-memory=25% --background
......
#重新启动服务器,首先启动主服务节点报warning:awaiting other nodes,不管,继续启动其他节点,会自动根据配置找到主服节点,然后主节点启动结束。
cockroach start --certs-dir=certs --host=<node2 address> --join=<mainnode address>:26257 --cache=25% --max-sql-memory=25% --background
#停止服务器
pkill cockroach
#查看服务是否已停止
ps aux | grep cockroach
-----------------------------------------------------------------------------------------------------------------------
#用户初始化数据库脚本,只有root用户有权限创建数据库和用户,且root用户不能设置密码,不能远程登陆,只能通过终端进入SQL命令行执行


#进入主节点,切换到root用户,并在终端执行命令,进入SQL界面(注意:数据库节点没有主从之分,为方便部署和理解,命名为主节点)
cockroach sql --certs-dir=certs --host=<mainnode address>
#创建数据库
#创建配置库
CREATE DATABASE IF NOT EXISTS szt_pz;
#创建存储库
CREATE DATABASE IF NOT EXISTS szt_data;
#创建标签库
CREATE DATABASE IF NOT EXISTS szt_labels;
#创建用户
CREATE USER javauser WITH PASSWORD '123456';
#用户授权
GRANT ALL ON DATABASE szt_pz,szt_data,szt_labels TO javauser;
#显示权限列表
SHOW GRANTS ON DATABASE szt_pz,szt_data,szt_labels;
#退出重新用javauser登录
\q
cockroach sql --certs-dir=certs --host=<mainnode address> --user=javauser --database=<yourdatabase>
#执行初始化SQL脚本
#配置库表创建,进入<yourdatabase>=szt_pz
#------创建用户表----------
CREATE TABLE IF NOT EXISTS t_user_info(
user_id STRING PRIMARY KEY,
user_login_name STRING UNIQUE NOT NULL,
user_chinese_name STRING NOT NULL,
user_pwd STRING NOT NULL,
user_identity STRING UNIQUE NOT NULL,
user_employee_id STRING NOT NULL,
user_employee_name STRING NOT NULL,
user_cellphone_number STRING NOT NULL,
user_kind STRING  NOT NULL,
user_status STRING NOT NULL,
user_describe STRING

);

#-------执行用户增删查改sql(略)

SQL语句就不在这里赘述了,懂SQL的朋友自己在终端里测试一下。

猜你喜欢

转载自blog.csdn.net/super7788/article/details/80722982