docker 安装mysql(主从复制)& 安装 redis

docker 安装mysql redis

一、安装mysql

1、从镜像仓库下载mysql镜像

docker pull mysql:5.7

2、启动mysql

docker run -p 3308:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

参数说明:
-p 端口映射,格式:主机端口:容器内端口
-v 挂载本地文件夹到docker中
-e 指定环境变量,mysql参数,指定登陆root用户的密码为root
-d 后台方式启动

3 修改mysql默认字符

vi /mydata/mysql/conf/my.cnf

写入下边的配置,修改默认字符集

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

4、重启mysql服务

docker restart mysql

二、安装mysql slave服务
2.1使用docker mysql镜像启动slave进程。

docker run -p 3307:3306 --name mysql2 \
-v /mydata/mysql2/log:/var/log/mysql \
-v /mydata/mysql2/data:/var/lib/mysql \
-v /mydata/mysql2/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

2.2 参考主配置字符集并重启

docker restart mysql2

三、配置mysql主从复制

3.1 复制流程图
在这里插入图片描述
3.2 复制过程:

  1. 主节点必须启用二进制日志,记录任何修改了数据库数据的事件。
  2. 从节点开启一个线程(I/O Thread)把自己扮演成 mysql
    的客户端,通过 mysql 协议,请求主节点的二进制日志文件中的事件;
  3. 主节点启动一个线程(dump Thread),检查自己二进制日志中的事件,跟对方请求的位置对比,如果不带请求位置参数,则主节点就会从第一个日志文件中的第一个事件一个一个发送给从节点。
  4. 从节点接收到主节点发送过来的数据把它放置到中继日志(Relay log)文件中。并记录该次请求到主节点的具体哪一个二进制日志文件内部的哪一个位置(主节点中的二进制文件会有多个,在后面详细讲解)。
  5. 从节点启动另外一个线程(sql Thread ),把 Relay log 中的事件读取出来,并在本地再执行一次。

思考:从节点需要建立二进制日志文件吗?
看情况,如果从节点需要作为其他节点的主节点时,是需要开启二进制日志文件的。这种情况叫做级联复制。如果只是作为从节点,则不需要创建二进制文件。

3.3 配置过程

主节点:

  1. 启用二进制日志。
  2. 为当前节点设置一个全局唯一的server_id。
  vi /mydata/mysql/conf/my.cnf

添加

log-bin=mysql-bin  //[必须]启用二进制日志
server-id=1        //[必须]服务器唯一ID,默认是1,一般取IP最后一段
innodb-file-per-table=ON
skip_name_resolve=ON
  1. 创建有复制权限的用户账号 REPLIACTION SLAVE,REPLIATION CLIENT, 并刷新权限;
CREATE USER 'repluser' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repluser'@'192.168.1.%' IDENTIFIED BY '123456';

FLUSH PRIVILEGES;

4、重启主节点mysql

docker restart mysql

5、检查相关配置
查看二进制日志是否开启
SHOW GLOBAL VARIABLES LIKE ‘%log%’;
在这里插入图片描述
查看主节点 serviceid
SHOW GLOBAL VARIABLES LIKE ‘%server_id%’;
在这里插入图片描述
SHOW MASTER LOGS
在这里插入图片描述
查看master状态

SHOW MASTER STATUS;

从节点:

  1. 启动中继日志。
  2. 为当前节点设置一个全局唯一的server_id。
vi /mydata/mysql2/conf/my.cnf

加入:

relay-log=relay-log
relay-log-index=relay-log.index
server-id=2
innodb_file_per_table=ON
skip_name_resolve=ON

SHOW GLOBAL VARIABLES LIKE ‘%log%’;
在这里插入图片描述
SHOW GLOBAL VARIABLES LIKE ‘%server_id%’;
在这里插入图片描述

  1. 使用有复制权限的用户账号连接至主节点,并启动复制线程。

CHANGE MASTER TO MASTER_HOST=‘192.168.1.107’,MASTER_PORT=3308,MASTER_USER=‘repluser’,MASTER_PASSWORD=‘123456’,MASTER_LOG_FILE=‘mysql-bin.000001’,MASTER_LOG_POS=918;

命令说明:
CHANGE MASTER TO
MASTER_HOST=‘192.168.1.107’, // 主节点
MASTER_PORT=3308, //主节点的端口号
MASTER_USER=‘repluser’, // 账号
MASTER_PASSWORD=‘123456’, // 密码
MASTER_LOG_FILE=‘mysql-bin.000001’, // SHOW MASTER STATUS 对应的的日志
MASTER_LOG_POS=918; // SHOW MASTER STATUS 对应的Position

  1. 查看SLAVE状态
    SHOW SLAVE STATUS
    在这里插入图片描述
  2. 启动复制线程(可以指定线程类型:IO_THREAD ,SQL_THREAD, 如果不指定,则两个都启动)
    START SLAVE;
  3. 启动后查看状态
    在这里插入图片描述
    如果出现一直是connecting, docker logs中业报2003 slave连接不上master的连接异常,请关闭主机防火墙重试。
    CentOS 7查看防火墙
    systemctl status firewalld
    firewall-cmd --state

防火墙操作

#开启
service firewalld start
#重启
service firewalld restart
#关闭
service firewalld stop

然后重启docker服务:

 systemctl restart docker.service

二、安装Redis

1、下载redis镜像

docker pull redis

2、启动redis 容器



docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf

3、设置redis 持久化到硬盘

vi /mydata/redis/redis.conf

加入

appendonly yes

4、 重启redis容器

docker restart redis

参考:
https://blog.csdn.net/daicooper/article/details/79905660

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值