zoukankan      html  css  js  c++  java
  • 用docker配置mysql主从复制

    使用docker配置mysql读写分离

    读写分离概述

    1. 双机热备功能,主数据库提供增删改操作,从数据库提供查操作。写数据操作比较耗时而读操作不耗时。很多情况下数据库更新少而查询多,因此可以配置多个从库查询缓解查询的压力

    2. 主从复制功能是mysql提供的(和shardingjdbc没有关系),从库可以监听主库的日志完成数据同步

    3. shardingjdbc功能:

      通过sql语义分析实现读写分离,例如把增删改路由到主数据库,查路由到从数据库

    安装和启动mysql

    首先运行以下命令拉去MySQL镜像

    docker pull mysql:latest

    运行mysql(由于要配置读写分离启动两个镜像)分别启动到3306和3307两个端口

    docker run --name mysql01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql
    docker run --name mysql02 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql

    此时需要配置服务器的安全组,另外需要配置可通过密码访问的ip,否则无法远程连接

    首先进入容器

    docker exec -it mysql01 bash 

    登录mysql

    mysql -uroot -p
     ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
    FLUSH PRIVILEGES;

    此步骤为root用户提供远程访问的权利

    配置主从

    修改mysql配置文件

    进入mysql容器,进入配置文件目录

    cd /etc/mysql
    vim my.conf

    如果vim没有安装则先安装vim

    apt-get update vim
    apt-get install vim

    对主机添加如下配置:

    [mysqld]
    #开启日志
    log‐bin = mysql‐bin
    #设置服务id,主从不能一致
    server‐id = 1
    #设置需要同步的数据库
    binlog‐do‐db=user_db
    #屏蔽系统库同步
    binlog‐ignore‐db=mysql
    binlog‐ignore‐db=information_schema
    binlog‐ignore‐db=performance_schema

    对从库添加如下配置:

    #开启日志
    log‐bin = mysql‐bin
    #设置服务id,主从不能一致
    server‐id = 2
    #设置需要同步的数据库
    replicate_wild_do_table=user_db.%
    #屏蔽系统库同步
    replicate_wild_ignore_table=mysql.%

    在主库创建用于主从账号

    CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
    GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

    启动主从复制

    首先查看主库的文件名和位点

    show master status;

    此步骤需要记录下显示的File和Position

    然后进入从库,启动

    CHANGE MASTER TO MASTER_HOST='1.15.113.171', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=939 , MASTER_CONNECT_RETRY=30;
    START SLAVE;
    SHOW SLAVE STATUS;
    STOP SLAVE;

    要注意由于是docker中启动,host要填写公网ip,填写localhost是访问不到的,

    MASTER_LOG_FILE和MASTER_LOG_POS填写上一步查询到的

    运行SHOW SLAVE STATUS后观察Slave_SQL_Running和Replicate_Do_DB是否都是YES,如果是则说明大功告成了

    测试

    创建一个库,添加一条数据,看看有没有

  • 相关阅读:
    关于报错”已有打开的于此Command相关联的DataReader,必须首先将它关闭。“的问题
    Dockerjenkins环境搭建跟配置
    Python+selenium 【第十章】封装config类,读取配置文件,封装驱动类,适配windows/mac
    —— “欢迎来到我的小屋”
    Python+selenium 【第九章】封装excel类,封装test_data类 读取测试元素信息
    Linux搭建docker
    Python+selenium 【第十二章】封装日志类优化其他方法并添加日志(异常处理)
    【selenium】Python自动化面试题
    Dockerjenkins容器安装python并配置环境变量
    【优化框架】新增期望结果,断言为mysql情况下动态化参数替换
  • 原文地址:https://www.cnblogs.com/PanYuDi/p/14866822.html
Copyright © 2011-2022 走看看