使用docker 配置mysql group replication实验环境

本文详细介绍了如何在Docker中配置MySQL Group Replication,包括创建虚拟网络、配置my.cnf文件、启动MySQL容器,以及解决配置过程中遇到的问题,如网络错误、事务同步冲突等。此外,还提供了相关资源链接以供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.  使用单主机模式 进行测试.

用到的配置和脚本如下:

node1 - my.cnf

[mysqld]
user=mysql
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW

transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "node1:33060"
loose-group_replication_group_seeds= "node1:33060,node2:33060,node3:33060"
loose-group_replication_bootstrap_group=off
loose-group_replication_recovery_user=repl
loose-group-replication-single-primary-mode='ON'
loose-group-replication-enforce-update-everywhere-checks='OFF'

relay-log=replay-bin

node2-my.cnf

[mysqld]
user=mysql
server_id=2
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW

transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "node2:33060"
loose-group_replication_group_seeds= "node1:33060,node2:33060,node3:33060"
loose-group_replication_bootstrap_group=off
loose-group_replication_recovery_user=repl
loose-group-replication-single-primary-mode='ON'
loose-group-replication-enforce-update-everywhere-checks='OFF'

relay-log=replay-bin

 node3-my.cnf

[mysqld]
user=mysql
server_id=3
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW

transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "node3:33060"
loose-group_replication_group_seeds= "node1:33060,node2:33060,node3:33060"
loose-group_replication_bootstrap_group=off
loose-group-replication-single-primary-mode=on
loose-group-replication-enforce-update-everywhere-checks=off

relay-log=replay-bin

[mysqld_safe]

 docker启动脚本:run.sh

#!/bin/bash

if [ "$1" = "" ] || [ "$1" = '3306' ];then
  echo -p 'examples: ./run.sh 33060; port must not a number and not equal with 3306!'
fi


#you can update this test dir for another dir
base_dir=/home/mysql_test/mysql_5.7/

if [ ! -d $base_dir ];then
    echo "$base_dir not exist, please update base_dir in the shell!"
    exit
fi

cd $base_dir
nodeDir=node$1


if [ ! -d $nodeDir ];then
   mkdir $nodeDir
#else
   #echo "$1 has exist, please input another port number!"
fi

base_dir=${base_dir}$nodeDir
conf_dir_name=conf
data_dir_name=data
conf_dir=${base_dir}/$conf_dir_name
data_dir=${base_dir}/$data_dir_name
port=3306$1:3306
container=mysql/mysql-server:5.7

cd $base_dir
if [ ! -d $conf_dir_name ];then
    mkdir $conf_dir_name
fi

cd $conf_dir_name
if [ ! -f 'my.cnf' ];then
    printf "[mysqld]\nuser=mysql\n[mysqld_safe]\n" > my.cnf
fi

cd $base_dir
if [ ! -d $data_dir_name ];then
    mkdir $data_dir_name
fi


docker rm -f $nodeDir
docker run --name=$nodeDir --net=groupnet \
--mount type=bind,src=${conf_dir}/my.cnf,dst=/etc/my.cnf \
--mount type=bind,src=$data_
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值