如何动态创建MySQL Group Replication的细节
发布时间:2021-12-24 07:09:08 所属栏目:MySql教程 来源:互联网
导读:这篇文章主要为大家展示了如何动态创建MySQL Group Replication的节点,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下如何动态创建MySQL Group Replication的节点这篇文章吧。 首先说两个配置文件。这个文件是动
这篇文章主要为大家展示了“如何动态创建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 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的节点”这篇文章的所有内容,感谢各位的阅读! ![]() (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |