• mysql主从复制docker


    1、拉取mysql:5.7镜像

    docker pull mysql:5.7
    

    2、创建主服务器配置文件

    mkdir -p /mydata/mysql-master/conf
    vi /mydata/mysql-master/conf/my.cnf
    cat /mydata/mysql-master/conf/my.cnf

    [mysqld]

    ## 设置server_id,同一局域网中需要唯一

    server_id=101

    ## 指定不需要同步的数据库名称

    binlog-ignore-db=mysql

    ## 开启二进制日志功能

    log-bin=mall-mysql-bin

    ## 设置二进制日志使用内存大小(事务)

    binlog_cache_size=1M

    ## 设置使用的二进制日志格式(mixed,statement,row)

    binlog_format=mixed

    ## 二进制日志过期清理时间。默认值为0,表示不自动清理。

    expire_logs_days=7

    ## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。

    ## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致

    slave_skip_errors=1062

    3、启动主服务器并创建数据同步用户

    #启动mysql主服务器
    docker run -p 3307:3306 --name mysql-master \ -v /mydata/mysql-master/log:/var/log/mysql \ -v /mydata/mysql-master/data:/var/lib/mysql \ -v /mydata/mysql-master/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql:5.7 #进入容器内部 docker exec -it 9e522242352b /bin/bash #登录mysql mysql -uroot -p root #容器实例内创建数据同步用户 CREATE USER 'slave'@'%' IDENTIFIED BY 'root'; GRANT REPLICATION SLAVE , REPLICATION CLIENT ON *.* TO 'slave'@'%' ;

     4、创建从服务器配置文件

    #创建从服务器配置文件
    mkdir -p /mydata/mysql-slave/conf/
    vi /mydata/mysql-slave/conf/my.cnf
    [mysqld]
    
    ## 设置server_id,同一局域网中需要唯一
    
    server_id=102
    
    ## 指定不需要同步的数据库名称
    
    binlog-ignore-db=mysql
    
    ## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
    
    log-bin=mall-mysql-slave1-bin
    
    ## 设置二进制日志使用内存大小(事务)
    
    binlog_cache_size=1M
    
    ## 设置使用的二进制日志格式(mixed,statement,row)
    
    binlog_format=mixed
    
    ## 二进制日志过期清理时间。默认值为0,表示不自动清理。
    
    expire_logs_days=7
    
    ## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
    
    ## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
    
    slave_skip_errors=1062
    
    ## relay_log配置中继日志
    
    relay_log=mall-mysql-relay-bin
    
    ## log_slave_updates表示slave将复制事件写进自己的二进制日志
    
    log_slave_updates=1
    
    ## slave设置为只读(具有super权限的用户除外)
    
    read_only=1
    

    5、启动从服务器

    #启动从服务器
    docker run -p 3308:3306 --name mysql-slave \
    -v /mydata/mysql-slave/log:/var/log/mysql \
    -v /mydata/mysql-slave/data:/var/lib/mysql \
    -v /mydata/mysql-slave/conf:/etc/mysql \
    -e MYSQL_ROOT_PASSWORD=root  \
    -d mysql:5.7
    #进入容器内部
    docker exec -it mysql-slave /bin/bash
    #登录mysql
    mysql -uroot -p
    root
    

    6、在主机数据库查看主从同步状态

    show master status;
    

     7、在从数据库配置主从复制

    change master to master_host='192.168.111.99', master_user='slave', master_password='root', master_port=3307, master_log_file='mall-mysql-bin.000003', master_log_pos=617, master_connect_retry=30;
    

     8、在从数据库查看主从同步状态

    show slave status \G
    

     9、在从数据库中开启主从同步

    start slave;
    #在从数据库查看主从同步状态
    show slave status \G

     10、主从复制测试

    #在主机新建数据库-使用库-新建表-插入数据
    create database db01;
    use db01;
    create  table student_copy(
    id int primary key,
    name varchar(20)
    )Engine=InnoDB default charset utf8;
    insert into student_copy values (5,'55');
    #查询已插入数据
    select * from student_copy;

    #在从数据库-查看记录
    use db01;
    select * from student_copy;
    

  • 相关阅读:
    程序经理_产品经理_项目经理
    github上排名靠前的java项目之_storm
    垂直型与水平型电子商务网站的理解
    关于驱动更新的一点学习
    Balanced Binary Tree
    Gray Code
    Best Time to Buy and Sell Stock II
    Best Time to Buy and Sell Stock
    Maximum Depth of Binary Tree
    Next Permutation
  • 原文地址:https://www.cnblogs.com/zszitman/p/16843268.html
Copyright © 2020-2023  润新知