• Mysql主从互备环境搭建


    Mysql主从互备环境搭建

    一、环境准备和部署架构

    主从复制,是用来建立一个和主数据库完全一样的数据库环境,主数据库一般是准实时的业务数据库,主从复制的作用如下:

    l 做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。

    架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。

    l 读写分离,使数据库能支持更大的并发。

    规划:

    l 服务器操作系统为centos7.9,为最小化安装。

    主机A和主机B均关闭防火墙和SELINUX 。

    l IP地址分别为192.168.10.62192.168.10.63.

    l MySQL版本为 mysql:8.0 ,为Docker镜像安装。

     

    二、安装mysql

    2.1、安装docker

    l Docker 要求 CentOS 系统的内核版本高于 3.10 ,通过 uname -r 命令查看你当前的内核版本。

         

    使用 root 权限登录 Centos。确保 yum 包更新到最新。

    yum update

    卸载旧版本(如果安装过旧版本的话)

    yum remove docker  docker-common docker-selinux docker-engine

    安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

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

    设置yum源

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

    可以查看所有仓库中所有docker版本,并选择特定版本安装

    yum list docker-ce --showduplicates | sort -r

    安装docker

     yum install docker-ce-18.03.1.ce-1.el7.centos  docker-ce-cli-1:20.10.8-3.el7  containerd.io

    l 启动并加入开机启动

    systemctl start docker

    systemctl enable docker

    验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

    docker version

    2.2、安装mysql8.0

    2.2.1、主mysql  192.168.10.62

    l 拉取镜像:

    docker pull mysql:8.0

    l 创建容器:

    docker run --restart=always --privileged=true -p 3306:3306 --name mysqlmaster -e MYSQL_ROOT_PASSWORD=password123 -v /docker/mysql/log:/var/log/mysql -v /docker/mysql/conf:/etc/mysql/conf.d  -v /docker/mysql/data:/var/lib/mysql  -d mysql:8.0

     

    2.2.2、从mysql  192.168.10.63

    l 拉取镜像

     docker pull mysql:8.0

    l 创建容器:

     docker run --restart=always --privileged=true -p 3306:3306 --name mysqlslave -e MYSQL_ROOT_PASSWORD=password123 -v /docker/mysql/log:/var/log/mysql -v /docker/mysql/conf:/etc/mysql/conf.d  -v /docker/mysql/data:/var/lib/mysql  -d mysql:8.0

     

    l 修改主从配置:参考命令

    docker cp 本地路径/my.cnf mysql:/etc/mysql,将本地文件替换掉mysql容器里面的文件

          

    2.2.3、远程访问授权

        use mysql;

    ALTER USER 'root'@'%' IDENTIFIED BY 'password123' PASSWORD EXPIRE NEVER;

    ALTER USER 'root'@'%' IDENTIFIED with mysql_native_password by 'password123';

    flush privileges;

    2.3、配置mysql主从复制

    2.3.1、主从复制---Master主机上执行以下步骤

    1、配置my.cnf

     

    2、创建备机链接主机的账号  授权 https://blog.csdn.net/zyhlwzy/article/details/80569422

     

      

     

    2.3.2、开启主从同步 从机上执行

     

     1my.cnf 添加

    server-id=63

    innodb_flush_log_at_trx_commit=2

    sync_binlog=1

    log-bin=mysql-bin-63

    三、配置mysql主从关系

    3.1、在从(Slave)节点的mysql执行以下命令:

    mysql> CHANGE MASTER TO

    MASTER_HOST='192.168.10.62',

    MASTER_USER='repl',

    MASTER_PASSWORD='password123',

    MASTER_LOG_FILE='mysql-bin-200.000010',

    MASTER_LOG_POS=156;

    3.2、开启复制监听

      start slave;

    3.3、检查状态

       show slave status  G

       确保以下参数是yes

       Slave_IO_Running: Yes

           Slave_SQL_Running: Yes

     

     

     

     

    3.4、复制关系问题修复:

    1、检查mysqlservice_id

       show  variables like 'server_id';

    2、修改从链接主的配置信息

       stop slave;

           CHANGE MASTER TO  MASTER_HOST='192.168.10.62';

       CHANGE MASTER TO MASTER_USER='repl';

       CHANGE MASTER TO MASTER_PASSWORD='password123';

    #来自主机的show master

      CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-200.000010';  

     #来自主机的show master

           CHANGE MASTER TO MASTER_LOG_POS=156;    start slave;

       show slave stauts G;

    四、主从复制测试

    Master 库中创建表 test-replication

     

     

     

    slave库中显示结果

     

    五、参考

      5.1dockerhttps://www.runoob.com/docker/centos-docker-install.html

      5.2docker hubhttps://hub.docker.com/ 

    docker安装:
    https://www.cnblogs.com/yufeng218/p/8370670.html

    https://hub.docker.com/_/mysql

    MySQL双主配置
    https://www.cnblogs.com/fengyutech/p/4967522.html
    Mysql主从配置
    https://blog.csdn.net/qq_33196814/article/details/81513907
    如何修改 docker 容器的目录映射:
    https://www.cnblogs.com/poloyy/p/13993832.html
    MySQL 8.0主从(Master-Slave)配置:
    https://blog.csdn.net/zyhlwzy/article/details/80569422

     

     

  • 相关阅读:
    .NET/C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
    使用UI Automation实现自动化测试--1-4
    使用npm命令下载sass时出现Error: not found: python2
    CentOS上安装Python3
    解决electron打包时,下载超时导致失败
    FJ省队集训2021
    微信小程序自定义封装组件-showModal
    react性能优化
    认识react虚拟Dom
    前端FileReader读取文件信息
  • 原文地址:https://www.cnblogs.com/show58/p/15386824.html
Copyright © 2020-2023  润新知