• mysql主从复制配置


    # 以下是mysql5.6及5.7版本的,其他版本不知是否一致

    目的:

    1.为了冗余备份,主库挂了,切换到从库使用

    2.为了实现读写分离,主从复制是实现读写分离的前提

    主从复制的原理图:

    配置步骤:

    1.修改配置文件

    vim /etc/my.cnf

    # 不同mysql的server-id需要不同

    主库添加配置信息: 

    [mysqld]
    
    server-id=1
    
    log-bin=z-mysql-bin

    从库添加配置信息:

    [mysqld]
    
    server-id=2
    
    read-only=true  # 设置只读,但是对mysql的root不生效

    重启mysql服务:

    systemctl restart mysqld.server

    # 命令不一定需要一样 

    重启有可能有问题:

    通过kill 或pkill 杀掉再启动也可以。

    2.主库进行锁表

    # 保持数据一致性,做完主从复制配置再解锁

    flush table with read lock;

    3.导出主库数据,并发送至从库,导入数据

    主库操作:

    (1) 备份当前数据库所有的数据

    mysqldump -uroot -p --all-databases > /data/all_data.sql

    (2) 推送备份的数据至从库data目录下

    scp /data/all_data.sql root@192.168.16.106:/data/

    在从库中执行:

    (1) 先进入数据库中

    (2) 导入主库的数据

    source /data/all_data.sql

    4.主库创建主从复制的用户并授权slave

    # 创建用户并授权的命令

    grant replication slave on *.* to 'master_copy'@'192.168.1.%' identified by 'wzz123';

    flush privileges;

    注:192.168.1.% 网段这个看你实际机器的

    5.从库建立主从关系

    # 在主库通过show master status 查看到log名和起始位置

     

    在从库执行该命令(和上图对应去填):

    change master to master_host='192.168.16.83',

    master_user='master_copy',

    master_password='wzz123',

    master_log_file='z-mysql-bin.000001',

    master_log_pos=472;

    注: 这些字符串中左右不能有空格!

    6.开启从库slave功能

    start slave;

    7.检查配置是否成功

    show slave statusG

     # 这俩参数必须都是Yes才行

    8.两项都显示Yes后,主库解锁

    unlock tables;

    配置中遇到的问题:

    1.找不到第一个log文件

    问题的原因:

    我在从库写连接主库的日志时候左右有空格,所以才导致找不到

    解决方式:

    (1) 从库先停止:

    slave stop;

    (2) 主库刷新日志:

    # 把sql命令刷到另一个bin-log文件去写

    flush log;

    查看主库的log变化:

     

    (3) 修改从库log文件和起始点:

    CHANGE MASTER TO MASTER_LOG_FILE='z-mysql-bin.000002',MASTER_LOG_POS=245;

    注:名称必须一致,注意左右是否有空格。

    (4) 启动,查看:

    slave start;

    show slave statusG

     

    # 正常

    2.UUID相同

    报错:

    Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

    报错原因:

    由于我这个slave从的机器是通过虚拟机克隆而来的,mysql都是安装好的,所以出问题。

    解决方式:

    (1) 把这个文件重命名,数据库找不到会重新创建一个
    
    mv /opt/mysql5.7/data/auto.cnf /opt/mysql5.7/data/auto.cnf.bak
    
    (2) 重启数据库
    
    systemctl restart mysqld.server
  • 相关阅读:
    C#.Net Winform 应用程序莫名其妙崩溃。
    不小心点击安装了搜狗手机助手,顿时有一种草搜狗全体人员的感觉。
    家乐福张江店班车时刻表
    为什么学习设计模式
    同一端口如何区分不同的Socket
    用命令行CMD .bat 相关操作 如: 创建快捷方式 复制文件等
    C++ 时间获取和时间测量
    get all ODBC drivers 驱动
    命令行 编译C#.NET项目
    如何打开.hlp文件指定的topic
  • 原文地址:https://www.cnblogs.com/zezhou/p/11523710.html
Copyright © 2020-2023  润新知