主从模式、集群模式,都是在一个项目中使用多个mysql节点进行存储和读取数据。
当单机模式部署,不满足安全性、高可用、高并发等需求的时候,就需要考虑主从模式或者集群模式部署。
1、主从复制指的是当主数据库中进行了update、insert、delete操作导致数据发生改变时,变化会实时同步到一个或者多个从数据库(slave)中。
2、默认情况下异步复制、无需维持长连接。
3、通过配置可以选择想要同步的库和表
?
集群最大的优点就是数据实时同步,高可用,每个节点的数据都是同步一致的,不像主从,有时会出现数据不一致,而高可用,任何一个节点宕机都不会影响业务。
集群模式有以下集中常见部署方式:
主从模式部署注意事项
docker pull mysql/mysql-server:5.7
mkdir -p /home/data/mysql/slave/{conf,data}
mkdir -p /home/data/mysql/slave/{conf,data}
上传数据库容器的配置文件my.cnf
设置主服务器 master
docker run -p 3999:3306 \
--name mysql-master \
-v /home/data/mysql/master/conf/my.cnf:/etc/my.cnf \
-v /home/data/mysql/master/data:/var/lib/mysql \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql/mysql-server:5.7
设置从服务器 slave
docker run -p 3998: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:5.7
接着查看结果
输入 dockers ps
先进入主服务器,查看主服务器的binlog 日志文件
show master status;
主服务器界面
从服务器界面
CHANGE MASTER TO MASTER_HOST='192.168.198.128', MASTER_PORT=3999, MASTER_USER='root',MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=586;
master_host=xx?????? 这里填master主机IP,除了填写住宿主机IP,还可以填写bridge网络中的IP
master_log_file=xx?? 这里填写 File 的值就是前面我们show master status;命令的执行结果
master_log_pos=xx 这里填写 Position 的值就是前面我们show master status;命令的执行结果
start slave;
show slave status\G;
这里只要看到两个参数Slave_IO_Running和Slave_SQL_Running都为true|yes,则表示复制是正常进行的, 到这里我们的主从结构也就搭建完成了
集群成功后,在mysql-master容器重启后虽然File的值和Position的值会变化,但在mysql-slave可以进行跟踪,所以不需要重新进行配置
stop slave;
?reset slave all;