Skip to content

Commit c17514c

Browse files
authored
Feat: Add MySQL database support for CA (#618)
1 parent 1dbb0fd commit c17514c

15 files changed

+269
-54
lines changed

docs/schema.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,8 @@
178178
"type": "string",
179179
"enum": [
180180
"sqlite",
181-
"postgres"
181+
"postgres",
182+
"mysql"
182183
]
183184
}
184185
}

e2e-network/docker/test-04-v3-snapshot-ccaas.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ networkUp
5151

5252
# check if all nodes are ready
5353
waitForContainer "orderer0.group1.orderer.example.com" "Starting Raft node channel=my-channel1"
54-
waitForContainer "db.ca.org1.example.com" "database system is ready to accept connections"
54+
waitForContainer "db.ca.org1.example.com" "ready for connections"
5555
waitForContainer "ca.org1.example.com" "Listening on https://0.0.0.0:7054"
5656
waitForContainer "couchdb.peer0.org1.example.com" "Apache CouchDB has started. Time to relax."
5757
waitForContainer "peer0.org1.example.com" "Joining gossip network of channel my-channel1 with 1 organizations"

e2e/__snapshots__/extendConfig.test.ts.snap

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9216,7 +9216,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json
92169216
"address": "ca.org1.example.com",
92179217
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
92189218
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
9219-
"db": "postgres",
9219+
"db": "mysql",
92209220
"exposePort": 7040,
92219221
"fullAddress": "ca.org1.example.com:7054",
92229222
"port": 7054,
@@ -9358,7 +9358,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json
93589358
"address": "ca.org1.example.com",
93599359
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
93609360
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
9361-
"db": "postgres",
9361+
"db": "mysql",
93629362
"exposePort": 7040,
93639363
"fullAddress": "ca.org1.example.com:7054",
93649364
"port": 7054,
@@ -9447,7 +9447,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json
94479447
"address": "ca.org1.example.com",
94489448
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
94499449
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
9450-
"db": "postgres",
9450+
"db": "mysql",
94519451
"exposePort": 7040,
94529452
"fullAddress": "ca.org1.example.com:7054",
94539453
"port": 7054,
@@ -9547,7 +9547,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json
95479547
"address": "ca.org1.example.com",
95489548
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
95499549
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
9550-
"db": "postgres",
9550+
"db": "mysql",
95519551
"exposePort": 7040,
95529552
"fullAddress": "ca.org1.example.com:7054",
95539553
"port": 7054,
@@ -9689,7 +9689,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json
96899689
"address": "ca.org1.example.com",
96909690
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
96919691
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
9692-
"db": "postgres",
9692+
"db": "mysql",
96939693
"exposePort": 7040,
96949694
"fullAddress": "ca.org1.example.com:7054",
96959695
"port": 7054,
@@ -9778,7 +9778,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json
97789778
"address": "ca.org1.example.com",
97799779
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
97809780
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
9781-
"db": "postgres",
9781+
"db": "mysql",
97829782
"exposePort": 7040,
97839783
"fullAddress": "ca.org1.example.com:7054",
97849784
"port": 7054,
@@ -9877,7 +9877,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json
98779877
"address": "ca.org1.example.com",
98789878
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
98799879
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
9880-
"db": "postgres",
9880+
"db": "mysql",
98819881
"exposePort": 7040,
98829882
"fullAddress": "ca.org1.example.com:7054",
98839883
"port": 7054,
@@ -10019,7 +10019,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json
1001910019
"address": "ca.org1.example.com",
1002010020
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
1002110021
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
10022-
"db": "postgres",
10022+
"db": "mysql",
1002310023
"exposePort": 7040,
1002410024
"fullAddress": "ca.org1.example.com:7054",
1002510025
"port": 7054,
@@ -10105,7 +10105,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json
1010510105
"address": "ca.org1.example.com",
1010610106
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
1010710107
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
10108-
"db": "postgres",
10108+
"db": "mysql",
1010910109
"exposePort": 7040,
1011010110
"fullAddress": "ca.org1.example.com:7054",
1011110111
"port": 7054,
@@ -10247,7 +10247,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json
1024710247
"address": "ca.org1.example.com",
1024810248
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
1024910249
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
10250-
"db": "postgres",
10250+
"db": "mysql",
1025110251
"exposePort": 7040,
1025210252
"fullAddress": "ca.org1.example.com:7054",
1025310253
"port": 7054,
@@ -10490,7 +10490,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json
1049010490
"address": "ca.org1.example.com",
1049110491
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
1049210492
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
10493-
"db": "postgres",
10493+
"db": "mysql",
1049410494
"exposePort": 7040,
1049510495
"fullAddress": "ca.org1.example.com:7054",
1049610496
"port": 7054,
@@ -12505,7 +12505,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = `
1250512505
"address": "ca.org1.example.com",
1250612506
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
1250712507
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
12508-
"db": "postgres",
12508+
"db": "mysql",
1250912509
"exposePort": 7040,
1251012510
"fullAddress": "ca.org1.example.com:7054",
1251112511
"port": 7054,
@@ -12647,7 +12647,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = `
1264712647
"address": "ca.org1.example.com",
1264812648
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
1264912649
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
12650-
"db": "postgres",
12650+
"db": "mysql",
1265112651
"exposePort": 7040,
1265212652
"fullAddress": "ca.org1.example.com:7054",
1265312653
"port": 7054,
@@ -12736,7 +12736,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = `
1273612736
"address": "ca.org1.example.com",
1273712737
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
1273812738
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
12739-
"db": "postgres",
12739+
"db": "mysql",
1274012740
"exposePort": 7040,
1274112741
"fullAddress": "ca.org1.example.com:7054",
1274212742
"port": 7054,
@@ -12836,7 +12836,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = `
1283612836
"address": "ca.org1.example.com",
1283712837
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
1283812838
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
12839-
"db": "postgres",
12839+
"db": "mysql",
1284012840
"exposePort": 7040,
1284112841
"fullAddress": "ca.org1.example.com:7054",
1284212842
"port": 7054,
@@ -12978,7 +12978,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = `
1297812978
"address": "ca.org1.example.com",
1297912979
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
1298012980
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
12981-
"db": "postgres",
12981+
"db": "mysql",
1298212982
"exposePort": 7040,
1298312983
"fullAddress": "ca.org1.example.com:7054",
1298412984
"port": 7054,
@@ -13067,7 +13067,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = `
1306713067
"address": "ca.org1.example.com",
1306813068
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
1306913069
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
13070-
"db": "postgres",
13070+
"db": "mysql",
1307113071
"exposePort": 7040,
1307213072
"fullAddress": "ca.org1.example.com:7054",
1307313073
"port": 7054,
@@ -13166,7 +13166,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = `
1316613166
"address": "ca.org1.example.com",
1316713167
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
1316813168
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
13169-
"db": "postgres",
13169+
"db": "mysql",
1317013170
"exposePort": 7040,
1317113171
"fullAddress": "ca.org1.example.com:7054",
1317213172
"port": 7054,
@@ -13308,7 +13308,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = `
1330813308
"address": "ca.org1.example.com",
1330913309
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
1331013310
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
13311-
"db": "postgres",
13311+
"db": "mysql",
1331213312
"exposePort": 7040,
1331313313
"fullAddress": "ca.org1.example.com:7054",
1331413314
"port": 7054,
@@ -13394,7 +13394,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = `
1339413394
"address": "ca.org1.example.com",
1339513395
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
1339613396
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
13397-
"db": "postgres",
13397+
"db": "mysql",
1339813398
"exposePort": 7040,
1339913399
"fullAddress": "ca.org1.example.com:7054",
1340013400
"port": 7054,
@@ -13536,7 +13536,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = `
1353613536
"address": "ca.org1.example.com",
1353713537
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
1353813538
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
13539-
"db": "postgres",
13539+
"db": "mysql",
1354013540
"exposePort": 7040,
1354113541
"fullAddress": "ca.org1.example.com:7054",
1354213542
"port": 7054,
@@ -13779,7 +13779,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = `
1377913779
"address": "ca.org1.example.com",
1378013780
"caAdminNameVar": "ORG1_CA_ADMIN_NAME",
1378113781
"caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD",
13782-
"db": "postgres",
13782+
"db": "mysql",
1378313783
"exposePort": 7040,
1378413784
"fullAddress": "ca.org1.example.com:7054",
1378513785
"port": 7054,

e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-peer-dev-mode.json.test.ts.snap

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3428,6 +3428,11 @@ __getCAPostgresNodes() {
34283428
"
34293429
}
34303430
3431+
__getCAMySQLNodes() {
3432+
echo "
3433+
"
3434+
}
3435+
34313436
__createSnapshot() {
34323437
cd "$FABLO_NETWORK_ROOT/.."
34333438
backup_dir="\${1:-"snapshot-$(date -u +"%Y%m%d%H%M%S")"}"
@@ -3447,11 +3452,17 @@ __createSnapshot() {
34473452
done
34483453
34493454
for node in $(__getCAPostgresNodes); do
3450-
echo "Saving state of $node..."
3455+
echo "Saving state of $node (PostgreSQL)..."
34513456
mkdir -p "$backup_dir/$node/pg-data"
34523457
docker exec "$node" pg_dump -c --if-exists -U postgres fabriccaserver >"$backup_dir/$node/fabriccaserver.sql"
34533458
done
34543459
3460+
for node in $(__getCAMySQLNodes); do
3461+
echo "Saving state of $node (MySQL)..."
3462+
mkdir -p "$backup_dir/$node/mysql-data"
3463+
docker exec -e MYSQL_PWD=caDbPass12345 "$node" mysqldump -u root --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql"
3464+
done
3465+
34553466
for node in $(__getOrdererAndPeerNodes); do
34563467
echo "Saving state of $node..."
34573468
docker cp "$node:/var/hyperledger/production/" "$backup_dir/$node/"
@@ -3487,7 +3498,16 @@ __cloneSnapshot() {
34873498
done
34883499
34893500
for node in $(__getCAPostgresNodes); do
3490-
echo "Restoring $node..."
3501+
echo "Restoring $node (PostgreSQL)..."
3502+
if [ ! -d "$node" ]; then
3503+
echo "Warning: Cannot restore '$node', directory does not exist!"
3504+
else
3505+
docker cp "./$node/fabriccaserver.sql" "$node:/docker-entrypoint-initdb.d/fabriccaserver.sql"
3506+
fi
3507+
done
3508+
3509+
for node in $(__getCAMySQLNodes); do
3510+
echo "Restoring $node (MySQL)..."
34913511
if [ ! -d "$node" ]; then
34923512
echo "Warning: Cannot restore '$node', directory does not exist!"
34933513
else

e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode.json.test.ts.snap

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3483,6 +3483,11 @@ __getCAPostgresNodes() {
34833483
"
34843484
}
34853485
3486+
__getCAMySQLNodes() {
3487+
echo "
3488+
"
3489+
}
3490+
34863491
__createSnapshot() {
34873492
cd "$FABLO_NETWORK_ROOT/.."
34883493
backup_dir="\${1:-"snapshot-$(date -u +"%Y%m%d%H%M%S")"}"
@@ -3502,11 +3507,17 @@ __createSnapshot() {
35023507
done
35033508
35043509
for node in $(__getCAPostgresNodes); do
3505-
echo "Saving state of $node..."
3510+
echo "Saving state of $node (PostgreSQL)..."
35063511
mkdir -p "$backup_dir/$node/pg-data"
35073512
docker exec "$node" pg_dump -c --if-exists -U postgres fabriccaserver >"$backup_dir/$node/fabriccaserver.sql"
35083513
done
35093514
3515+
for node in $(__getCAMySQLNodes); do
3516+
echo "Saving state of $node (MySQL)..."
3517+
mkdir -p "$backup_dir/$node/mysql-data"
3518+
docker exec -e MYSQL_PWD=caDbPass12345 "$node" mysqldump -u root --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql"
3519+
done
3520+
35103521
for node in $(__getOrdererAndPeerNodes); do
35113522
echo "Saving state of $node..."
35123523
docker cp "$node:/var/hyperledger/production/" "$backup_dir/$node/"
@@ -3542,7 +3553,16 @@ __cloneSnapshot() {
35423553
done
35433554
35443555
for node in $(__getCAPostgresNodes); do
3545-
echo "Restoring $node..."
3556+
echo "Restoring $node (PostgreSQL)..."
3557+
if [ ! -d "$node" ]; then
3558+
echo "Warning: Cannot restore '$node', directory does not exist!"
3559+
else
3560+
docker cp "./$node/fabriccaserver.sql" "$node:/docker-entrypoint-initdb.d/fabriccaserver.sql"
3561+
fi
3562+
done
3563+
3564+
for node in $(__getCAMySQLNodes); do
3565+
echo "Restoring $node (MySQL)..."
35463566
if [ ! -d "$node" ]; then
35473567
echo "Warning: Cannot restore '$node', directory does not exist!"
35483568
else

0 commit comments

Comments
 (0)