Mysql 主从复制
1 基础准备
由于家境贫寒没有那么多的云资源供我操作,只能使用docker进行模拟了。拉取镜像简单得很就先不谈了。直接开整。
以下操作基于 mysql:5.7进行一主二从配置。
2 主库配置
- 运行容器
docker run -p 3306:3306 --name mysql-slaver-2 -e MYSQL_ROOT_PASSWORD=luanye-harlon@mysql -d mysql:8.0.20
- 进入容器
docker exec -it 容器id /bin/bash
- 进入配置目录
cd /etc/mysql
由于容器都是精简版本,所以没有 vim 为了方便操作配置文件,所以这里安装一下 vim
安装vim的命令:
apt-get update
apt-get install vim
- 编辑my.cnf
[mysqld]
#mysql 服务ID,保证整个集群环境中唯一,取值范围:1 – 232-1,默认为1
server-id=1
#是否只读,1 代表只读, 0 代表读写
read-only=0
#忽略的数据, 指不需要同步的数据库
#binlog-ignore-db=mysql
#指定同步的数据库
#binlog-do-db=db01
## 开启二进制日志功能,可以随便取(关键)
log-bin=master-bin
binlog-format=ROW
- 重新服务
service mysql restart
# 由于 mysql 重启,会导致 docker 容器停止运行,所以需要重启docker
exit
docker restart mysql-master
- 创建远程登录用户
docker exec -it 容器id /bin/bash
CREATE USER 'harlon'@'%' IDENTIFIED WITH mysql_native_password BY 'luanye-harlon@mysql';
#为 shenzizia 赋予权限
GRANT REPLICATION SLAVE ON *.* TO 'harlon'@'%';
3 从库配置
创建容器过程类似,这里就省略了。。。
- 编辑my.cnf
[mysqld]
## 设置server_id,注意要唯一
server-id=101
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=mysql-relay-bin
read_only=1 ## 设置为只读,该项如果不设置,表示slave可读可写
- 查看master二进制日志信息
show master status
- 查询 master 的ip
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称 | 容器id查询容器的IP
- 远程登录
change master to master_host='172.17.0.2', master_user='harlon', master_password='luanye-harlon@mysql', master_port=3306, master_log_file='mysql-bin.000002', master_log_pos=156, master_connect_retry=30;
- 查看主从同步状态
show slave status \G
- 重新设置主从设置
reset master;
3.1 二从
同上
docker run -p 6379:6379 --name redis -v /usr/local/docker/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
标签:bin,容器,Mysql,redis,主从,master,mysql,docker,Docker From: https://www.cnblogs.com/shenzizai/p/17742445.html