[MM-31094] Replication Lag (#16888)
* MM-31094: Adds tooling to develop and test using a MySQL instance with replication lag. Adds some lazy lookups to fallback to master if results are not found. * MM-31094: Removes mysql-read-replica from default docker services. * MM-31094: Switches (store..SessionStore).Get and (store.TeamStore).GetMember to using context.Context. * MM-31094: Updates (store.UsersStore).Get to use context. * MM-31094: Updates (store.PostStore).Get to use context. * MM-31094: Removes feature flag and config setting. * MM-31094: Rolls back some master reads. * MM-31094: Rolls a non-cache read. * MM-31094: Removes feature flag from the store. * MM-31094: Removes unused constant and struct field. * MM-31094: Removes some old feature flag references. * MM-31094: Fixes some tests. * MM-31094: App layers fix. * MM-31094: Fixes mocks. * MM-31094: Don't reparse flag. * MM-31094: No reparse. * MM-31094: Removed unused FeatureFlags field. * MM-31094: Removes unnecessary feature flags variable declarations. * MM-31094: Fixes copy-paste error. * MM-31094: Fixes logical error. * MM-30194: Removes test method from store. * Revert "MM-30194: Removes test method from store." This reverts commit d5a6e8529bd5f4d993824c828e239d009b05e567. * MM-31094: Conforming to make's strange syntax. * MM-31094: Configures helper for read replica with option. * MM-31094: Adds some missing ctx's. * MM-31094: WIP * MM-31094: Updates test names. * MM-31094: WIP * MM-31094: Removes unnecessary master reads. * MM-31094: ID case changes out of scope. * MM-31094: Removes unused context. * MM-31094: Switches to a helper. Removes some var naming changes. Fixes a merge error. * MM-31094: Removes SQLITE db driver ref. * MM-31094: Layer generate fix. * MM-31094: Removes unnecessary changes. * MM-31094: Moves test method. * MM-31094: Re-add previous fix. * MM-31094: Removes make command for dev. * MM-31094: Fix for login. Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
f31a9ed1a8
Коммит
58dce5930e
4
scripts/replica-lag-set.sh
Исполняемый файл
4
scripts/replica-lag-set.sh
Исполняемый файл
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
stmt="STOP SLAVE SQL_THREAD FOR CHANNEL '';CHANGE MASTER TO MASTER_DELAY = $1;START SLAVE SQL_THREAD FOR CHANNEL '';SHOW SLAVE STATUS\G;"
|
||||
docker exec mattermost-mysql-read-replica sh -c "export MYSQL_PWD=mostest; mysql -u root -e \"$stmt\"" | grep SQL_Delay
|
||||
32
scripts/replica-mysql-config.sh
Исполняемый файл
32
scripts/replica-mysql-config.sh
Исполняемый файл
@@ -0,0 +1,32 @@
|
||||
#!/bin/bash
|
||||
|
||||
until docker exec mattermost-mysql sh -c 'mysql -u root -pmostest -e ";"'
|
||||
do
|
||||
echo "Waiting for mattermost-mysql database connection..."
|
||||
sleep 4
|
||||
done
|
||||
|
||||
priv_stmt='GRANT REPLICATION SLAVE ON *.* TO "mmuser"@"%" IDENTIFIED BY "mostest"; FLUSH PRIVILEGES;'
|
||||
docker exec mattermost-mysql sh -c "mysql -u root -pmostest -e '$priv_stmt'"
|
||||
|
||||
until docker-compose -f docker-compose.makefile.yml exec mysql-read-replica sh -c 'mysql -u root -pmostest -e ";"'
|
||||
do
|
||||
echo "Waiting for mysql-read-replica database connection..."
|
||||
sleep 4
|
||||
done
|
||||
|
||||
docker-ip() {
|
||||
docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$@"
|
||||
}
|
||||
|
||||
MS_STATUS=`docker exec mattermost-mysql sh -c 'mysql -u root -pmostest -e "SHOW MASTER STATUS"'`
|
||||
CURRENT_LOG=`echo $MS_STATUS | awk '{print $6}'`
|
||||
CURRENT_POS=`echo $MS_STATUS | awk '{print $7}'`
|
||||
|
||||
start_slave_stmt="CHANGE MASTER TO MASTER_HOST='$(docker-ip mattermost-mysql)',MASTER_USER='mmuser',MASTER_PASSWORD='mostest',MASTER_LOG_FILE='$CURRENT_LOG',MASTER_LOG_POS=$CURRENT_POS; START SLAVE;"
|
||||
start_slave_cmd='mysql -u root -pmostest -e "'
|
||||
start_slave_cmd+="$start_slave_stmt"
|
||||
start_slave_cmd+='"'
|
||||
docker exec mattermost-mysql-read-replica sh -c "$start_slave_cmd"
|
||||
|
||||
docker exec mattermost-mysql-read-replica sh -c "mysql -u root -pmostest -e 'SHOW SLAVE STATUS \G'"
|
||||
Ссылка в новой задаче
Block a user