在一个服务器上实现MySQL主从库配置

一.准备工作

(1)VMWare虚拟机,安装的是centos7 系统;

(2)虚拟机内已安装好Docker。

(3)关闭防火墙。

二.使用Docker运行MySQL镜像

1.启动docker拉取mysql镜像

docker pull mysql:5.7.25

查看镜像是否下载成功

docker images

如图所示,mysql镜像拉取成功。

三.建立数据库容器挂载的虚拟映射

mkdir -p /home/mysql/conf.d
mkdir -p /home/mysql/data

新建配置文件my.cnf

touch /home/mysql/my.cnf

输入vim my.cnf,编辑配置文件,添加以下内容

[mysqld]
  user=mysql
  character-set-server=utf8
  default_authentication_plugin=mysql_native_password
  secure_file_priv=/var/lib/mysql
  expire_logs_days=7
         
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
  max_connections=1000
  server-id=1
  log-bin=master-bin
  log-bin-index=master-bin.index​

[client]
  default-character-set=utf8
  ​
[mysql]
  default-character-set=utf8

按照上述步骤,新建另一个虚拟映射文件夹mysql2。

在mysql2下的my.cnf添加的内容对应为

[mysqld]
  user=mysql
  character-set-server=utf8
  default_authentication_plugin=mysql_native_password
  secure_file_priv=/var/lib/mysql
  expire_logs_days=7
  sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
  max_connections=1000
  server-id=2
  relay-log-index=slave-relay-bin.index
  relay-log=slave-relay-bin
  [client]
  default-character-set=utf8

  [mysql]
  default-character-set=utf8

 四.创建并运行mysql容器

主库容器

  docker run --privileged=true -d \
-v /home/mysql/data/:/var/lib/mysql \
-v /home/mysql/conf.d:/etc/mysql/conf.d \
-v /home/mysql/my.cnf:/etc/mysql/my.cnf \
-p 33306:3306 \
--name mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7.25

从库容器 

 docker run --privileged=true -d \
-v /home/mysql2/data/:/var/lib/mysql \
-v /home/mysql2/conf.d:/etc/mysql/conf.d \
-v /home/mysql2/my.cnf:/etc/mysql/my.cnf \
-p 33307:3306 \
--name mysql2 \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7.25

查看主库和从库容器是否成功运行

 

五、进入容器配置

1.进入主库容器

docker exec -it mysql bash 

 2.打开mysql操作页面,输入密码

mysql -uroot -p

 创建用户,赋予权限

create user master;
grant replication slave on *.* to 'master'@'xxx.xxx.xxx.xx' IDENTIFIED BY '123456';
flush privileges;

其中xxx.xxx.xxx.xx是从库地址,用 如下命令得到

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id

查看并记下master-bin.000003和2681

 输入exit两次退回到终端。

3.进入从库容器,打开mysql操作页面

docker exec -it mysql2 bash 

 配置,把master-bin.000003和2681的值放入对应位置。

mysql> change master to master_host='xxx.xxx.xxx.xx',master_port=3306,master_user='master',master_password='123456',master_log_file='master-bin.000003',master_log_pos=2681;

其中xxx.xxx.xxx.xx是主库地址。

启动配置

start slave

输入命令查看

show slave status \G

结果如下

 当红框内两项为Yes时,说明配置成功。关闭用stop slave。

4.测试

回到主库容器新建数据库

create database testDB;

再进入从库容器内用show databases即可查到testDB。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值