分分钟搭建MySQL一主多从环境(r12笔记第31天)

  

  ,,之前写过一篇分分钟搭建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有了之前的模板和基础准备,整个过程大概也就一个小时就能够在一个小时左右完成测试和练习。   

  

  ,我写文章的这会儿,已经创建了快十多遍,所以分分钟绝对不是噱头。   

  

  
  

  

  
  

分分钟搭建MySQL一主多从环境(r12笔记第31天)