美文网首页it
MySql主从复制

MySql主从复制

作者: 一颗地梨子 | 来源:发表于2019-12-05 15:34 被阅读0次

我的是自己搭建的一个数据库作为主库,使用docker 作为 从库

        注意:  数据库版本保持一致!!!数据库版本保持一致!!!数据库版本保持一致!!!

1. 查看住库版本

        我的是: 5.6.45

2.安装docker

        参考地址:https://www.docker.com/

3.docker 安装mysql 5.6.45

        小白请参考docker 文档操作

        docker pull mysql:5.6.45

        docker images可查看刚pull 的 mysql.如若过慢可自行修改镜像.

        docker run -p 3360:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6.45启动mysql

                -p 3360:3306  端口映射  外网链接数据时请使用  3360 (尽量选择没被占用的端口)

                --name mymysql  定义名称    (mymysql  随意)

                -e MYSQL_ROOT_PASSWORD=123456  设置密码

                -d mysql:5.6.45  启动的镜像

        docker inspect redismaster查看一下容器的IP  (可跳过、后面mysq配置可用)

ok  重点、重点、重点

    修改主库配置文件

        修改 mysql.ini (或 mysql.cnf) -- 有些人配置比较不通

            [mysqld]

            ## 设置server_id  注意要唯一、注意要唯一、注意要唯一

            server-id=1      ## 这个就是在上面讲的可获取内网IP的用处 尽量使用内网IP的最后一段 比较好区分

            ## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用

            log-bin=mysql-slave-bin 

            ## relay_log配置中继日志

            relay_log=edu-mysql-relay-bin 

        修改从库配置文件

        进入容器      

                docker exec -it 8dfabd8ad85b /bin/bash

                    -it 8dfabd8ad85b  这个是docker  容器运行时的ID 可使用    docker ps 查询

        安装 vim

                第一步:apt-get update

                第二步:apt-get install vim

        cd /etc/mysql/

                由于mysql的版本有点高,配置文件简直就是套娃啊,一层一层的.打开后就是加载、加载、加载.

        直接  vim /etc/mysql/mysql.conf.d/mysqld.cnf

                [mysqld]

                ## 设置server_id  注意要唯一、注意要唯一、注意要唯一

                server-id=2    ## 这个就是在上面讲的可获取内网IP的用处 尽量使用内网IP的最后一段 比较好区分

                ## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用

                 log-bin=mysql-slave-bin 

                ## relay_log配置中继日志

                relay_log=edu-mysql-relay-bin 

        重启mysql         service mysql restart

        由于重启mysql后容器会停止,接下来启动容器

        docker start mymysql

                mymysql  容器名称  上面的启动是已说明

就此、准备工作完成,接下来我们开始配置主从复置工作

1. 查看主库的日志状态

        show master status;

            File            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

            +------------------+----------+--------------+------------------+-------------------+

             | mysql-bin.000011 |  876059

                File、Position,这两个字段的值一定要记录一下,下面用得上.

2.在主库设置一个复制的账号.

        方法万万千,我就不赘述了

3.进入docker 的mysql 运行容器

        docker exec -it 8dfabd8ad85b /bin/bash

        进入mysql  mysql -uroot -p

        执行:

          change master to master_host='172.17.0.1', master_user='root', master_password='123456', master_port=3306, master_log_file='mysql-bin.000011', master_log_pos= 876059, master_connect_retry=30;

                master_host='172.17.0.1'        主库的IP

                master_user='root'                  上一步设置的主库复制账号

                master_password='123456'  上一步设置的主库复制账号密码

                master_port=3306                  主库端口

                master_log_file='mysql-bin.000011      这个就是上面讲的需要记录的  File  字段的值

                master_log_pos= 876059    这个就是上面讲的需要记录的  Position  字段的值

                master_connect_retry=30      如果主从链接失败的超时时间      默认:60 (s)

OK、配置完毕,可以启动了  启动之前先看看当前状态吧

    show slave status \G;

        被我圈红色的表示暂时并没有启动.接下来我们启动一下

        start slave            start|stop slave    (我看了一下其他的博客写的是 slave start  醉了)

        再次查看状态:

         show slave status \G;

                Last_Errno: 1062

                Last_Error: Error 'Duplicate entry '22980' for key 'PRIMARY'' on query.

            这个时候应该会报错

            显然这个问题是因为插入重复主键导致从库不工作了

            解决方法一:

                    mysql>slave stop;

                    mysql>set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

                    mysql>slave start;

            解决方法二:

                    slave_skip_errors = 1062

            再次从起mysql  重启 docker 即可

        解决完毕后再次 start slave

        再次查看状态:    show slave status \G;

        

完成

测试一下吧

在主库随便修改一下数据或者字段去从库试试吧

相关文章

  • MySQL如何配置主从复制,如何修复主从复制出现的异常?

    MySQL如何配置主从复制,如何修复主从复制出现的异常? 一、什么是Mysql主从复制 MySQL主从复制是其最重...

  • MySQL-主从复制&读写分离

    零、本文纲要 一、MySQL主从复制 主从复制 主从复制过程 配置主从复制 二、MySQL读写分离 读写分离 Sh...

  • Mysql 主从复制

    Mysql 主从复制 MySQL Replication 主从复制(也称 AB 复制)允许将来自一个MySQL数据...

  • 主从复制 & MHA

    一,mysql主从复制 (1)场景一(主从复制 _ 全新环境下) (2)场景二(主从复制 _ mysql已经使用一...

  • mysql主从复制

    构建MySQL主从复制 MySQL的主从复制和mysql的读写分离两者有着紧密联系,数据的读写分离实在主从复制的基...

  • Spring Data JPA 使用主从数据源

    Mysql 配置主从复制 参考:Mysql主从复制-半同步复制[https://www.jianshu.com/p...

  • MySQL集群篇

    1 集群之主从复制 1.1 主从复制概述 MySQL主从复制也可以称为MySQL主从同步,它是构建数据库高可用集群...

  • 深度探索MySQL主从复制原理

    概要 MySQL Replication (MySQL 主从复制) 是什么? 为什么要主从复制以及它的实现原理是什...

  • 【转】MySQL 8.0复制改进

    1 - MySQL主从复制模型 我们从最基本的主从复制模型开始说起,下图是最经典的MySQL主从复制架构图: My...

  • mysql主从代理

    mysql主从复制+读写分离 环境: mysql主:193.168.1.1 mysql从:193.168.1.2 ...

网友评论

    本文标题:MySql主从复制

    本文链接:https://www.haomeiwen.com/subject/hggdgctx.html