• 【微服务】部署mysql集群,主从复制,读写分离


    两台服务器做如下操作

    1.安装mysql
     docker pull mysql:5.7
    
    2.启动以及数据挂载
    mkdir /root/mysql/data /root/mysql/log /root/mysql/conf
    touch my.conf //mysql的配置文件
    
    docker run --name mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -v /root/mysql/data:/var/lib/mysql \
    -v /root/mysql/log:/var/log/mysql \
    -v /root/mysql/conf:/etc/mysql/conf.d \
    -dp 3306:3306 \
    mysql:5.7
    
    3.启动数据库,开机自启
    docker start mysql
    docker update mysql --always=restart
    
    4.修改配置文件,设置mysql为utf-8编码
    [client]
    default_character_set=utf8
    [mysql]
    default_character_set=utf8
    [mysqld]
    character_set_server=utf8
    server_id=01   //主从服务器id要不一致
    binlog-ignore-db=mysql  //此参数表示不记录指定的数据库的二进制日志。
    log-bin=master-log-bin  //开启mysql的binlog日志功能,master-log-bin文件名
    binlog_cache_size=1M  //binlog缓存大小
    binlog_format=mixed  //binlog日志格式,mysql默认采用statement,建议使用mixed
    expire_logs_days=7  //二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
    slave_skip_errors=1062  //忽略主键冲突报错
    
    #MySQL主从同步中,经常遇到的三种同步错误:
    #1、在master上delete一条记录,若在slave上没有这条数据,会出现报错。
    #2、在master上insert一条记录,若在slave上主键值已经存在,会出现报错。
    #3、在master上update一条记录,若在slave上没有这条数据,会出现报错。
    #如果slave的my.cnf已经配置了slave_skip_errors参数,则可以自动跳过报错,如果没有配置该参数,则可以用以下方法解决:
    #mysql> set global slave_exec_mode='idempotent'; 
    #默认值是strict(严格模式),IDEMPOTENT  模式跳过主键冲突错误和更新删除行不存在错误。
    #默认情况下该参数值是off,我们可以列出具体的error code,也可以选择all,mysql5.6及MySQL Cluster NDB 7.3以及后续版本增加了参数#ddl_exist_errors,该参数包含一系列error code(1007,1008,1050,1051,1054,1060,1061,1068,1094,1146)
    #    一些error code代表的错误如下:
    #     1007: 数据库已存在,创建数据库失败
    #     1008: 数据库不存在,删除数据库失败
    #     1050: 数据表已存在,创建数据表失败
    #     1051: 数据表不存在,删除数据表失败
    #     1054: 字段不存在,或程序文件跟数据库有冲突
    #     1060: 字段重复,导致无法插入
    #     1061: 重复键名
    #     1068: 定义了多个主键
    #     1094: 位置线程ID
    #    1146: 数据表缺失,请恢复数据库
    #    1053: 复制过程中主服务器宕机
    #     1062: 主键冲突 Duplicate entry '%s' for key %d
    
    
    5.查看是否生效
    docker exec -it mysql /bin/bash
    mysql -uroot -p
    show variables like 'character%';
    show master status;  //显示主服务器状态
    
    +-----------------------+----------+--------------+------------------+-------------------+
    | File                  | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +-----------------------+----------+--------------+------------------+-------------------+
    | master-log-bin.000001 |      617 |              | mysql            |                   |
    +-----------------------+----------+--------------+------------------+-------------------+
    
    6.创建账户给从数据库使用
    CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
    GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
    flush privileges;
    
    7.修改salve数据库配置
    [client]
    default_character_set=utf8
    [mysql]
    default_character_set=utf8
    [mysqld]
    character_set_server=utf8
    server_id=02
    binlog-ignore-db=mysql
    log-bin=slave-log-bin
    binlog_cache_size=1M
    binlog_format=mixed
    expire_logs_days=7
    slave_skip_errors=1062
    relay_log=relay-log-bin  //从主服务器上同步日志文件记录到本地
    log_slave_updates=1 //表示slave将复制事件写进自己的二进制日志。当设置log_slave_updates时,你可以让slave扮演其它slave的master
    read_only=1  //1是只读
    
    8.重启从mysql,并连接主mysql
    change master to master_host='192.168.162.201' , //主服务器ip
     master_user='slave' ,  //连接使用的用户
     master_password='123456' , //连接用户的密码
     master_port=3306 ,//主服务器端酒
     master_log_file='master-log-bin.000002'  //binlog文件位置
    ,master_log_pos=617  //#数据的最新位置
    ,master_connect_retry=30  //重连时间
    ,master_retry_count=3; //重连次数
    
    9.查看从服务状态,以及开启主从模式
    show slave status \G;
    start slave  //开启主从模式
    
    

    show slave status \G;
    未开启是状态
    在这里插入图片描述

    开启后
    在这里插入图片描述

  • 相关阅读:
    婚恋相亲交友红娘小程序源码开发搭建方法
    MySQL 数据库中 Insert 语句的锁机制
    想进BAT当架构师?BAT面试知识点扫盲祝你一臂之力!
    Matlab中的功率谱分析方法与实例分析
    十一、对象的新增方法
    网络安全应急响应与实践合集
    Vue 中 v-if 和 v-show 有什么区别?
    学会Kafka这一篇就够了
    PHP 安全最佳实践
    TCP协议,解析机器终端数据
  • 原文地址:https://blog.csdn.net/wukkk111/article/details/139271029