使用build_chain.sh离线搭建匹配的区块链,并通过命令配置各群组节点的MySQL数据库

【任务】 登陆Linux服务器,以MySQL分布式存储方式安装并部署如图所示的三群组、四机构、 七节点的星形组网拓扑区块链系统。其中,三群组名称分别为group1、group2和group3, 四个机构名称为agencyA、agencyB、agencyC、agencyD。p2p_port、channel_port、 jsonrpc_port 起始端口分别为 30340、20240、8545,MySQL 数据库命名"db_Group 组群编号_机构编号"。其中,group1 群组中机构 agencyA 的数据库命名示例为 db_Group1_A。具体任务如下:

配置区块链网络

复制代码
vi ipconf

-----------
配置如下图所示

搭建区块链

复制代码
bash build_chain.sh -f ipconf -p 30340,20240,8545 -e ./fisco-bcos

配置数据库

复制代码
1修改配置
vi /etc/mysql/mysql.conf.d
2添加如下配置
max_allowed_packet = 1024M
sql_mode =STRICT_TRANS_TABLE
ssl =0
default_authentication_plugin = mysql_native_password

加一条

重启mysql

复制代码
sudo service mysql restart

-------------
进入mysql检查
mysql -uroot -p
123456

mysql>   show variables like 'max_allowed_packet%';
+--------------------+------------+
| Variable_name      | Value      |
+--------------------+------------+
| max_allowed_packet | 1073741824 |
+--------------------+------------+
1 row in set (0.00 sec)


mysql>    show variables like 'sql_mode%';
+---------------+---------------------+
| Variable_name | Value               |
+---------------+---------------------+
| sql_mode      | STRICT_TRANS_TABLES |
+---------------+---------------------+
1 row in set (0.00 sec)

配置各群组节点的MySQL数据库

bash 复制代码
sed -i 's/type=rocksdb/type=mysql/g' ~/fisco/nodes/127.0.0.1/node*/conf/group.1.ini
sed -i 's/type=rocksdb/type=mysql/g' ~/fisco/nodes/127.0.0.1/node*/conf/group.2.ini
sed -i 's/type=rocksdb/type=mysql/g' ~/fisco/nodes/127.0.0.1/node*/conf/group.3.ini
sed -i 's/db_username=/db_username=root/g' ~/fisco/nodes/127.0.0.1/node*/conf/group.1.ini
sed -i 's/db_username=/db_username=root/g' ~/fisco/nodes/127.0.0.1/node*/conf/group.2.ini
sed -i 's/db_username=/db_username=root/g' ~/fisco/nodes/127.0.0.1/node*/conf/group.3.ini
sed -i 's/db_passwd=/db_passwd=123456/g' ~/fisco/nodes/127.0.0.1/node*/conf/group.1.ini
sed -i 's/db_passwd=/db_passwd=123456/g' ~/fisco/nodes/127.0.0.1/node*/conf/group.2.ini
sed -i 's/db_passwd=/db_passwd=123456/g' ~/fisco/nodes/127.0.0.1/node*/conf/group.3.ini

#-------------------------------
#[命令解析]
#sed -i 's/修改前的内容/修改后的内容/g' 作用文件地址
#-------------------------------
#博主为了方便区分先配置单群组的节点
#-------------------------------
#[node3]
sed -i 's/db_name=/db_name=db_Group1_B/g' ~/fisco/nodes/127.0.0.1/node3/conf/group.1.ini
#[node6]
sed -i 's/db_name=/db_name=db_Group3_D/g' ~/fisco/nodes/127.0.0.1/node6/conf/group.3.ini
#-------------------------------
#[多群组]
#[node0--2 g1-2]
sed -i 's/db_name=/db_name=db_Group1_A/g' ~/fisco/nodes/127.0.0.1/node0/conf/group.1.ini
sed -i 's/db_name=/db_name=db_Group1_A/g' ~/fisco/nodes/127.0.0.1/node1/conf/group.1.ini
sed -i 's/db_name=/db_name=db_Group1_A/g' ~/fisco/nodes/127.0.0.1/node2/conf/group.1.ini
sed -i 's/db_name=/db_name=db_Group2_A/g' ~/fisco/nodes/127.0.0.1/node0/conf/group.2.ini
sed -i 's/db_name=/db_name=db_Group2_A/g' ~/fisco/nodes/127.0.0.1/node1/conf/group.2.ini
sed -i 's/db_name=/db_name=db_Group2_A/g' ~/fisco/nodes/127.0.0.1/node2/conf/group.2.ini
#[node4--5 g2-3]
sed -i 's/db_name=/db_name=db_Group2_C/g' ~/fisco/nodes/127.0.0.1/node4/conf/group.2.ini
sed -i 's/db_name=/db_name=db_Group2_C/g' ~/fisco/nodes/127.0.0.1/node5/conf/group.2.ini
sed -i 's/db_name=/db_name=db_Group3_C/g' ~/fisco/nodes/127.0.0.1/node4/conf/group.3.ini
sed -i 's/db_name=/db_name=db_Group3_C/g' ~/fisco/nodes/127.0.0.1/node5/conf/group.3.ini

通过命令启动所有7个节点,查看并验证节点进程状态;

验证进程状态

bash 复制代码
ps -ef | grep -v grep | grep fisco-bcos

检查区块链节点node0的连接状态以及node0和node4的共识状态日志输出

bash 复制代码
#node0的连接状态
tail -f nodes/127.0.0.1/node0/log/log * |grep connected
#node0和node4的共识状态日志输
tail -f nodes/127.0.0.1/node0/log/log * |grep +++
tail -f nodes/127.0.0.1/node4/log/log * |grep +++

检查MySQL分布式存储数据库状态,登陆MySQL数据库并查看所有节点的数据库信息。

通过控制台发起CRUD操作,并通过MySQL客户端查询状态数据信息

bash 复制代码
添加一个测试表
 create table t_demo(name varchar, item_id varchar, item_name varchar, primary key(name))
向表中插入数据
insert into t_demo (name, item_id, item_name) values (fruit, 1, apple1)
进入数据库
mysql -uroot -p 
123456
查询测试demo的状态
select * from u_t_demo;
相关推荐
wuyk5551 小时前
Spider-第10讲-SQLite持久化与去重
数据库·爬虫·sqlite
乌暮3 小时前
Spring AOP 与 Spring 事务:用大白话彻底理解原理与实践
java·数据库·spring boot·后端·sql·学习·spring
小此方4 小时前
Re:Mysql数据库基础篇(十二):什么是事务、事务解决了什么问题、事务的四大属性、事务的操作方式
数据库·mysql
csdn_aspnet4 小时前
macOS 10 、Docker 玩轉 MySQL
运维·mysql·macos·docker·容器·mac
笑容掩饰我的失落4 小时前
区块链从小白到精通(十):合约安全与上线——重入攻击、Gas 优化与最佳实践
安全·区块链
flash俊杰5 小时前
v0.5-01 让桌面 AI 助手记得住:预算组装、递归摘要、长期记忆与评估基线
数据库·安全·架构
王中阳Go5 小时前
100 件货卖出 116 件,库存停在 -16
后端·mysql·go
2501_933923255 小时前
redis:string类型常见命令
数据库·redis·缓存
byte轻骑兵6 小时前
时序数据库选型指南:Apache IoTDB 社区版实践与踩坑
数据库·人工智能·apache·时序数据库·iotdb
黄连木笛7 小时前
Redis Insight 汉化教程:Windows / macOS / Linux 设置中文界面(附繁體、教程汉化、关闭自动更新)
数据库·redis·缓存