I am in the unusual position of needing to update my app server from v8.8 to v10 but I cannot do it in place. As background, I have three servers, my desktop development environment, a staging server with a co-located database on AWS, and a production server with a separate database server both on AWS. All databases are MySQL. Shame on me, I let my production and staging servers and the database versions grow old (Windows 2008 Datacenter, MySQL 5.6). When updating the staging server, I found that AwareIM v10 would not run on that OS (and support gave it a good try). My BSV has a couple of database changes due to new reserved words in V10. On my dev machine, I updated to V10 in place, put it into test, and was informed of the necessary changes, which I performed, and all is well at least in my dev test database. I have no production data in the development environment.
My staging environment runs a recent snapshot of my production database, and I keep it updated whenever I publish so it is a replica of the production database structure. To create the new staging environment, I installed V10 fresh and created my BSV. I had to delete all tables in my basdbtest database to get the BSV into test, and I can now replace the data with data from my dev environment, but I don’t really need testing data in the staging environment. When I went to publish, it wanted to create literally everything because the AwareIM system table got whacked along the way.
Okay, stay with me.
I believe what I have learned is that when I update my production environment, which I cannot do in place, I will have to start in my fresh AwareIM server with the current production BSV and update it via configuration import, then publish. Here’s the part I don’t know. What happens when I have a new production server, and I set the database to connect to my production database? I presume I will see the BSVs as normal. If I then import the new BSV and publish, I suspect I will have a normal publishing event that includes the few changes made for reserved words (there were 2). I plan to update the database (probably Maria 10) as the next step of my modernization.
I also learned this: I thought that when publishing, AwareIM simply compared BSV objects to database objects for changes. Nope. I think changes are logged in the system tables such as dvhistories and others.
I want my staging environment to mirror my production environment as much as possible, so I have to start over with it. I plan to snapshot the database volume in my production environment and attach it my staging server instance, ensuring the data folder points correctly in MySQL. Then I will have the requisite histories and other details for a normal publishing event. Doing this on my staging environment will be an excellent test case for what to expect in production. If you think you can affirm this approach, please do!
BTW, my production DB is about 110GB, so it’s not easy to sling around.
I would love to hear any experience you may have had that are useful to the conversation, but I think my situation is an edge case. Once I get my staging server running as described, I’ll report back to anyone who’s following this.