Open David-Lor opened 9 months ago
At the moment you have to use version 0.13.7 for use with mysql/mariadb. This still works...
I still cant get past this invalid URL error even with version 0.13.7. Using similar compose file as referenced earlier in this thread
The error [is generated] in syncstorage-spanner
, which indicates that sync believes you are using spanner for this. syncstorage-settings
presumes you're using spanner if the database URL begins with spanner://
The default for this is set to mysql://root...
, so you may have either an environment variable like SYNC_STORAGE__DATABASE_URL="spanner://..."
(or if you're using a --config
file database_url = "spanner://..."
)
Is there a reason why syncstorage is going to use spanner? I mean don't get me wrong but i think a lot of Firefox users are not using Google Chrome to get rid of Google dependencies. When Mozilla is now building Google dependencies into backend functionalities like this here sync private information like bookmarks, extensions etc. doesn't really make sense for me!
There are a few reasons.
1) MySQL isn't sufficient. Put bluntly, we have lots of experience running MySQL nodes, and at the scale we need to run at, MySQL isn't the answer. Nodes fail, often, which meant that we had a HUGE data loss problem. This is invisible for anyone who has multiple devices, but many folk considered "Sync" to be a Backup service and were sad and upset when they needed to reinstall and all their data was gone because the node failed. (Postgres is a bit better, but not significantly so.)
2) Cost. Put simply, we save a LOT of money by running this on a hosted, distributed database. We don't have to pay for the servers, co-lo space, someone to go push buttons or swap disks, etc. It's the reason that a lot of companies use distributed databases and shared services. As to which service we use, that decision is outside of my pay-grade. For now, we're on GCP. We may move in the future to some other database provided we get a better deal somewhere else. That said, most of the big, distributed databases aren't exactly SQL. They get very close, but they're different. There are a lot of reasons for that, but it's the hand we have to work with, so we do.
Our problems are not your problems (and frankly, I really hope that you never have to deal with our problems).
All that said, Spanner is just a big SQL-like database, so there's no difference in what gets stored. It's still completely end-to-end encrypted, so all anyone outside of your devices can tell it's just blobs of random crap. The syncstorage server basically does some auth, and then just stores and retrieves those blobs of "stuff" based on the API. (Honestly? Anyone could write their own syncserver if they wanted to.) syncstorage is basically just a bunch of buckets with a slightly smart way of storing and retrieving them.
@jrconlin Thanks for taking the time and going into details really appreciate it! I totally get the point that MySQL is may be not the best for huge amount of data with a lot of requests. You guys need to think in difference scales. I just really hope this will not mean MySQL will be deprecated in this project. It has a huge potential using Rust and give the ability to self host your services which is quite unique in this area!
@Unfaehig Honestly? I hope not either. That said, the decision isn't mine to make. I can definitely argue that we need to have the level of data abstraction that lets us migrate to a different storage engine system, so that part will definitely stick around, but as for the MySQL work, that's a bit less certain. We really need the community who uses that to support it because it's impossible to argue for the time (and money) to do it internally. There are already some wonderful soul that is stepping up to the challenge, and I'd encourage anyone to help her out. Even if you don't know how to write rust code, you could help with writing documents or cleaning up comments. If you know python, help with the testing code. If you know docker configs, you can help create something better than the confusing test specific configurations we have. I'm happy to provide pointers and tips when I can.
There's the Firefox Sync matrix board on chat.mozilla.org that you can use to coordinate if you want.
Frankly, please put us to shame and make something better than what we've would have come up with.
Hello there,
I'm trying to run a syncstorage server in Docker, but I'm receiving this error when the server starts:
Where
****
is my user password, and it only contains upper/lower letters and numbers, no special characters or symbols. I've tried with and without specifying the port.The database credentials and connection details are correct, as I can connect to it from other container:
Judging by the error
Invalid database url
, it would seem my URI is incorrect, but I don't see structural differences with the example provided here.This is my dockercompose:
┆Issue is synchronized with this Jira Task