隐藏

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

发布:2023/4/15 21:30:25作者:管理员 来源:本站 浏览次数:566

一.准备工作


(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。