,,之前写过一篇分分钟搭建MySQL组复制的测试环境,如果我们在一台服务器上想搭建一主多从的测试环境,怎么能够分分钟搞定呢,其实稍花点时间写个脚本即可搞的定,无非就是把哪些程式化的东西整合起来,化繁为简。能够提高效率才是好。
,,搭建主从的环境,我们还是准备一个配置文件init2.lst,里面主要是端口和节点标示。
24801 s1 ,Y
24802 s2 ,N
24803 s3 ,N
24804 s4 ,N
24805 s5 ,N比如上面的写法,就是我创建了5个节点,端口是第一列,第2列是节点的一个标示,生成的节点目录名就是参考这个,第3列是节点的角色,比如一主四从。主为P,从为N
统一的参数文件,这个地方是值得我们改进的地方,因为个别的配置化参数的不同,就无需指定多个参数文件,可以动态生成。#猫s2.cnf
(mysqld)
#服务器配置
datadir=$ {base_data_dir}/$ {node_name}
basedir=$ {base_dir}
端口=${港口}
套接字=$ {base_data_dir}/{node_name}/{node_name}美元。袜子
server_id=${港口}
gtid_mode=
enforce_gtid_consistency=
master_info_repository=表
relay_log_info_repository=表
binlog_checksum=没有
log_slave_updates=
log_bin=binlog
binlog_format=行
而这个功能主角就是整个脚本内容了。
脚本的内容如下:
base_dir=/usr/地方/mysql
base_data_dir=/home/数据
pri_port='猫init2。lst | grep Y | awk '{打印1美元}' '
pri_ip=127.0.0.1
pri_node='猫init2。lst | grep Y | awk '{打印$ 2}' '
函数init_node
{
端口=1美元
node_name=
2美元
primary_flag=
3美元
$ {base_dir}/bin/mysqld
——initialize-insecure basedir=$ {base_dir}
——datadir=$ {base_data_dir}/$ {node_name}
——explicit_defaults_for_timestamp
乔恩- r mysql: mysql $ {base_data_dir}/$ {node_dir}
cp $ {base_data_dir}/s2.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 -我的年代:${}港:“${港口}:g””,$ {base_data_dir}/{node_name}/{node_name}美元.cnf
乔恩- 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
mysql - p $ {base_dir}/bin/${港口},- s $ {base_data_dir}/{node_name}/{node_name} .sock 美元;- e“显示数据库”
如果[[$ {primary_flag}=' Y ']);然后
mysql - p ${港口},- s $ {base_data_dir}/{node_name}/{node_name}美元。袜子- e "
创建用户rpl_user@‘%’;
格兰特复制奴隶,MASTER_AUTO_POSITION=1”| mysql - p ${港口},- s $ {base_data_dir}/{node_name}/{node_name}美元。袜子
mysql - p ${港口},- s $ {base_data_dir}/{node_name}/{node_name}美元。袜子- e "
开始奴隶;
显示奴隶状态\ G;
“
其他
,,回声的请检查变量primary_flag
fi
}
#主要
而读一行
做
echo $ {seed_list}
init_node美元行
& lt; init2。lst有了之前的模板和基础准备,整个过程大概也就一个小时就能够在一个小时左右完成测试和练习。
,我写文章的这会儿,已经创建了快十多遍,所以分分钟绝对不是噱头。