集群搭建主从

主从复制:
1、双主复制+主从复制+读写分离:高可用、容灾、压力分担

2、分片:突破数据量限制【就是多套 方案1,各自范围内,由一个节点控制最终请求到达哪套 主从节点】

InnoDB Cluster有单主模式、双主模式

docker 安装模拟Mysql 主从复制 集群
1、下载mysql镜像

2、创建Master实例并启动,指定密码为root
docker run -p 3307:3306 --name mysql-master \
-v /mydata/mysql/master/conf:/etc/mysql \
-v /mydata/mysql/master/log:/var/log/mysql \
-v /mydata/mysql/master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

参数说明
-p 3307:3306:将容器的3306端口映射到主机的3307端口
-v/mydata/mysal/master/conf:/etc/mysql:将配置文件夹挂在到主机
-v/mydata/mysal/master/log:/var/log/mysal:将日志文件夹挂载到主机
-v/mydata/mysal/master/data:/ar/lib/mysal:将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码

3、创建slave实例并启动
docker run -p 3317:3306 --name mysql-slaver-01 \
-v /mydata/mysql/slaver/conf:/etc/mysql \
-v /mydata/mysql/slaver/log:/var/log/mysql \
-v /mydata/mysql/slaver/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

4、修改master配置
vi /mydata/mysql/master/conf/my.cnf
注意:skip-name-resolve一定要加,不然连接mysql会很慢

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

server-id=1
log-bin=mysql-bin
read-only=0
binlog-do-db=gulimall_oms
binlog-do-db=gulimall_pms
binlog-do-db=gulimall_sms
binlog-do-db=gulimall_ums
binlog-do-db=gulimall_wms
binlog-do-db=gulimall_admin

replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=performance_schema
replicate-ignore-db=information_schema

5、修改salver配置
vi /mydata/mysql/slaver/conf/my.cnf
注意:skip-name-resolve一定要加,不然连接mysql会很慢

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

server-id=2
log-bin=mysql-bin
read-only=1
binlog-do-db=gulimall_oms
binlog-do-db=gulimall_pms
binlog-do-db=gulimall_sms
binlog-do-db=gulimall_ums
binlog-do-db=gulimall_wms
binlog-do-db=gulimall_admin

replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=performance_schema
replicate-ignore-db=information_schema

6、重启:docker restart mysql-master mysql-slaver-01
为master授权用户来他的同步数据
1、进入master容器
docker exec -it mysql-master /bin/bash
2、mysql -uroot -proot

	1)授权root可以远程访问(主从无关,方便我们可以远程链接mysql)
	grant all privileges on *.* to 'root'@'%' IDENTIFIED BY 'root' with grant option;
	flush privileges;

	2)添加同步用户,链接master数据库,在master授权一个 复制权限的 用户
	GRANT REPLICATION SLAVE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';

3、查看master状态,记录File名字:mysql-bin.000001,后面会用到
show master status;
配置slaver同步master数据
1、进入slaver容器
docker exec -it mysql-slaver-01 /bin/bash
2、mysql -uroot -proot

	1)授权root可以远程访问(主从无关,方便我们可以远程链接mysql)
	grant all privileges on *.* to 'root'@'%' IDENTIFIED BY 'root' with grant option;
	flush privileges;
	2)设置主库连接  host ip代指master节点的ip地址
	change master to master_host='192.168.33.11',master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3307;
	
3、启动从库同步
start slave;

4、查看从库状态
show slave status;

分库分表+读写分离

redis集群搭建:

数据分区
33从,从为了同步备份,主进行slot数据分片
1、高可用【主机宕机从机替代】
2、数据分片【槽机制】
3、容灾备份【主从备份】
4、单点读取压力分担【这里应该没有读写分离,分开读写操作,让读高效进行】

一、脚本:创建6份配置文件+启动6份redis  进入redis目录下
for port in $(seq 7001 7006);  \
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf
cat << EOF > /mydata/redis/node-${port}/conf/redis.conf
port ${port}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.33.11
cluster-announce-port ${port}
cluster-announce-bus-port 1${port}
appendonly yes
EOF

docker run -p ${port}:${port} -p 1${port}:1${port} --name redis-${port}  \
-v /mydata/redis/node-${port}/data:/data \
-v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d redis:5.0.7 redis-server /etc/redis/redis.conf; \
done
【这里去掉了--restart always内存不够 】

二、建立集群,进入一个master节点【每个节点1个副本】
然后从6个节点挑出3个主节点,然后给每个主节点挑一个从节点   搭建集群
docker exec -it redis-7001 /bin/bash 

redis-cli  --cluster create 192.168.33.11:7001 192.168.33.11:7002 192.168.33.11:7003 192.168.33.11:7004 192.168.33.11:7005 192.168.33.11:7006 --cluster-replicas 1

三、测试集群
1、连入集群,要加-c   测试一下是否搭建成功
redis-cli -c -h 192.168.33.11 -p 7001
2、设置一些值查看有什么不同【重定向到其他槽】
set hello 111
set a aaa

四、模拟宕机
1、使用redis客户端连接一个master和slaver,可以查看到数据拷贝现象
2、cluster info:查看当前集群状态
3、cluster nodes:查看集群节点信息
4、模拟宕机docker stop redis-7001
5、cluster info:7001宕机,7006从机晋升主机
6、docker start redis-70017001成为7006的从节点




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值