说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正。若在阅读时有任何的问题,也可通过评论提出,本人将根据自身能力对问题进行一定的解答。
—
前言
01
—
配置前准备
1.创建两个数据库
# 创建主库容器
docker run -p 3301:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d hub.c.163.com/library/mysql
# 创建从库容器
docker run -p 3302:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -d hub.c.163.com/library/mysql复制
2.获取主库容器的ip地址
# 获取主库容器的ip地址
docker inspect mysql-master复制
# 进入主库容器
docker exec -it mysql-master bash
# 进入从库容器
docker exec -it mysql-slave bash复制
apt-get update
apt-get install vim复制
02
—
配置主库
1.编辑my.cnf配置文件
# 同一局域网内注意要唯一
server-id=100
# 开启二进制日志功能,可以随便取
log-bin=mysql-bin复制
2.重启容器
3.查看二进制日志是否开启
SHOW GLOBAL VARIABLES LIKE '%log%';
复制
4.查看主节点的server id
SHOW GLOBAL VARIABLES LIKE '%server%';
复制
5.创建有复制权限的用户slave
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%' IDENTIFIED by '123456';
# 刷新配置
FLUSH PRIVILEGES;复制
6.查看File和Position字段的值
show master status;
复制
03
—
配置从库
##设置server_id,注意要唯一
server-id=101
#开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
#relay_log配置中继日志
relay_log=edu-mysql-relay-bin复制
2.重启容器
3.进入从数据库设置主数据库信息
change master to master_host='172.17.0.5', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=856, master_connect_retry=30;
复制
4.启动主从复制
start slave;
复制
5.查看主从同步状态
show slave status \G;
复制
6.设置从库只读
# 开启只读
show global variables like "%read_only%";
# 对所有用户生效,包括super用户(不建议使用)
flush tables with read lock;
# 只对普通用户生效,如slave用户
set global read_only=1;
show global variables like "%read_only%";
# 关闭只读
unlock tables;
set global read_only=0复制
—
测试
1.主库中创建数据库
2.测试从库是否只读
文章转载自云丶言,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。