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 行的两个数据
查看表中数据是否同步
注:主从复制完成
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于