数据库集群

一、

      

集群概述:mysql复制技术

         集群目的:负载均衡(解决高并发)

                  高可用HA(服务可用性)

                  远程灾备(数据有效性)

         类型:M主服务器

               M-S主服务器,从服务器

               M-S-S 增加从服务器

               M-M 互为备份

               M-M-S-S 双主双从

实验准备:

   关闭防火墙

   关闭selinux

   全新服务器

   全新mysql57

   域名解析

集群案例:一主一从

  主服务器1:master1

#vim  /etc/hosts

   192.168.202.149    master1

   192.168.202.150    master2

#systemctl  restart  mysqld

#grep  password   /var/log/mysqld.log

#mysqladmin  -uroot  -p”临时密码”    password  “QianFeng@123”

登录数据库

#mysql  -uroot  -p”QianFeng@123”

>create  database  master1db;

>create  table  master1db.master1tab ;

> insert  into master1db.master1tab    values(111);

> insert  into    master1db.master1tab  values(222);

设置数据库:

vim  /etc/my.cnf

    log_bin

    server-id=1

    gtid_mode=ON

    enforce_gtid_consistency=1

授权:grant replication slave,replication client on *.* to 'rep'@'192.168.202.%' identified by 'QianFeng@123';

flush privileges;

备份:mysqldump -p'QianFeng@123' --all-databases --single-transaction --master-data=2 --flush-logs > `date +%F-%H`-mysql-all.sql

远程拷贝:scp   备份文件    master2:/tmp

模拟数据变化:进入数据库插入数据333和444

> insert  into    master1db.master1tab  values(333),(444);

主服务器2:master2

   #vim  /etc/hosts

  192.168.202.149   master1

192.168.202.150     master1

 #systemctl  restart  mysqld

#grep  password   /var/log/mysqld.log

#mysqladmin  -uroot  -p”临时密码”    password  “QianFeng@123”

 1.检测是否可用:mysql  -h  matser1  -urep  -p’QianFeng@123’

 2.启动二进制日志:服务id,gtid :

          #vim  /etc/my.cnf

             log_bin

             server-id=2

             gtid_mode=ON

             enforce_gtid_consistency=1

     #systemctl  restart  mysqld

3.恢复手动数据

  >set  sql_log_bin=0

  >source   /tmp/备份文件

      >select  *   from   master1db.master2tab; 

此时恢复的是备份文件之前的内容111   222

  4.设置主服务器

     >change master to

master_host='master1',

master_user='rep',

master_password='QianFeng@123',

master_auto_position=1;

>start slave;

>show slave status\G;

查看是否出现两个yes , 返回主服务器(master1)更新数据,在从服务器(master2)观察是否同步。

截止到这我们设置好了,master1为master2的属主

续接上面内容我们设置两主:即设置master2为master1属主

主服务器2数据库上退出一下(由于上面临时关闭了二进制),然后再次进入授权

>grant replication slave, replication  client on *.* to 'rep'@'192.168.202.%'  identified by 'QianFeng@123';

> flush privileges;

主服务器1上设置主服务器:

   >change master to

master_host='master2',

master_user='rep',

master_password='QianFeng@123',

master_auto_position=1;

>start slave;

>show slave status\G;

观察是否有两个yes,双方互相同步成功,双主设置完成。

设置双从

进入主服务器1,主服务器2 增加两台从服务的域名解析

vim  /etc/hosts 

   192.168.202.152   slave1

   192.168.202.153    slave2

注意:两台都要增加解析

  1. 同步现有数据库

在两台主服务器数据库上 备份文件:

# mysqldump -p'QianFeng@123' --all-databases --single-transaction --master-data=2  --flush-logs > `date +%F`-mysql-all.sql

远程传包:

# scp    -r 备份文件    slave1:/tmp

# scp -r  备份文件      slave2:/tmp

  Slave1: # mysql -p'QianFeng@123' < /tmp/备份文件

  Slave2:# mysql -p'QianFeng@123' < /tmp/备份文件

一定要同步数据后再去设置两台从服务器的属主

  从服务器1:slave1

(2)启动从服务器ID,gtid

     vim /etc/my.cnf

server-id=3

gtid_mode=ON

enforce_gtid_consistency=1

master-info-repository=TABLE

relay-log-info-repository=TABLE

重启数据库:

systemctl restart mysqld

  1. 设置属主

设置属主master1

mysql> change master to

