美文网首页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主从复制

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