I’m working on moving my site from my old Ubuntu LTS server to a new one so that I can run Mysql 8, Ghost 5 and be stable for more years to come. This process was easy on my non member websites but it has proven to be a huge pain on member sites.
To whit - the memberships get all messed up which is no good. When I export my member list and reimport it in the new server I have the same number of members but I’m missing 3 paid members. I think the issue is that these members had at one time ended their subscription and then started them again.
On top of this all my analytics data is gone now which seems to be a huge loss to me.
Is there a way to get all my member data and analytics out of ghost and move it to another server?
I’m now starting to try to dump the whole mysql database and upload that. I’m not sure if this is a good idea or not. Does anyone have any experience with this? My first try partially worked but not totally as I’m dumping a 4.41.3 ghost site then trying to upload to a ghost 5.x site. Somethings work. Other parts do not.
I think there needs to be some better documentation about this as this is a pretty important use case. Especially as I tried to upgrade my ubuntu server but this failed horribly so I did a fresh install of a new image in the hopes i could just move my data that way.
I’m working through this as the night goes on so will keep replying with more thoughts.
The trouble is that I can’t update to ghost 5 on my ubuntu server without a bunch of work to get mysql 8 installed. So when I do a manual reinstall on the new server with the mysqldump from the old server there is some corruption of the database and it doesn’t work (which is to be expected as the upgrade from 4.x to 5.x probably changes the database some.
It’s very shocking to me that there is no good way to export all the ghost user data. It seems like a major problem that when I export my member list and reimport it I loose paying members. I could deal with loosing the analytics but loosing track of paying members is a big problem.
I’m continuing my experimentation.
What you layout here is basically what I’m trying to do with a couple of tweeks like reinstalling ghost on the new server. I’m going to start fresh this morning and do all the steps again to see if it works.
My systems are:
OS: Ubuntu, v18.04.6 LTS
Node Version: v16.15.1
Ghost Version: 4.48.2
Ghost-CLI Version: 1.19.2
Command: ‘ghost doctor’
mysql Ver 14.14 Distrib 5.7.38, for Linux (x86_64) using EditLine wrapper
System I’m Migrating To:
OS: Ubuntu, v20.04.4 LTS
Node Version: v16.14.2
Ghost Version: 4.48.2
Ghost-CLI Version: 1.21.0
Command: ‘ghost doctor’
mysql Ver 8.0.29-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))
This is not the issue I’m experiencing. My difference is in paid members specifically. I’m missing paid members after the migration but have the same count of total subscribers, etc.
I think the issue is that the paid members I’m missing all have at one point ended a subscription and then started their subscriptions again. One my instance it shows two different subscription events - the first one canceled and the second one started again. When i migrate over only the first one seems to come through missing the fact that they resubscribed.
This could be really, really bad as their subscription is still registered in stripe but they would be unable to have any benefits.
Same thing just happened with my member import. In order to upgrade to MySQL 8 on DigitalOcean, I had to create a new droplet and migrate everything over. On importing my members CSV, it lost six of my paid member’s subscriptions.
I noticed one related issue/cause: in Ghost’s import dialogue, the “products” field had no corresponding “Import As” option and had to be left as “Not imported.”
Has this been reported as a bug yet? It seems like a pretty serious one, if many others will be going through migration for the MySQL upgrade.
EDIT: I also just discovered it did not import members’ newsletter subscriptions properly, likely because I have multiple newsletters. Looks I’m going to have to switch everything back to the old install until this can be fixed.
Would a snapshot from a MySQL 5 droplet work with one running 8?
Or did you mean back up the original with a snapshot, make a new droplet with it, and then upgrade that one? I did start by trying to upgrade MySQL on my original droplet, but DO strongly recommended against it.
Since everything else migrated without problems, and since this isn’t urgent (yet), it seems like the simplest option would be to wait for an update to the member import tool that supports multiple newsletters and tiers.
Hopefully that will come before MySQL 8 is required!
Thanks for your time working through this. Maybe I’m misunderstanding, but the notice I’m seeing is that 8 will be required for “the next major release.” That would be Ghost 6.0, right?
As for the additional droplet, I already have it, and it’s fully set up aside from the member import. That’s why it seems simplest to wait for a fix.
Either way, I don’t want to lose the point here, which is that the member import tool doesn’t yet support all the fields in an export. This will be important for anyone trying to use the tool, not just for my use case.
Just to following up here, in case anyone else is considering this method for upgrading: I had a terrible experience upgrading Ubuntu on DigitalOcean that took weeks to resolve, but I’ve finally got it working.
It should be noted that DigitalOcean’s support chastised me over and over for doing the upgrade in place and insisted that migration was the only reliable way. Hopefully the Ghost team will be updating the import tool to support all member fields soon. If I hadn’t gotten in so deep, I would rather have just risked the wait.