阿里oceanbase数据库安装步骤-linux
阿里oceanbase数据库有兼容mysql、oracle模式选择,有社区版和企业版,可以配置单机运行,也可以配置为cluster群集灵活增减电脑。
看着还是不错的啊。
安装:
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000639587
配置群集:https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000640298
我用的单机部署,比较简单:下载,解压缩 ,几个命令就完成了:
下载地址: https://www.oceanbase.com/softwarecenter ,然后参考资料:
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000639587
步骤一:下载并安装 all-in-one 安装包
-
下载 all-in-one 安装包,并将其上传到机器任一目录下。
-
企业版:请联系技术支持获取 all-in-one 安装包。
-
社区版:请从 OceanBase 软件下载中心 下载 all-in-one 安装包,建议下载最新版本。
-
-
-
在安装包所在目录下执行如下命令解压安装包并安装。
- 运行命令:
tar -xzf oceanbase-all-in-one-*.tar.gz cd oceanbase-all-in-one/bin/ ./install.sh source ~/.oceanbase-all-in-one/bin/env.sh
如果要单独安装rpm包,可以下载后单独安装,在oceanbase-all-in-one压缩包解压缩开文件夹里也有。
如果用了ubuntu之类不支持rpm的,可以安装alien:
apt-get install alien
如果安装alien提示版本交叉引用低版本错误,可以运行这个,会给出几个选择,降级版本之类,最终能安装上alien和rpm:
aptitude install alien
4.启动:
obd demo
然后设置用户可以访问权限,要不别的电脑连不进来:
grant all privileges on *.* to root@'%';
5.设置自动启动:
如果想手工启动,可以运行这个:obd cluster start demo或者obd cluster stop demo,查看信息:obd cluster display demo。查看帮助:obd cluster --help
root@haihong-PC:/etc/init.d# obd cluster start demo Get local repositories ok Search plugins ok Load cluster param plugin ok Open ssh connection ok Check before start observer ok [WARN] OBD-1011: (127.0.0.1) The recommended value of fs.aio-max-nr is 1048576 (Current value: 65536) [WARN] (127.0.0.1) failed to get open files [WARN] (127.0.0.1) failed to get max user processes [WARN] (127.0.0.1) failed to get core file size [WARN] (127.0.0.1) failed to get stack size [WARN] OBD-1017: (127.0.0.1) The value of the "vm.max_map_count" must be within [327600, 1310720] (Current value: 65530, Recommended value: 655360) Check before start obagent ok Check before start obproxy ok Check before start prometheus ok Check before start grafana ok Start observer ok observer program health check ok obshell program health check ok Connect to observer 127.0.0.1:2881 ok Start obagent ok obagent program health check ok Connect to Obagent ok Start obproxy ok obproxy program health check ok Connect to obproxy ok Initialize obproxy-ce ok Start promethues ok prometheus program health check ok Connect to Prometheus ok Initialize prometheus ok Start grafana ok grafana program health check ok Connect to grafana ok Initialize grafana ok Wait for observer init ok +---------------------------------------------+ | observer | +-----------+---------+------+-------+--------+ | ip | version | port | zone | status | +-----------+---------+------+-------+--------+ | 127.0.0.1 | 4.3.0.1 | 2881 | zone1 | ACTIVE | +-----------+---------+------+-------+--------+ obclient -h127.0.0.1 -P2881 -uroot -Doceanbase -A 注意这一行,obclient是连接oceanbase的命令行工具 +------------------------------------------------------------------+ | obagent | +---------------+--------------------+--------------------+--------+ | ip | mgragent_http_port | monagent_http_port | status | +---------------+--------------------+--------------------+--------+ | 192.168.88.69 | 8089 | 8088 | active | +---------------+--------------------+--------------------+--------+ +---------------------------------------------+ | obproxy | +-----------+------+-----------------+--------+ | ip | port | prometheus_port | status | +-----------+------+-----------------+--------+ | 127.0.0.1 | 2883 | 2884 | active | +-----------+------+-----------------+--------+ obclient -h127.0.0.1 -P2883 -uroot -Doceanbase -A +------------------------------------------------------+ | prometheus | +---------------------------+------+----------+--------+ | url | user | password | status | +---------------------------+------+----------+--------+ | http://192.168.88.69:9090 | | | active | +---------------------------+------+----------+--------+ +---------------------------------------------------------------------+ | grafana |这个服务可以用,默认密码在下面写着。是oceanbase的运行流量监控。 +---------------------------------------+-------+------------+--------+ | url | user | password | status | +---------------------------------------+-------+------------+--------+ | http://192.168.88.69:3000/d/oceanbase | admin | ybBlPYLo7c | active |注意这里的用户名和密码 +---------------------------------------+-------+------------+--------+ demo running Trace ID: 35a77ea8-ffc5-11ee-b55e-74d4359c7e4c If you want to view detailed obd logs, please run: obd display-trace 35a77ea8-ffc5-11ee-b55e-74d4359c7e4c root@haihong-PC:/etc/init.d#
这就算是安装完了。
如果想配置群集,可以打开web配置:
root@haihong-PC:/etc/init.d# obd web start OBD WEB in 0.0.0.0:8680 please open http://192.168.88.69:8680
打开这个网址出来配置cluster的页面。
下一步,配置oceanbase数据库自动启动:
1、放在用户登录后的启动里~/.profile ,这种方式命令行登录后可以正常启动oceanbase,但是图形界面不行。
vi ~/.profile
或者vi /home/haihong/.profile,在文件末尾加上一行:
obd cluster start demo
这样在命令行终端登录时会启动的很正常。但是图形界面加载不了。
2、深度linux图形界面启动后即可加载的用法:
2.1、创建一个sh文件:
vi /home/haihong/Downloads/obdrun.sh
文件内容:
#!/bin/bash /home/haihong/.oceanbase-all-in-one/obd/usr/bin/obd cluster start demo
然后+x运行权限:
chmod +x /home/haihong/Downloads/obdrun.sh
2.2、加到crontab -e里:
crontab相当于windows的定时任务,支持重启时加载。注意,每个用户都可以运行这个命令,相当于各自启动的东西不一样。运行:
crontab -e
在文件最后加上一行,在reboot时调用上面的文件:
@reboot /home/haihong/Downloads/obdrun.sh
曾经考虑把这行命令放到linux的自动启动里,没搞定。捎带提一下linux启动的3种常用模式,
参考:https://www.cnblogs.com/comprehensive/p/12096448.html
3、新建 /usr/share/applications/oceanbase.desktop 快捷方式,然后设置成自动启动:
pluma /usr/share/applications/oceanbase.desktop
文件内容从QQ.desktop文件复制过来改的,主要是下面红色这行:
[Desktop Entry] Encoding=UTF-8 Name=oceanbase Comment=start-ocean-base Exec=/home/haihong/.oceanbase-all-in-one/obd/usr/bin/obd cluster start demo Terminal=false Type=Application Categories=Application;Network;Tencent Software; StartupNotify=true Name[zh_CN]=oceanbase GenericName[zh_CN]= Comment[zh_CN]=start-ocean-base
打开设置-》应用-》开机启动,添加上这个oceanbase.desktop文件。
完成。
4、放到rc.local文件里。
#!/bin/bash #启动网站:
#/home/dotnet-sdk/dotnet /home/haihong/Downloads/学习EF/学习EF.dll
#启动数据库 obd cluster start demo exit 0
发现效果不好,ctrl+f5切换别的终端时出错,速度特别慢。
5、放到/etc/profile.d/文件夹里
6、放到/etc/init.d/文件夹里。
vim ocean.sh创建文件,然后别忘了chmod +x ocean.sh或者chmod 777 ocean.sh
#!/bin/bash ### BEGIN INIT INFO # Provides: ocean # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 1 # Description: oceanbase ### END INIT INFO case "$1" in start) echo hello, ocean base is startting obd cluster start demo ;; stop) echo ocean base is stopping... obd cluster stop demo pkill -f "sleep 5000" ;; esac
执行chkconfig --add ocean.sh时总是报错:
root@haihong-PC:/etc/init.d# chkconfig --add ocean.sh insserv: FATAL: service mountkernfs has to exists for service udev insserv: FATAL: service checkroot has to exists for service cryptdisks insserv: FATAL: service urandom has to exists for service networking insserv: FATAL: service mountdevsubfs has to exists for service lvm2 insserv: exiting now! /sbin/insserv failed, exit code 1 ocean.sh 0:off 1:off 2:off 3:off 4:off 5:off 6:off
哪位高手有办法解决,请留言指教。
上述3个办法都不理想,于是尝试了阿里官方文档提供的办法,配置为服务:
7、自己做一个服务:参考:https://ask.oceanbase.com/t/topic/35605342/2
vi /etc/systemd/system/oceanbase.service
文件内容如下:
[Unit] Description=oceanbase After=network.target [Service] Type=forking User=root ExecStart=/home/haihong/.oceanbase-all-in-one/obd/usr/bin/obd cluster start demo ExecStop=/home/haihong/.oceanbase-all-in-one/obd/usr/bin/obd cluster stop demo ExecReload=/home/haihong/.oceanbase-all-in-one/obd/usr/bin/obd cluster restart demo LimitNOFILE=165535 LimitNPROC=165535 [Install] WantedBy=multi-user.target
上面的WantedBy可以用 WantedBy=graphical.target,after也可以用After=graphical.target。
然后设置服务自动启动:
systemctl enable oceanbase
这种方式可以调出来obd运行,但是运行中报错import connect faile。然后有个什么exit-code错误。
8、再就是可以安装配置为服务(阿里官方提供,此方法效果也很不稳定):
https://open.oceanbase.com/quicksearch?q=%E5%BC%80%E6%9C%BA%E8%87%AA%E5%8A%A8%E5%90%AF%E5%8A%A8
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000684621
有时间研究一下怎么自己做linux服务。
主要是下载运行了命令:
sudo bash -c "$(curl -s https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/obshell/service_installer.sh)"
执行时会提示输入路径,在文件中搜[bin/obshell],搜到后输入:/data/root/oceanbase-ce ,他会拼接后缀上/bin/obshell,也就是运行obshell命令的路径。
完成后提示服务oceanbase配置完毕,设置成自动启动就行了。
如果不能上网,就把他那个文件下载下来,存成sh文件执行。
启动服务和配置为自动启动:
root@haihong-PC:/etc# systemctl start observer root@haihong-PC:/etc# systemctl enable observer
启动起来后,用navicat查看效果:
新建了两个表测试一下。
用netcore新建了个项目连一下:
appsettings.json里设置连接:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", //"urls": "http://*:88", "ConnectionStrings": { "default": "Provider=SQLOLEDB.1;Data Source=.;Initial Catalog=fengjun;User ID=sa;Password=666666;persist security info=True;trustservercertificate=True;MultipleActiveResultSets=True;App=EntityFramework;", "oceanbase": "Server=192.168.88.69;Port=2881;Database=test;Uid=root;Pwd=;", "fengjun": "Provider=SQLOLEDB.1;Data Source=.;Initial Catalog=erp6;User ID=sa;Password=666666;persist security info=True;trustservercertificate=True;MultipleActiveResultSets=True;App=EntityFramework;", "oracle": "Provider=OraOLEDB.Oracle.1;User ID=用户名;Password=密码;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.88.3)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = MyShuJuKuFuWu)))", "mysql": "Server=localhost;Port=3306;Database=manageplat;Uid=root;Pwd=666666;" } }
新建EntityFramework实体类:
public class Company { [Key] public string sID { get; set; } = ""; public string sName { get; set; } = ""; }
在index.html.cs页面中加入代码尝试增加、查询:
public void OnGet() { using (OceanBaseContext dbEntity =new OceanBaseContext()) { //新增一行数据 var row=new Company(); row.sID = DateTime.Now.ToString("yyyyMMdd_HHmmss"); row.sName = "客户" + dbEntity.company.Count(); dbEntity.company.Add(row); dbEntity.SaveChanges(); // companies = dbEntity.company.ToList(); } }
然后html中:
<table style="border:dotted"> <tr> <td>编号</td> <td>名称</td> </tr> @foreach (var itm in Model.companies) { <tr> <td>@itm.sID</td> <td>@itm.sName</td> </tr> } </table>
跑起来看看效果:
奇怪的权限问题,先备注着:图形界面haihong用户登录后发现没启动起来,但是命令行启动起来了:
1、方法1:别切换到root,就用haihong执行创建服务的命令:
sudo bash -c "$(curl -s https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/obshell/service_installer.sh)"
2、方法2:用root后,授权/root/.oceanbase-all-in-one给haihong:
chmod 777 .oceanbase-all-in-one/ -R
如有必要,授权/data/root/oceanbase-ce:
chmod 777 /data/root/oceanbase-ce -R
深度linux常用的配置命令:
新安装完 之后,启用root和密码:
右键桌面->终端:sudo passwd 然后输入新的root的密码。
切换为root:su
删除:rm,循环递归删除:rm -r
授权执行:chmod +x 文件夹或者文件
全部授权:chmod 777 文件或者文件
查看当前运行的进程:ps -ef 可以加过滤,比如查看包含ob的当前运行的进程: ps -ef | grep ob
服务启动:service ssh start 或者 service ssh stop ,看状态错误日志:service ssh status
设置服务自动启动或者取消自动启动:
#自动启动
systemctl enable observer
#取消自动启动
systemctl disable observer
#会显示下面结果:
Removed /etc/systemd/system/multi-user.target.wants/observer.service.
查看文件隐含带属性的:ls -a 查看带权限的:ls -l ,可以混写:ls -la
ssh连不过来的修改:参考网址:https://blog.csdn.net/qq_42768347/article/details/108851552
修改文件:/etc/ssh/sshd_config ,修改其中PermitRootLogin后的prohibit-password改为yes,如:PermitRootLogin yes
安装几个好用的文本编辑器:
apt-get install nano 这个支付复制粘贴,不像vi连基本的复制粘贴都麻烦的不行。
apt-get install geany 这个界面很漂亮,比如:geany /etc/ssh/sshd_config 如下图:
genome官方编辑器:gedit: apt-install gedit,界面很好:
前面的几个截图:
运行监控:http://192.168.88.69:3000/d/oceanbase/