加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_新乡站长网 (https://www.0373zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

CentOS 7.5下Mysql Cluster 7.6.12高可用集群搭建

发布时间:2022-11-21 11:14:39 所属栏目:MySql教程 来源:
导读:  节点规划

  管理节点(1个): 10.106.224.181

  Sql节点(2个): 10.106.224.182:3306 10.106.224.183:3306

  数据节点(2个):10.106.224.182 10.106.224.183

  安装mysql cluster
  节点规划
 
  管理节点(1个): 10.106.224.181
 
  Sql节点(2个): 10.106.224.182:3306 10.106.224.183:3306
 
  数据节点(2个):10.106.224.182 10.106.224.183
 
  安装mysql cluster 软件预先准备事项
 
  Mysql cluster安装之前需要将mysql server 卸载掉mysql集群,如果mysql已经卸载,则直接安装mysqlcluster
 
  1. 删除原先的mysql 或者 mariadb(三台都卸载)
 
  [root@hadoop01 ~]# rpm -qa|grep mariadb
 
  mariadb-libs-5.5.56-2.el7.x86_64
 
  [root@hadoop01 ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
 
  [root@hadoop01 ~]# rpm -qa|grep mariadb
 
  2. 下载mysql cluster ,这里我们采用7.6 版本
 
  3. 假设每个节点都采用mysql用户来运行程序,先在各个节点上创建该用户
 
  Groupadd mysql
 
  Useradd mysql –g mysql
 
  4. Sql和数据节点10.106.224.182 10.106.224.183 下对mysql-cluster-gpl-7.6.12-el7-x86_64.tar.gz 进行解压 并安装mysql
 
  解压
 
  tar -zxvf mysql-cluster-gpl-7.6.12-el7-x86_64.tar.gz
 
  将解压的文件拷贝到/usr/local/下 并重命名为mysql-cluster7.6
 
  mv mysql-cluster-gpl-7.6.12-el7-x86_64 /usr/local/mysql-cluster7.6

  在mysql-cluster7.6目录下创建data文件夹
 
  mkdir data
 
  创建my.cnf 文件并放到/etc 下 内容如下(注意server_id 要进行区分)
 
  [client]
 
  socket=/usr/local/mysql-cluster7.6/mysql.sock
 
  port=3306
 
  [mysqld]
 
  basedir=/usr/local/mysql-cluster7.6
 
  datadir=/usr/local/mysql-cluster7.6/data
 
  socket=/usr/local/mysql-cluster7.6/mysql.sock
 
  port=3306
 
  symbolic-links=0
 
  log-error=/usr/local/mysql-cluster7.6/mysqld.log
 
  pid-file=/usr/local/mysql-cluster7.6/mysqld.pid
 
  log_bin=mysql-bin
 
  server_id=1
 
  default-storage-engine=innodb
 
  character_set_server=utf8
 
  skip-grant-tables
 
  将mysql-cluster7.6授权给mysql
 
  chown -R mysql:mysql mysql-cluster7.6
 
  初始化数据库
 
  cd /usr/local/mysql-cluster7.6/bin
 
  ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql-cluster7.6 --datadir=/usr/local/mysql-cluster7.6/data
 
  启动mysql
 
  ./mysqld_safe --user=mysql&
 
  检查是否启动
 
  ps -ef|grep mysql
 
  将mysql路径添加到/etc/profile便于指令操作
 
  source /etc/profile
 
  设置登录密码
 
  添加 skip-grant-tables 到/etc/my.cnf 中并重启mysql
 
  Kill 19417 (上图的mysql 进程是19417)
 
  ./mysqld_safe --user=mysql&
 
  mysql –u root
 
  update mysql.user set authentication_string=password('123456') where user='root';
 
  flush privileges;
 
  exit
 
  mysql -u root –p
 
  输入刚设置的密码123456
 
  alter user user() identified by '123456';
 
  创建一个授权用户
 
  grant all privileges on *.* to 'goodhope'@'%' identified by '123456' with grant option;
 
  flush privileges;
 
  exit
 
  添加到服务中去
 
  cp /usr/local/mysql-cluster7.6/support-files/mysql.server /etc/rc.d/init.d/mysqld
 
  chmod a+x /etc/rc.d/init.d/mysqld
 
  chkconfig --add mysqld
 
  systemctl enable mysqld
 
  systemctl status mysqld
 
  管理节点上安装cluster 并初始化
 
  5. 管理节点10.106.224.181 下对mysql-cluster-gpl-7.6.12-el7-x86_64.tar.gz 进行解压
 
  tar -zxvf mysql-cluster-gpl-7.6.12-el7-x86_64.tar.gz
 
  6. 10.106.224.181开始安装mysql cluster
 
  mkdir /usr/local/mysql-cluster7.6
 
  mv mysql-cluster-gpl-7.6.12-el7-x86_64/* /usr/local/mysql-cluster7.6/
 
  chown -R mysql:mysql /usr/local/mysql-cluster7.6
 
  7. 创建config.ini 和 管理节点配置目录 文件目录(后面初始化管理节点会用到)
 
  创建目录为管理节点初始化使用(放置集群二进制配置文件)
 
  mkdir /usr/local/mysql-cluster7.6/cluster-configdir
 
  chown mysql:mysql /usr/local/mysql-cluster7.6/cluster-configdir
 
  创建文件目录
 
  mkdir /usr/local/mysql-cluster7.6/data
 
  chown mysql:mysql /usr/local/mysql-cluster7.6/data
 
  创建配置文件
 
  cd /usr/local/mysql-cluster7.6/
 
  vi config.ini
 
  内容如下:
 
  [ndbd default]
 
  NoOfReplicas=2 #数据写入数量。2表示两份
 
  DataMemory=512M #配置数据存储可使用的内存
 
  IndexMemory=180M #索引给180M
 
  [ndb_mgmd]
 
  nodeid=1
 
  HostName=10.106.224.181 #管理节点的IP地址
 
  DataDir=/usr/local/mysql-cluster7.6/data #管理节点的日志
 
  [ndbd]
 
  nodeid=2
 
  HostName=10.106.224.182
 
  DataDir=/usr/local/mysql-cluster7.6/data #mysql数据存储路径
 
  [ndbd]
 
  nodeid=3
 
  HostName=10.106.224.183
 
  DataDir=/usr/local/mysql-cluster7.6/data
 
  [mysqld]
 
  nodeid=4
 
  HostName=10.106.224.182
 
  [mysqld]
 
  nodeid=5
 
  HostName=10.106.224.183
 
  8. 初始化管理节点
 
  /usr/local/mysql-cluster7.6/bin/ndb_mgmd --initial --ndb-nodeid=1 -f /usr/local/mysql-cluster7.6/config.ini --configdir=/usr/local/mysql-cluster7.6/cluster-configdir
 
  (#--initial:第一次启动时加上,其它时候不要加,不然会数据清空,除非是在备份、恢复或配置变化后重启时)
 
  返回结果如下:
 
  MySQL Cluster Management Server mysql-5.7.28 ndb-7.6.12
 
  2019-12-11 16:42:36 [MgmtSrvr] WARNING -- at line 4: [DB] IndexMemory is deprecated, use Number bytes on each ndbd(DB) node allocated for storing indexes instead
 
  该集群版本使用mysql是5.7.28 ,另外我们从返回警告信息看到IndexMemory 后续会针对各个db进行配置,而不是统一配置了,这个比较灵活了
 
  查看二进制配置路径
 
  cd cluster-configdir/
 
  9. 检查是否正常启动 ndb_mgmd
 
  ps -ef |grep ndb_mgmd
 
  10. 编写启动sh脚本如下
 
  vi mysql-cluster-start.sh
 
  ndb_mgmd --ndb-nodeid=1 -f /usr/local/mysql-cluster7.6/config.ini --configdir=/usr/local/mysql-cluster7.6/cluster-configdir
 
  授权执行权限
 
  chmod 700 mysql-cluster-start.sh
 
  11. 进入bin目录查看集群状态
 
  ./ndb_mgm
 
  Show
 
  配置 数据和mysql节点
 
  12. 修改10.106.224.182 和10.106.224.183 上my.conf 文件
 
  [mysqld]
 
  ndbcluster #使用ndb集群引擎
 
  ndb-connectstring=10.106.224.181 #指定管理集群的ip地址,多个以,分隔
 
  default-storage-engine=ndbcluster #设置默认引擎
 
  [mysql_cluster]
 
  ndb-connectstring=10.106.224.181
 
  13. 启动ndbd
 
  /usr/local/mysql-cluster7.6/bin/ndbd --initial
 
  注意第一初始化才需要 –initial, 后面启动去掉 –initial 就可以
 
  ps -ef |grep ndbd
 
  14. 登录10.106.224.181 查看集群状态
 
  /usr/local/mysql-cluster7.6/bin/ndb_mgm
 
  show
 
  关闭和开启集群
 
  15. 关闭集群
 
  先关闭管理节点(10.106.224.181)
 
  ndb_mgm -e shutdown
 
  执行完成之后管理节点会关闭,数据节点也会关闭,但SQL节点不会,也就是数据库服务需要手动到每一台服务器上停止以保证数据同步)
 
  到182 和183 上关闭mysql
 
  16. 开启集群
 
  顺序为 管理节点→数据节点→SQL节点。
 
  10.106.224.181启动管理节点(使用我们创建的sh脚本)
 
  182 和183 上启动数据节点
 
  /usr/local/mysql-clester7.6/bin/ndbd
 
  systemctl start mysqld
 
  systemctl status mysqld
 
  17. 登录管理器 查看集群状态
 
  测试机器同步
 
  18. 测试数据同步
 
  182 上操作
 
  create database test_cluster;
 
  use test_cluster;
 
  CREATE TABLE `test_cluster`.`new_table` (
 
  `id` INT NOT NULL AUTO_INCREMENT,
 
  `namne` VARCHAR(50) NULL,
 
  PRIMARY KEY (`id`));
 
  insert into new_table(namne) values('this is a test for cluster');
 
  183 上进行查询
 
  select *from test_cluster.new_table
 
  到此mysql 集群安装完成
 

(编辑:开发网_新乡站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!