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,如果是则说明大功告成了

    测试

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

  • 相关阅读:
    Spring 整合Struts2 + hibernate
    回调机制
    Struts2配置RESULT中TYPE的参数说明
    hibernate:通用DAO+动态生成HQL语句
    java API chm html 1.5 1.6 中文版英文版 帮助文档
    generator class中各项值的作用及定义
    Hibernate 中 set 里的属性及定义
    一个人的前端项目,踩过的那些坑,一一道来。
    哪些个在 Sublime Text 下,"任性的" 好插件!
    深度挖掘,Html5的 Range 滑动刻度的坑,兼容全平台,将任性进行到底!
  • 原文地址:https://www.cnblogs.com/PanYuDi/p/14866822.html
Copyright © 2011-2022 走看看