docker mysql 主备_docker 下的 Mysql 主从复制

Docker 环境 +MySQL 主从复制 + 双机热备

测试环境介绍

server01:master CentOS 7.6 x86_64bit

hostname:test12.liufu.com

172.16.100.12——>docker19.03.1+mysql5.7+keepalive

server02:slave CentOS 7.6 x86_64bit

hostname:test13.liufu.com

172.16.100.13——>docker19.03.1+mysql5.7+keepalive

一、Docker 环境搭建

1、升级环境:yum update

2、获取 docker 源:

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://download.docker.com/linux/xentos/docker-ce.repo

3、更新 yum 源缓存:yum update -y

4、安装 docker:yum install -y docker-ce

5、启动 docker:systemctl start docker.service

6、验证 docker 是否安装成功:docker info

二、Docker 中 MySQL 实例创建

1、获取 mysql5.7 镜像:docker pull mysql:5.7

2、查看镜像:docker images |grep mysql

3、创建 mysql 容器

1)创建要挂载的文件夹

cd /var/lib/mysql

mkdir conf data logs

2)运行容器

[root@test12 ~]#docker run --name mysql_5.7 -e MYSQL_ROOT_PASSWORD=password -d -i -p 3306:3306 -v /var/lib/mysql/data:/var/lib/mysql/ -v /var/lib/mysql/conf:/etc/mysql/mysql.conf.d -v /var/lib/mysql/logs:/logs mysql:5.7

注:命令说明

-name mysql_5.7 容器名称

-e MYSQL_ROOT_PASSWORD=password 数据库登陆密码 password

-p 3306:3306 端口映射到宿主机

-v /var/lib/mysql/data:/var/lib/mysql/ 将主机/var/lib/mysql/data 挂载到容器的/etc/mysql/

-v /var/lib/mysql/conf:/etc/mysql/mysql.conf.d

-v /var/lib/mysql/logs:/logs 将主机/var/lib/mysql/logs 挂载到容器的 logs

3)查看容器:docker ps

4)进入 mysql 容器:docker exec -it mysql-5.7 /bin/bash

三、Mysql 配置文件修改

1、宿主机进入挂载的配置文件目录:cd /var/lib/mysql/conf

vim my.cnf

[mysqld]选项下添加如下内容

2、重启 docker 中的 MySQL 实例

3、登陆数据库:mysql -h 127.0.0.1 -uroot -ppassword

4、数据库用户权限设置

mysql> grant all privileges on . to root@'%' identified by "password";

mysql> grant all privileges on . to root@'localhost' identified by "password";

mysql> flush privileges; #刷新数据库

mysql> show grants; #查看权限

四、主从复制配置

1、master 主机配置

登陆主数据库:mysql -uroot -ppassword

mysql> flush tables with read lock; #数据库锁表,不让数据写入

mysql> show master status;

mysql> unlock tables; #从启动好后,记得要解除锁定

Master 数据库到此配置完毕

2、slave 从机配置

修改 my.cnf 配置文件,并重启数据库(修改位置与主数据库一致)

登陆 slave 数据库:mysql -uroot -ppassword

mysql> stop slave;

mysql>change master to master_host='172.16.100.12',

master_port=3306,

master_user='root',

master_password='password',

master_log_file='mysql-bin01.000007',

master_log_pos=889;

mysql>start slave;

mysql>show slave status\G;

五、主从复制测试

1、master 中创建库(docker-test)和表,并在表中插入数据,观察 slave 是否同步

master 主机 slave 从机

创建数据库:docker-test

查看创建的库是否同步

创建表

查看创建的表是否同步

修改表名

查看表名是否重命名

表中写入数据

查看表中数据是否同步

2.master 中删除一条,修改一条测试表(test001)中的一条数据,观察 slave 是否同步

master 主机 slave 从机

test001 表中删除第 2 行,并修改第 3 行的两个数据

查看表中数据是否同步

注:主从复制完成

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值