文章目录
第一章 MySQL主从集群搭建
前言
本⽂主要讲解如何在本地搭建MySQL主从集群,采⽤Docker部署,mysql版本5.7。所以在搭建前可以
先学习⼀下Docker相关知识。
一、拉取镜像
# 拉取镜像
docker pull mysql:5.7
# 查看镜像相关信息
docker images
# 查看正在运⾏的镜像
docker ps
二、主库搭建
1.运⾏主库实例镜像
docker run --name mysql-master --privileged=true -v
/usr/local/docker/mysql/master-data:/var/lib/mysql -p 3307:3306 -e
MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
- /usr/local/docker/mysql路径是我本地挂载mysql⽬录,进⾏映射
- 3307指运行的端口
- MYSQL_ROOT_PASSWORD指运行的密码
- mysql:5.7指我刚刚拉下来的镜像
docker ps
9df6130f9189 mysql:5.7 "docker-entrypoint.s…" 6 hours ago Up About an
hour 33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp mysql-master
2.mysql配置
2.1 进入容器
# 通过容器id⽅式,这⾥的id就是上⾯docker ps中展示的id
docker exec -it 9df6130f9189 /bin/bash
# 通过容器名称⽅式,这⾥的名称就是创建容器时指定的名称,也就是mysql-master
docker exec -it mysql-master /bin/bash
2.2 下载vim
# 下载vim
apt-get update
apt-get install vim
2.3 修改配置⽂件
cd /etc/mysql
vim mysq.cnf
2.4 添加配置信息
[mysqld]
server-id=3307 ##⾃定义id号,不要重
log-bin=mysql-bin ##开启⼆进制⽇志
2.5 重新启动
service mysql restart
docker start mysql-master
2.6 查看master节点binlog状态
# 进⼊容器
docker exec -it mysql-master /bin/bash
# 连接mysql
mysql -uroot -p123456
# 查看binlog状态
show master status;
2.7 记录File和Position信息
File表示主节点binlog⽇志⽂件的名称,Position表示数据的偏移量,表示从节点需要从mysqlbin.000002⽂件的10238位置开始同步数据。
File:mysql-bin.000002
Position:10238
2.8 创建账号
我们需要在主节点创建⼀个账号⽤来给从库做主从复制,并且赋予权限。
grant replication slave on *.* to 'test'@'%' identified by '123456';
flush privileges;
三、从库搭建
从库搭建跟主库搭建的过程类似,主要区别就是配置⽂件不同以及需要建⽴主从同步连接这个操作。
grant replication slave on *.* to 'test'@'%' identified by '123456';
flush privileges;
1.运⾏从库实例镜像
docker run --name mysql-slave --privileged=true -v
/usr/local/docker/mysql/slave-data:/var/lib/mysql -p 3308:3306 -e
MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
2.mysql配置
2.1 进⼊容器
docker exec -it mysql-slave /bin/bash
2.2 下载vim
# 下载vim
apt-get update
apt-get install vim
2.3 修改配置⽂件
cd /etc/mysql
vim mysq.cnf
2.4 添加配置信息
[mysqld]
server-id=3308 ##id号,⾃定义,不要重就⾏
log-bin=mysql-slave-bin ##开启⼆进制⽇志功能
relay_log=edu-mysql-relay-bin ##配置中继⽇志
2.5 重新启动
service mysql restart
docker start mysql-master
2.6 配置master的连接
docker exec -it mysql-slave /bin/bash
mysql -u root -p123456
change master to master_host='192.168.3.101', master_user='test',
master_password='123456', master_port=3307, master_log_file='mysql-bin.000002',
master_log_pos=5288, master_connect_retry=30;
master_host是主节点的ip地址,也就是我本机的ip地址;master_user和master_password是主节点创
建的账号密码,⽤来主从复制使⽤;master_port是主节点的端⼝;master_log_file是主节点的binlog⽇
志⽂件名;master_log_pos是主节点binlog⽇志偏移量;master_connect_retry主从同步连接失败多久
重试。
2.7 查看连接状态
# \G是为了换⾏显示
show slave status \G;
# 停⽌主从复制
stop slave
# 开启
start slave;
当Slave_IO_Running和Slave_SQL_Running都是Yes表示主从成功配置完成。
四、验证主从同步
使⽤mysql连接⼯具分别连接主库和从库,在主库中创建⼀个数据库,新建⼀张表,插⼊⼀条数据,然
后在从库中查看是否同步新增数据库、表和数据。
FAQ
⼀、主从同步Slave_IO_Running和Slave_SQL_Running为No.
如果是Slave_IO_Running为No,可以检查⼀下连接主节点的配置信息,ip、端⼝、⽤户名密码、权限、
binlog⽇志⽂件命令和偏移量等。
如果是Slave_SQL_Running为No,可以通过以下命令解决。
stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;
⼆、Docker启动mysql报错。
可以通过以下命令查看镜像命令进⾏排查。
docker logs --since 30m CONTAINER_ID
docker logs -f -t --tail ⾏数 容器名