1 安装mysql的镜像
如果服务器较少,为了充分发挥现有服务器的利用率,可以使用容器化技术来安装mysql。
如果服务器没有docker,需要先安装docker
yum install -y docker
docker安装后,启动服务
service docker start
下载mysql 5.7 版本的docker镜像
docker pull mysql:5.7
2 启动mysql服务
启动主节点的mysql服务
--name 指定容器名
-p 指定端口,作为数据库3306 的映射端口
-e 设置环境变量,在这里为数据库root指定密码
-d 在后台运行容器
docker run --name master -p 3366:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
启动从节点的mysql服务
docker run --name slave -p 3377:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
通过命令 docker ps 可以查看到当前两个节点的 mysql 服务都已启动。
3 主从配置
3.1 修改主节点配置
进入到容器内部
docker exec -it master /bin/bash
进入容器后,因为要修改配置文件内容,而容器中默认没有 vim 编辑器,需要手动进行安装,在容器中可以直接执行
yum install -y vim
修改配置文件,有些地方的配置文件可能位置不同,猜测可能是因为容器的版本不同。
vim /etc/my.cnf
在[mysqld]下增加以下两项配置
log-bin=bin_logserver-id=1
修改完成并保存。
然后退出容器,并使用 docker 指令重启容器。
docker restart master
3.2 修改从节点配置
进入容器内部
docker exec -it slave /bin/bash
安装vim编辑器,与master部分相同,因为是来自同一个镜像包,所以默认也没有该编辑器。
yum install -y vim
修改配置文件
vim /etc/my.cnf
在mysqld下增加以下两项配置,这里的 server-id 和 master 必须不同。
log-bin=bin_logserver-id=2
修改完成并保存。
然后退出容器,并使用 docker 指令重启容器。
docker restart slave
4 创建主从复制
4.1 查看主节点IP地址
通过 docker inspect 指令查看 master 节点的IP地址
docker inspect master
4.2 主节点配置
进入到主节点mysql命令行,创建用于同步binlog文件的用户并分配权限
进入容器
docker exec -it master /bin/bash
进入mysql命令行
mysql -uroot -p123456
创建同步binlog的用户,并分配权限
grant replication slave on *.* to 'slave_user'@'%' identified by '123456';
查看主节点binlog信息
show master status;
4.3 从节点配置
进入容器
docker exec -it slave /bin/bash
进入mysql
mysql -uroot -p123456
使用4.1得到的master节点IP地址,及4.2中得到的master节点binlog信息,在从节点中进行同步设置
change master to master_host='172.17.0.2',master_user='slave_user',master_password='123456',master_log_file='bin_log.000001',master_log_pos=443;
启动主从复制
start slave;
查看从节点主从复制的状态
show slave status G;
可以看到主从复制机制已经建立成功。
5 验证主从复制
在主节点创建数据库、数据表,并插入一条记录
在从节点中查询该条记录
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!