返回顶部
首页 > 资讯 > 数据库 >如何动态创建MySQL Group Replication的节点
  • 735
分享到

如何动态创建MySQL Group Replication的节点

2024-04-02 19:04:59 735人浏览 薄情痞子
摘要

这篇文章主要为大家展示了“如何动态创建Mysql Group Replication的节点”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何动态创建mysql

这篇文章主要为大家展示了“如何动态创建Mysql Group Replication的节点”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何动态创建mysql Group Replication的节点”这篇文章吧。

   首先说两个配置文件。这个文件是动态搭建的核心,每个节点的端口号,节点的编码(自定义),是否为主节点等都一一做了标识。

[root@grtest data]# cat init.lst
24801 s1 24901  Y
24802 s2 24902  N
24803 s3 24903  N
24804 s4 24904  N
24805 s5 24905  N
24806 s6 24906  N
24807 s7 24907  N
24808 s8 24908  N
24809 s9 24909  N接下来就是参数文件,里面的动态部分都使用变量来达到动态替换的效果。

[root@grtest data]# cat s.cnf
[mysqld]
# server configuration
datadir=${base_data_dir}/${node_name}
basedir=${base_dir}

port=${port}
Socket=${base_data_dir}/${node_name}/${node_name}.sock
server_id=${port}
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="1bb1b861-f776-11e6-be42-782bcb377193"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "127.0.0.1:${v_port}"
loose-group_replication_group_seeds= "${seed_list}"
loose-group_replication_bootstrap_group= off其中难点在于参数group_replication_group_seeds=这个参数值需要花点功夫拼出来。

除此之外,就没有其它的配置文件了,直接上我们的核心脚本。

get_seed_list就是特别处理参数group_replication_group_seeds的值,init_node用来初始化各个节点。

base_dir=/usr/local/mysql
base_data_dir=/home/mysql/data

function get_seed_list
{
while read line
do
tmp_port='127.0.0.1:'`echo $line|awk '{print $3}'`
echo ${tmp_port}
done <init.lst|xargs |sed 's/ /,/g'
}

export seed_list=`get_seed_list`
#echo ${seed_list}

function init_node
{
echo $seed_list
port=$1
node_name=$2
v_port=$3
primary_flag=$4
${base_dir}/bin/mysqld --initialize-insecure --basedir=${base_dir} --datadir=${base_data_dir}/${node_name} --explicit_defaults_for_timestamp

chown -R mysql:mysql  ${base_data_dir}/${node_dir}

cp ${base_data_dir}/s.cnf ${base_data_dir}/${node_name}/${node_name}.cnf
sed -i 's:${base_data_dir}:'"${base_data_dir}:g"'' ${base_data_dir}/${node_name}/${node_name}.cnf
sed -i 's:${base_dir}:'"${base_dir}:g"'' ${base_data_dir}/${node_name}/${node_name}.cnf
sed -i 's:${node_name}:'"${node_name}:g"''  ${base_data_dir}/${node_name}/${node_name}.cnf
sed -i 's:${port}:'"${port}:g"''  ${base_data_dir}/${node_name}/${node_name}.cnf
sed -i 's:${v_port}:'"${v_port}:g"'' ${base_data_dir}/${node_name}/${node_name}.cnf
sed -i 's/${seed_list}/'"${seed_list}/g"'' ${base_data_dir}/${node_name}/${node_name}.cnf

chown -R mysql:mysql ${base_data_dir}/${node_name}

${base_dir}/bin/mysqld_safe --defaults-file=${base_data_dir}/${node_name}/${node_name}.cnf &

sleep  5

${base_dir}/bin/mysql -P${port}  -S ${base_data_dir}/${node_name}/${node_name}.sock  -e "show databases"

if [[ ${primary_flag} = 'Y' ]];then

mysql -P${port}  -S ${base_data_dir}/${node_name}/${node_name}.sock -e "
SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%' IDENTIFIED BY 'rpl_pass';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWord='rpl_pass'
                      FOR CHANNEL 'group_replication_recovery';
INSTALL PLUGIN group_replication SONAME 'group_replication.so';               
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
select *from performance_schema.replication_group_members;
"
elif [[ ${primary_flag} = 'N' ]];then

mysql -P${port}  -S ${base_data_dir}/${node_name}/${node_name}.sock -e   "
SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%' IDENTIFIED BY 'rpl_pass';
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='rpl_pass'
        FOR CHANNEL 'group_replication_recovery';
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
set global group_replication_allow_local_disjoint_gtids_join=on;
start group_replication;
select *from performance_schema.replication_group_members;
"
else
   echo 'Please check variable primary_flag'
fi
}

#MaiN

