zoukankan      html  css  js  c++  java
  • mysql 集群+主从同步

    SQL节点: 给上层应用层提供sql访问。

    管理节点(MGM):  管理整个集群。 启动,关闭集群。 通过ndb_mgmd命令启动集群

    存储/数据节点: 保存cluster中的数据。  数据节点,可以提供副本。实现数据冗余。

    NDB引擎:是一种 “内存中”的存储引擎 , 它具有可用性高和数据一致性好的特点。

    缺陷

    • 基于内存,数据库的规模受集群总内存的大小限制
    • 基于内存,断电后数据可能会有数据丢失,这点还需要通过测试验证。
    • 多个节点通过网络实现通讯和数据同步、查询等操作,因此整体性受网络速度影响,因此速度也比较慢

    2.2 优点

    • 多个节点之间可以分布在不同的地理位置,因此也是一个实现分布式数据库的方案。
    • 扩展性很好,增加节点即可实现数据库集群的扩展。
    • 冗余性很好,多个节点上都有完整的数据库数据,因此任何一个节点宕机都不会造成服务中断。

    Mysql cluster的下载地址:http://dev.mysql.com/downloads/cluster/

    在我们做的实验中mysql cluster集群各机器角色如下分配:

    mysql管理结点:xuegod63.cn   IP:192.168.31.130

    mysql 数据结点:xuegod63.cn   IP:192.168.31.130

    mysql 数据结点:xuegod64.cn   IP:192.168.31.131

    msyql SQL结点:xuegod63.cn   IP:192.168.31.130

    msyql SQL结点:xuegod64.cn   IP:192.168.31.131

    将MySQL-Cluster-gpl-7.3.7-1.el6.x86_64.rpm-bundle.tar上传到130,131主机

    实战:MySQL集群搭建

    1.mysql旧版本清除

    yum -y remove mysql

    rpm -qa | grep mysql*

    对于找到的2个剩余mysql包,请按照如下的命令格式予以删除:

    rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64

    2.mysql cluster版本安装准备

     [root@ygy130 ~]# tar -xvf MySQL-Cluster-gpl-7.3.7-1.el6.x86_64.rpm-bundle.tar 

    [root@yu131 yy]# tar -xvf MySQL-Cluster-gpl-7.3.7-1.el6.x86_64.rpm-bundle.tar 

    3.创建文件夹

    (分如下3个类来创建对应的文件夹)

    数据结点存放数据,: [root@ygy130 ~]# mkdir /var/lib/mysql

    管理节点: [root@ygy130 ~]# mkdir /var/lib/mysql-cluster     SQL节点:可不用  文件夹授权

    进程DIR:     [root@ygy130 ~]# mkdir /var/run/mysqld   

    [root@yu131 yy]# mkdir /var/run/mysqld

    4.安装mysql集群软件包

     [root@ygy130 ~]# rpm -ivh MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm 

    [root@ygy130 ~]# rpm -ivh MySQL-Cluster-client-gpl-7.3.7-1.el6.x86_64.rpm

    [root@yu131 yy]# rpm -ivh MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm 

    [root@yu131 yy]# rpm -ivh MySQL-Cluster-client-gpl-7.3.7-1.el6.x86_64.rpm

    注意:当安装完毕MySQL-Cluster-server-gpl包后,将出现如下提示信息,提醒我们整个cluster安装后的初次超级账户密码存在/root/.mysql_secret这个文件当中。

    5.赋权限

      [root@ygy130 ~]# chown mysql:mysql -R /var/lib/mysql

     [root@ygy130 ~]#  chown mysql:mysql -R /var/lib/mysql-cluster/

     [root@ygy130 ~]# chown mysql:mysql -R  /usr/mysql-cluster/

     [root@ygy130 ~]#  chown mysql:mysql -R /var/run/mysqld/

     [root@ygy130 ~]# chown mysql:mysql -R /usr/mysql-cluster/

    [root@yu131 yy]# chown mysql:mysql -R /var/run/mysqld

     

     搭建mysql集群

    [root@ygy130 ~]# vim /var/lib/mysql-cluster/config.ini 

    [ndbd default]
    NoOfReplicas=2    #数据写入数量。2表示两份
    DataMemory=200M
    IndexMemory=100M  #索引给100M


    [ndb_mgmd]
    id=1
    datadir=/var/lib/mysql-cluster   # 管理结点的日志

    HostName=192.168.31.130    #管理结点的IP地址。本机IP
    ###### data node options:
    [ndbd]
    HostName=192.168.31.130
    DataDir=/var/lib/mysql          #mysql数据存储路径

    id=2
    [ndbd]
    HostName=192.168.31.131  
    DataDir=/var/lib/mysql 
    id=3
    # SQL node options: #关于SQL结点
    [mysqld]
    HostName=192.168.31.130
    id=4
    [mysqld]
    HostName=192.168.31.131
    id=5

    ~
    数据节点+SQL节点配置文档 + 主从同步

    [root@ygy130 ~]# vim /etc/my.cnf

    [mysqld]
    datadir=/var/lib/mysql              #mysql数据存储路径  数据节点(配置要加)

    ndbcluster                #启动ndb引擎

    ndb-connectstring=192.168.31.130    # 管理节点IP地址 

    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    [mysql_cluster]
    ndb-connectstring=192.168.31.130       #管理节点IP地址
    [mysqld]
    log-bin=mysql-bin-master         #配置主从同步
    server-id = 10

    [root@yu131 yy]# vim /etc/my.cnf

    [mysqld]
    datadir=/var/lib/mysql
    ndbcluster
    ndb-connectstring=192.168.31.130
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    [mysql_cluster]
    ndb-connectstring=192.168.31.130
    [mysqld]
    log-bin=mysql-bin-slave
    server-id = 11
    ~

    MySQL Cluster启动

     [root@ygy130 ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini

    [root@ygy130 ~]# ndbd --initial              第一次启动加--initial  

    [root@yu131 yy]# ndbd --initial

    启动SQL结点服务

    [root@yu131 yy]# mysqld_safe --defaults-file=/etc/my.cnf  &

    [root@ygy130 ~]# mysqld_safe --defaults-file=/etc/my.cnf  &

     

    设置密码及相关mysql设置

    [root@ygy130 ~]# cat /home/yy/.mysql_secret

    [root@ygy130 ~]# mysql_secure_installation

    [root@yu131 yy]# cat  /root/.mysql_secret 

    [root@yu131 yy]# mysql_secure_installation

    查看mysql 集群状态:

    [root@ygy130 ~]# ndb_mgm

    130

    mysql> grant replication slave on *.* to slave@192.168.31.131 identified by "123456";

    mysql> flush privileges;

    131

    mysql>change master to master_host='192.168.31.130',master_user='slave',master_password='123456';

    mysql> start slave; 

    mysql> show slave statusG  查看状态

    130

     mysql> create database yy;

    mysql> use yy

     mysql> create table tt(id int);

    mysql> insert into tt values(11);

    131

    mysql> use yy

    mysql> select * from tt;

     

     

    关闭服务

    [root@ygy130 ~]#  ndb_mgm

    -- NDB Cluster -- Management Client --

    ndb_mgm> shutdown

    ndb_mgm> exit

    [root@ygy130 ~]# ps -axu | grep  ndbd           #查看不到,说明数据节点已经被关

    [root@ygy130 ~]# kill -9 pid号

    [root@yu131 yy]# ps -axu | grep  ndbd           #查看不到,说明数据节点已经被关

    [root@yu131 yy]# kill -9 pid号

    启动服务

    [root@ygy130 ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini

    [root@ygy130 ~]# ndbd

    [root@yu131 yy]#  ndbd

    [root@yu131 yy]# mysqld_safe --defaults-file=/etc/my.cnf  &

    [root@ygy130 ~]# mysqld_safe --defaults-file=/etc/my.cnf  &

     

    备注:集群做了数据库的同步,没有做数据库表的同步,具体还是没有理解这样做的意义,如果集群不能主从同步,那么之前画的那个图就不准确。

      因此这里自定义加的数据库表的同步:采用主从同步的方式。

      后期做成M-s s-M,这样无论修改哪一边的数据,都能同步了。

     

     

     

  • 相关阅读:
    Linux 安装jdk 报错 Error: could not find libjava.so Error: Could not find Java SE Runtime Environment.
    k8s 挂载ceph rbd
    spinnaker结合表达式实现发版时下拉列表选择docker image
    istio环境集成zipkin
    istio 日志打印 request body 和respon body
    jenkins任务中无法执行sudo,管理员操作
    ansible根据shell命令返回值,判断是否应该急继续往下执行
    ReplicaSetController、ReplicationController
    kubeproxy
    PodGCController
  • 原文地址:https://www.cnblogs.com/yuguangyuan/p/5990968.html
Copyright © 2011-2022 走看看