master_host='master1',

master_user='rep',

master_password='QianFeng@123',

master_auto_position=1 for channel 'master1';

 

设置属主master2

 mysql> change master to

master_host='master2',

master_user='rep',

master_password='QianFeng@123',

master_auto_position=1 for channel 'master2';

      从服务器2:slave2

(2)启动从服务器ID,gtid

     vim /etc/my.cnf

server-id=4

gtid_mode=ON

enforce_gtid_consistency=1

master-info-repository=TABLE

relay-log-info-repository=TABLE

重启数据库:

systemctl restart mysqld

  1. 设置属主

设置属主master1

mysql> change master to

master_host='master1',

master_user='rep',

master_password='QianFeng@123',

master_auto_position=1 for channel 'master1';

 

设置属主master2

 mysql> change master to

master_host='master2',

master_user='rep',

master_password='QianFeng@123',

master_auto_position=1 for channel 'master2';

       

 

代理技术:

集群需要统一的入口

集群需要负载均衡

集群读写分离

五台服务器都要做域名解析:

   Vim  /etc/hosts

补出:192.168.202.154   mycat

  1. 配置Java环境:

(1)甲骨文官网下载jdk压缩包

(2)解压包

  #tar   xf   包名   -C   /usr/local

(3)软连接,可以进行多版本切换

         #ln  -s   /usr/local/解压包  /usr/local/java

         (4)vim  /etc/profile

            补出:JAVA_HOME=/usr/local/java

 

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME PATH

      (5)生效配置

         #source   /etc/profile

       (6)查看版本

        #java   -version 

图解Java包下载:

2、下载mycat (www.mycat.org.cn)

   1.下载mycat包

   2.解压包

    #tar  xf   包名   -C    /usr/local

    #ls  /usr/local/mycat

图解下载mycat的包:

 

      

      

     

     

配置mycat的前端:

     注释掉多余的用户:(第95-99行)

启动mycat管理员:

配置mycat后端:

schema name:mycat维护的集群名称。

datanode:后方节点群的名称。

datahost:后方节点群的主机名称。

writehost:写主机

readhost:读主机

注释:在本例中switchType值设置为1,表示自动切换,某些对主从数据一致要求较高的场景,建议使用2判断主从状态后再切换

切换的触发条件为主节点mysql服务崩溃或停止

slaveThreshold 主从的延迟在多少秒以内,则把读请求分发到这个从节点,否则不往这个节点分发,假设生产环境能容忍的主从延时为60秒,则设置此值为60,此例中设置值为100

 

以双主双从为例:

   三、配置mysql群

    在master1 上:grant all on *.* to 'mycatproxy'@'192.168.202.154' identified by 'QianFeng@123';

  注:192.168.202.154  是mycat 的ip号

 四、启动Mycat

   在mycat服务器上

1,/usr/local/mycat/bin/mycat start  

注: Starting Mycat-server...

启动成功,否则就是配置Mycat后端语法错误。

  1. netstat  -anpt | grep java

监测端口是否启动

[root@localhost ~]# netstat  -anpt | grep java

tcp        0      0 127.0.0.1:32000         0.0.0.0:*               LISTEN      3487/java          

tcp6       0      0 :::1984                 :::*                    LISTEN      3487/java          

tcp6       0      0 :::8066                 :::*                    LISTEN      3487/java          

tcp6       0      0 :::59268                :::*                    LISTEN      3487/java          

tcp6       0      0 :::9066                 :::*                    LISTEN      3487/java          

tcp6       0      0 :::44500                :::*                    LISTEN      3487/java           

tcp6       0      0 127.0.0.1:31000         127.0.0.1:32000         ESTABLISHED 3487/java 

  1. ps aux | grep mycat

       检测进程是否启动

  1. yum install -y mariadb

安装客户端

  1. mysql -hmycat -uroot -p123456 -P8066
  2. show databases;

MySQL [(none)]> show databases;

+----------+

| DATABASE |

+----------+

| tianyun  |

+----------+

1 row in set (0.01 sec)

注意:看到的数据库是虚拟的。

      注意后方mysql群中应该创建该库

  在mysql-master1上创库创表

     create database  tianyun;

create table tianyun.t1 (id int);

五、Mycat使用后方数据库

select * from tianyun.t1;

insert into tianyun.t1 values(3);

在mysql集群能 查询到数据。实验完成。

多库时如何设置mycat

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值