while read line
do
echo ${seed_list}
init_node $line
done <init.lst我们花一两分钟来模拟一下节点数超限的问题。

即在init.lst添加10个节点信息。

很快就得到了报错信息:

ERROR 3191 (HY000) at line 10: The START GROUP_REPLICATION command failed since the group already has 9 members.

以上是“如何动态创建MySQL Group Replication的节点”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: 如何动态创建MySQL Group Replication的节点

本文链接: https://lsjlt.com/news/63318.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何动态创建MySQL Group Replication的节点
    这篇文章主要为大家展示了“如何动态创建MySQL Group Replication的节点”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何动态创建MySQL ...
    99+
    2024-04-02
  • 如何搭建MySQL Group Replication测试环境
    这篇文章给大家分享的是有关如何搭建MySQL Group Replication测试环境的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。    最近看了下My...
    99+
    2024-04-02
  • MySQL中如何创建动态报表
    在MySQL中创建动态报表,一种常见的方法是通过存储过程和动态SQL语句来实现。以下是一个简单的示例: 创建存储过程: DELI...
    99+
    2024-04-30
    MySQL
  • 在javascript中如何创建节点
    这篇文章主要为大家展示了“在javascript中如何创建节点”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在javascript中如何创建节点”这篇文章吧。 ...
    99+
    2024-04-02
  • jquery如何创建元素节点
    这篇“jquery如何创建元素节点”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“jquery如何创建元素节点”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让我们进入...
    99+
    2023-06-06
  • 如何创建LINQ Expression tree节点
    小编给大家分享一下如何创建LINQ Expression tree节点,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!创建LINQ Expression tree节...
    99+
    2023-06-17
  • react如何动态增加节点
    本篇内容介绍了“react如何动态增加节点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!react动态增加节点的方法:1、通过“KmcDia...
    99+
    2023-07-04
  • 如何搭建和测试MySQL高可用框架Group Replication(组复制)
    下面讲讲关于如何搭建和测试MySQL高可用框架Group Replication(组复制),文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完如何搭建和测试MySQL高可用框架Gro...
    99+
    2024-04-02
  • jQuery如何动态创建CSS?
    ...
    99+
    2024-04-02
  • javascript动态函数如何创建
    这篇文章将为大家详细讲解有关javascript动态函数如何创建,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JavaScript可以做什么1.可以使网页具有交互性,例如响应用户点击,给用户提供更好的体验...
    99+
    2023-06-14
  • JS如何动态创建元素
    这篇文章主要介绍了JS如何动态创建元素的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JS如何动态创建元素文章都会有所收获,下面我们一起来看看吧。一、字符串拼接形式    为了更好的...
    99+
    2023-07-04
  • java如何创建动态数组
    在Java中,可以使用ArrayList类来创建动态数组。 要创建一个动态数组,可以按照以下步骤进行操作: 导入ArrayList...
    99+
    2023-10-26
    java
  • jQuery如何实现动态添加节点与遍历节点功能
    这篇文章主要介绍了jQuery如何实现动态添加节点与遍历节点功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:动态添加节点:<...
    99+
    2024-04-02
  • vue+element如何创建动态form表单
    这篇文章主要为大家展示了“vue+element如何创建动态form表单”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue+element如何创建动态form...
    99+
    2024-04-02
  • java如何创建一个动态数组
    在Java中,可以使用`ArrayList`类来创建动态数组。`ArrayList`类是Java集合框架中的一部分,它可以自动调整大...
    99+
    2023-09-15
    java
  • C#如何动态创建lambda表达式
    目录C#动态创建lambda表达式Lambda表达式动态拼接生成工具类总结C#动态创建lambda表达式 近日在使用了一下EF框架,在做多条件where查询的时候不知道怎么...
    99+
    2023-02-26
    C# lambda表达式 创建lambda表达式 C#表达式
  • c语言动态链表如何创建
    动态链表的创建主要包括以下几个步骤:1. 定义链表节点的数据结构:```ctypedef struct Node{int data;...
    99+
    2023-08-25
    c语言
  • jQuery如何实现动态创建元素?
    ...
    99+
    2024-04-02
  • 我们如何使用 GROUP BY 子句创建 MySQL 视图?
    我们可以使用GROUP BY对列中的值进行分组,并且如果需要,我们可以对该列执行计算。您可以在分组列上使用 COUNT、SUM、AVG 等函数。为了理解带有视图的 GROUP BY 子句,我们使用具有以下数据的基表“Student_info...
    99+
    2023-10-22
  • angular中如何动态删除ng-repaeat添加的dom节点
    这篇文章主要为大家展示了“angular中如何动态删除ng-repaeat添加的dom节点”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“angular中如何动态...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作