• MySQL如何搭建主库从库(Docker)


    MySQL主从搭建

    一、主从配置原理

    image-20191104214516600

    mysql主从配置大致流程如下:

    1. master会将变动记录到二进制文件(BinLog日志)中;
    2. master有一个I/O线程将BinLog日志发送到slave;
    3. slave有一个I/O线程把接受到的BinLog入职写到relay日志里面;
    4. slave有一个sql线程,按照relay日志处理slave的数据。

    二、操作步骤

    准备好两个版本一致(最好系统环境也一样)的mysql服务器。

    用docker比较方便。

    1、创建主库和从库容器

    1、拉取mysql5.7镜像
    docker pull mysql:5.7
    
    2、在home目录下创建mysql文件夹,下面创建data和conf.d文件夹
    mkdir /home/mysql
    mkdir /home/mysql/conf.d
    mkdir /home/mysql/data/
    
    3、创建my.cnf配置文件
    touch /home/mysql/my.cnf
    
    4、在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 # 最大链接数
    
    # #主库----start--- 同一局域网内注意要唯一
    server-id=100  
    ## 开启二进制日志功能,可以随便取(关键)
    log-bin=mysql-bin
    # #主库----end--- 
    
    # #从库----start--- 
    ## 设置server_id,注意要唯一
    server-id=101  
    ## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
    log-bin=mysql-slave-bin   
    ## relay_log配置中继日志
    relay_log=edu-mysql-relay-bin 
    # #从库----end--- 
    
    [client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8
    

    2、启动主从库容器

    #启动主库容器(挂载外部目录,端口映射成33307,密码设置为123456)
    docker run  -di -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 33307:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
    
    #启动从库容器(挂载外部目录,端口映射成33306,密码设置为123456)
    docker run  -di -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 33306:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
    

    3、远程连接并操作主从库

    #连接主库
    mysql -h 172.16.209.100 -P 33307 -u root -p123456
    
    #在主库创建用户并授权
    ##创建test用户
    create user 'test'@'%' identified by '123';
    ##授权用户
    grant all privileges on *.* to 'test'@'%' ;
    ###刷新权限
    flush privileges;
    
    #查看主服务器状态(显示如下图)
    show master status; 
    

    image-20191105085514111

    #连接从库
    mysql -h 172.16.209.100 -P 33306 -u root -p123456
    
    #配置详解
    /*
    change master to 
    master_host='MySQL主服务器IP地址', 
    master_user='之前在MySQL主服务器上面创建的用户名', 
    master_password='之前创建的密码', 
    master_log_file='MySQL主服务器状态中的二进制文件名', 
    master_log_pos='MySQL主服务器状态中的position值';
    */
    #命令如下
    change master to master_host='101.133.225.166',master_port=33307,master_user='test',master_password='123',master_log_file='mysql-bin.000003',master_log_pos=0;
    
    #启用从库
    start slave;
    
    #查看从库状态(如下图)
    show slave statusG;
    

    image-20191105090050611

    4、测试主从同步

    #在主库上创建数据库test1
    create database test1;
    use test1;
    
    #创建表
    create table tom (id int not null,name varchar(100)not null ,age tinyint);
    
    #插入数据
    insert tom (id,name,age) values(1,'xxx',20),(2,'yyy',7),(3,'zzz',23);
    
    ----------------------------------
    #在从库上查看是否同步成功
    
    #查看数据库
    show database;
    use test1;
    
    #查看表
    show tables;
    
    #查看数据
    select * from test1;
    

    可以看到从库已同步完成。

  • 相关阅读:
    HDU1879 kruscal 继续畅通工程
    poj1094 拓扑 Sorting It All Out
    (转)搞ACM的你伤不起
    (转)女生应该找一个玩ACM的男生
    poj3259 bellman——ford Wormholes解绝负权问题
    poj2253 最短路 floyd Frogger
    Leetcode 42. Trapping Rain Water
    Leetcode 41. First Missing Positive
    Leetcode 4. Median of Two Sorted Arrays(二分)
    Codeforces:Good Bye 2018(题解)
  • 原文地址:https://www.cnblogs.com/bowendown/p/12637865.html
Copyright © 2020-2023  润新知