• mysql-6-主从复制搭建


    1 总结

    1:主从复制最大缺陷就是延迟

    2: 设置完主从关系之后,主机创建的库和表,,同步到从机。

    3:设置完主从关系之前,主机创建的库和表,不会,同步到从机。

    4:要是主机一开始就有一个test库,从机没有,这时候,我删除主机的test库,从库复制会报错。后续的复制将会停止。( slave-skip-errors=all 解决)

    2 搭建前的准备

    2.1复制的基本原则

    1.  每个slave只有一个master
    2. 每个slave只能有一个唯一的服务器ID
    3. 每个master可以有多个slave
    4. mysql版本尽量一致,防止出问题。
    5. 两台服务能ping通
    6. MySQL主从是基于binlog的,主上须开启binlog才能进行主从。

    1 编辑主库的配置文件

    vim /etc/my.cnf

    2 主库配置

    1. [mysqld]
    2. #开启日志
    3. log-bin = mysql-bin
    4. #binlog级别 (statement:只记操作命令,有可能导致主从数据不一致,row:数据一致 mixed:)
    5. binlog_format=row
    6. #设置服务id,主从不能一致 ,一般设置为ip最后一段
    7. server-id = 19
    8. #设置需要同步的数据库
    9. binlog-do-db=aa_db
    10. #屏蔽系统库同步
    11. binlog-ignore-db=mysql
    12. binlog-ignore-db=bb_db

    3 重启

    systemctl restart mysqld

    4、登录主库:

    mysql -uroot -p

    5 创建用户

    降低密码强度(不建议使用)

    1. SELECT @@VALIDATE_PASSWORD_POLICY;
    2. set global validate_password_policy = 0;
    3. set global validate_password_length=1;

    6  授权主从复制专用账号(给从库复制数据使用的)

    GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%' IDENTIFIED BY 'db_sync'; 
    

    7  刷新权限

    flush privileges;
    

    8 查看主库信息,注意:记录一下file和Position,从库配置时用

    show master status;
    

     

    从库配置

    1. [mysqld]
    2. #设置3306端口
    3. port = 3306
    4. # 允许最大连接数
    5. max_connections=1000
    6. #开启日志
    7. log-bin = mysql-bin
    8. #设置服务id,主从不能一样 ,一般设置为ip最后一段
    9. server-id = 18
    10. #复制异常处理方式 (不配置这个,报错将停止复制数据,重要)
    11. slave-skip-errors=all
    12. #设置需要同步的数据库 (一般不用)
    13. replicate_wild_do_table=test_db.%
    14. #屏蔽系统自带的库的同步 (重要)
    15. replicate_wild_ignore_table=mysql.%
    16. replicate_wild_ignore_table=information_schema.%
    17. replicate_wild_ignore_table=performance_schema.%

    从库登录

     mysql -u root -p

    根据主库信息,执行

    CHANGE MASTER TO MASTER_HOST='主库ip',MASTER_PORT=3306,MASTER_USER='db_sync', MASTER_PASSWORD='db_sync',MASTER_LOG_FILE='file信息',MASTER_LOG_POS=Position信息;
    

    4、启动服务

    1. # 开启
    2. mysql> start slave;
    3. # 停止
    4. mysql> stop slave;
    5. # 重启
    6. mysql> reset slave;

    5、确认Slave_IO_Runing以及Slave_SQL_Runing两个状态位是否为“Yes”,如果不为 Yes,
    请检查error_log,然后排查相关异常。

    mysql>show slave status;
    

    提示: flush table with read lock; unlock tables;

    验证:

     1:主库新建用户并授权,从库也能登录。

     2:建立关系后所有新建的表和库都会同步,但是没建立关系之前主库就创建的东西不会同步

    3 问题

    3.1 主从复制报错

     在设置主从关系之前,我的主机mysql上,有一个test库。当我设置了主从关系后,这个test库也不会复制到我的从机的mysql里。但是之后,主机所有创建的库和表都会同步。

    单是当我删除主机的test库的时候,由于从机没有test库就会报错。复制将会停止。

    解决1 从机配置(还可以具体到哪个码)

    slave-skip-errors=all

  • 相关阅读:
    KafKa存储机制
    java103-字符串概述
    location.href&&window.open
    【详解】String、StringBuffer、StringBuilder的基本用法及区别
    fastjson很好,但不适合我
    HTTP请求头
    Java 面试 知识清单
    企业电子招标采购系统源码之从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理
    《C++ Primer》第7章 类(一)
    uni-app:引入echarts(使用renderjs)
  • 原文地址:https://blog.csdn.net/weixin_44383484/article/details/128040558