mysql 集群

1.了解mysql集群

mysql集群 还有一个名字叫主从复制

在工作中通常采用mysql主从复制,读写分离的架构。

主从复制,读写分离一般是一起使用,为了提高数据库的并发性能。

业务的扩张,如果是单机部署的mysql,会导致I/0频率过高,采用主从复制,读写分离提高数据库的可用性。

mysql 的主从复制中主要是仨个线程:master(binlog dump thread),slave(I/0 thread ,SQL thread),

主从复制的过程有不同的策略方式进行数据的同步:

1.同步策略Master会等待所有的slave都回应才会提交,这个同步性能的严重的影响

2.半同步策略:Master至少会等待一salve回应提交

3.异步策略:master不用等待slave指定的时间。

4.延迟策略:slave要落后于master指定时间

2.环境搭建

安装:

docker pull mysql/mysql-server:8.0

mkdir -p /home/data/msql/master/{confmdate}

mkdir -p /home/data/mysql/slave{conf.data}

上传数据库容器配置文件my.cnf

主数据库需要开启二进制日志 log-bin=mysql-bin

主从服务器都需要指定服务器标识 id server-id=1

创建slave

放到主机里面()

docker run -p 3899:3306 \

--name mysql-slave \

-v /home/data/mysql/slave/conf/my.cnf:/etc/my.cnf \

-v /home/data/mysql/slave/data:/var/lib/mysql \

--privileged=true \

-e MYSQL_ROOT_PASSWORD=123456 \

-d mysql/mysql-server:8.0

连接master数据库,查看数据库状态

show master status;

docker exec -it mysql-slave bash

mysql -u root -p;

放到从机里面

CHANGE MASTER TO MASTER_HOST='172.17.0.2',

MASTER_RORT=3306,

MASTER_USER='root',MASTER_PASSWORD='123456',

MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=154;

start slave;

show slave status\G;

stop slave;

reset slave all;

docker run -p 3999:3306 \

--name mysql-master\

-v /home/data/master/slave/conf/my.cnf:/etc/my.cnf \

-v /home/data/master/slave/data:/var/lib/mysql \

--privileged=true \

-e MYSQL_ROOT_PASSWORD=123456 \

-d mysql/mysql-server:8.0

到这里就是从,主机创建完成了。

进入master

dokcer exec -it mysql-master bash

再进入从机

docker exec -it mysql-slave bash

进入mysql -uroot -p

再查看主机状态 :show master status; 

给权限密码: grant all on *.* to xmg@'%' identified by '123456';

放到从服务器里面

CHANGE MASTER TO MASTER_HOST='172.17.0.3',

MASTER_RORT=3306,

MASTER_USER='root',MASTER_PASSWORD='123456',

MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=154;

查看一下服务器对不

show databases;

打开主从

star slave;

查看从状态看连接上没有

show slave status\G;

创建shop数据库

create database shop;

再use shop;

创建表 create table stu(id int primary key);

show tables;

差一个数据

insert into stu valuse(1);

insert into stu valuse(2);

然后到另一个查看一下

select * from stu;

注意:从服务器里面是不会通到主服务机里面来的

想知道他们同步?就查看它们的状态

show slave status\G;

删掉

delete from stu where id=3;

再打开

start salve;

select * from stu; //查看

发现它还是有是因为它是主机上面同步过来的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值