Docker 环境 +MySQL 主从复制 + 双机热备 测试环境介绍 server01:master CentOS 7.6 x86_64bit hostname:test12.liufu.com 172.16.100.12——>docker19.03.1+mysql5.7+keepalive server02: ..

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 行的两个数据
查看表中数据是否同步

注:主从复制完成

  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包括系统。

    300 引用 • 708 回帖 • 534 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    496 引用 • 500 回帖 • 773 关注
回帖
请输入回帖内容...