Search the Community
Showing results for tags 'syncing'.
Found 1 result
Ok, so I have a new project that has PW as the selected framework of choice. Here are some of the constraints I'm working with: 1) The corporate database will replicate all the other branches data. 2) Each branch will have it's own web and database servers, thus run their own instance of ProcessWire and all data will be saved within the intranet. 3) Each branch will be able to access the other branches install via VPN. The web servers/code base will be synced using Git. 4) Each branch's database server will have a Symmetricds node installed. Via VPN, each node will push/pull to the corporate node, keeping the databases synced. Symmetricds allows for table and column specific updates so the whole db won't be getting replicated on each pass. 5) The database sync needs to be bidirectional, as in Multiple Master Replication. Reason being, the company plans on having certain departments add pages directly to the corporate account that will affect the other branches. For instance, the Human Resource department will handle adding/removing users and maintaining records on them. Each user created by HR will need to be able to access any branch's data when on the VPN. So user pages would need to be pushed to the branch db's. Here's what it would look like: // Inside Branch 1's Building: Client 1------via intranet---------------Web Server 1-----DB Server 1 // Connecting to remote Branch 2 from Branch 1 Client 1------via internet (VPN)------Web Server 2-----DB Server 2 // Database syncing DB 1-------------via VPN-------Corporate DB 1 and vise versa (bidirectional) DB 2-------------via VPN-------Corporate DB 2 The schema between all databases will be exactly the same. So, initially, my game plan was to change mySQL's auto_increment_increment and auto_increment_offset on each db instance, keeping the different branches on separate indexes when pages and fields are stored. Hopefully, this would cause a mostly conflict free environment. Also, this limits my approach on dealing with expansion. Once 9 offices are established, I'm going to have to start getting creative with the increment patterns. I suggested a cloud based approach but they insist on using their current infrastructure. My other idea was to write transaction and conflict rules into Symmetricds and allow it to make changes to page ids, etc and any references to such in the db. The real danger is when there is a mass building of pages when the VPN is not available, like an internet outage. Once the internet is back online, there could be a lot of pages that need to be replicated; with the likelihood that many pages end up with the same exact page id's, etc. Anyway, does anyone here have any advice as to what they would do? I'm open to hear opinions of what others have done in this same sort of scenario before I choose my path.