FISCO BCOS-多服务器部署区块链(3)-分布式存储
文档所有步骤皆按照FISCO BCOS 技术文档执行:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/distributed_storage.html
此教程适用于ubuntu系统。
1:安装MySql
1.1:sudo apt install -y mysql-server mysql-client libmysqlclient-dev
安装好之后,会提示你输入密码,输入密码(你需要输入自己定义的数据库登录密码,在以后登录的时候用),系统再次提示输入密码,再次输入你设定的密码即可。
1.2:启动MySql服务并登录
service mysql start
无返回就是启动成功,如果有出现问题,请见文末我自己踩过的雷和排雷方法。
mysql -uroot -p
输入密码即可登录
1.3:配置MySql参数
在[mysqld]段中新增以下内容:
max_allowed_packet=1024
sql_mode=STRICT_TRANS_TABLES
使用命令:vi /etc/mysql/mysql.conf.d/mysqld.cnf
(如果问为什么跟官网技术文档不一样,可以参考文末对该问题的说明,这里只是让大家更清楚,更快。)
1.4:重启mysql-server,验证参数
service mysql restart
1.4.1:验证参数过程
mysql -uroot -p
输入密码之后,执行命令如红色箭头所示,查询具体参数值。
1:show variables like'max_allowed_packet%';
2:show variables like'sql_mode%';
2:节点连接MySql
这一步是配置节点文件,使其连接MySql。下图是我这边区块链节点设计情况,每个节点对应MySql实例。
因此需要根据下面的信息配置MySql,可以看到我的节点都是在一个群组里面,即均修改每一个节点的group.1.ini即可。(如果你是多群组,可以参考官方技术文档,修改对应群组配置文件,官方文档链接见文首)
|节点|db_ip|db_port|db_username|db_passwd|db_name|
|Group1_A|127.0.0.1|3306|root|mysql密码|db_Group1_A|
|Group1_B|127.0.0.1|3306|root|mysql密码|db_Group1_B|
|Group1_C|127.0.0.1|3306|root|mysql密码|db_Group1_C|
2.1:根据上述信息逐一修改节点的配置文件group.1.ini
vi ~/generator-A/nodeA/node_127.0.0.1_30300/conf/group.1.ini
2.1.1:首先看到storage,将type= rocksdb修改成type= mysql。因为腾讯区块链默认存储是rocksdb。
2.1.2:文件继续向下滑,看到;only for mysql,对应修改一下信息:
db_ip=127.0.0.1
db_port=3306
db_username=root
db_name=db_Group1_A(你的群组数据库实例名称,这里代表数据库群组1的A节点的数据库实例)
db_passwd=(你的数据库密码)
2.2:重启节点使其生效
cd~/generator-A
bash ./nodeA/stop_all.sh
bash ./nodeA/start_all.sh
3:测试数据库
3.1:启动控制台
cd~/generator-A/console&&bash ./start.sh1
3.2:部署合约
deploy TableTest
别忘了记录下来合约地址,等会操作合约要用哈。
3.3:查看数据库中的表情况
3.3.1:登录数据库
mysql -uroot -p后接密码 -A db_Group1_A
3.3.2:查看数据库的表情况
use db_Group1_A;
show tables;
3.4:在控制台调用create接口
3.4.1:启动控制台
cd~/generator-A/console&&bash ./start.sh1
3.4.2:调用create接口,创建一个表。
call TableTest 0x3d14b73c58c5f35d2861aed0d5f5633c31278bcd create
斜体部分是自己此教程3.2部署合约返回的合约hash地址
3.5:往表中插入一条数据
call TableTest 0x3d14b73c58c5f35d2861aed0d5f5633c31278bcd insert "fruit" 100 "apple"
其中的交易hash可以记录一下,方便之后查询:0x163b20736b5e07292434e21826788b66042a1199c96aec31b7ab597162dded96
3.6:打开MySQL客户端,查询u_t_test表数据
3.6.1:进入MySql
mysql -uroot -p后接mysql密码 -A db_Group1_A
3.6.2: select * from u_t_test\G;
到此,就结束了节点与MySql的连接教程,总计3步,安装mysql,配置节点群组ini文件,测试mysql,希望对你们有用呀~~
哈喽,这里是文末,也是我对这个过程的错误与解决方案集锦
误区一:
在安装好mysql之后,启动mysql后,输入mysql -u root -p 进行登录,然后要求输入密码,可是不管怎么输入,都提示密码错误,那怎么解决呢?
解决方法:
1)sudo cat /etc/mysql/debian.cnf
2)mysql -u debian-sys-maint -p
此时要求输入密码,就要输入上图中的password。
3)update mysql.user set authentication_string=password('root') where user='root' and Host ='localhost';
4)sudo service mysql restart
5)mysql -u root -p
此时再次输入密码:root
更改的mysql的密码为root(记住哦,每次启动mysql都是这个密码哦)
解决方案参考链接:https://删blog.csdn.net/theoneg掉is/article/details/5我1810063
误区二:配置mysql参数,找不到配置文件
官方文档给出链接查看配置文件my.cnf:
mysql --help|grep'Default options'-A1
当时我比较懵,也就是给出了这三个文件,我挨个查看三个文件,试图找到[mysqld]。但是在/etc/mysql/my.cnf中没有找到mysqld这个字眼。只有两行文字。
这两行文字是什么呢?表示导入这两个目录里面的配置文件。它告诉我们,MySQL的相关配置都位于mysqld.cnf(/etc/mysql/mysql.conf.d/mysqld.cnf)下面,故咱们修改配置文件的时候就可以直接用一个命令执行并修改了。
vi /etc/mysql/mysql.conf.d/mysqld.cnf
解决方法及解释参考链接:https://ww删w.cnblogs.com/kerryc掉ode/p/9749我096.html
小贴士:
这个过程中,难免有操作错误的时候或者已有mysql的情况,那么卸载mysql的连接也给您呈上了,希望对您有用~:https删://www.cnblogs掉.com/pighu我i/p/10422927.html