zoukankan      html  css  js  c++  java
  • Mysql主从复制

    有兴趣的同学可以移步笔者的个人博客 更多博客

    基本配置

    Master库

    1.Master配置

    修改my.cnf:

    log-bin=mysql-bin                            #开启二进制文件
    server-id=2                                  #唯一标识
    binlog-ignore-db=information_schema          #忽略数据库计入binlog
    binlog-ignore-db=cluster
    binlog-ignore-db=mysql
    binlog-do-db=ufind_db                        #开启数据库计入binlog
    
    

    在Master数据库命令行中输入:

    #为从库分配用户,包含文件权限 (5.6以下)
    >GRANT FILE ON *.* TO '为从库分配的用户名'@'从库地址' IDENTIFIED BY '为从库分配的密码';  
    #为从库分配用户,包含复制二进制文件权限 (5.6及以上)
    >GRANT REPLICATION SLAVE ON *.* TO '为从库分配的用户名'@'从库地址' IDENTIFIED BY '为从库分配的密码';
    #更新权限
    >FLUSH PRIVILEGES
    
    2.验证

    键入命令

    mysql> show master status;
    

    显示以下信息则配置成功

    +------------------+----------+--------------+----------------------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                 | Executed_Gtid_Set |
    +------------------+----------+--------------+----------------------------------+-------------------+
    | mysql-bin.000004 |    28125 | ufind_db     | information_schema,cluster,mysql |                   |
    +------------------+----------+--------------+----------------------------------+-------------------+
    1 row in set (0.00 sec)
    

    如果执行这个步骤始终为 ** Empty set(0.00 sec) ** ,那说明前面的my.cnf没配置对。

    Slave库

    1.Slave配置

    修改my.cnf:

    log-bin=mysql-bin
    server-id=3                                #不可与主库重复
    binlog-ignore-db=information_schema
    binlog-ignore-db=cluster
    binlog-ignore-db=mysql
    replicate-do-db=ufind_db                   #同步数据库
    replicate-ignore-db=mysql                  #忽略同步的数据库
    log-slave-updates=1                        #io线程同步数据时也计入logbin中
    slave-skip-errors=all                      #跳过错误
    slave-net-timeout=60
    
    

    开启线程连接主库:

    mysql> stop slave;  #关闭Slave
    mysql> change master to master_host='主库地址',master_port=主库的端口号,master_user='主库分配的用户',master_password='主库分配的密码',master_log_file='主库的File', master_log_pos=主库的Position;
    mysql> start slave;  #开启Slave
    
    2.验证
    mysql> show slave statusG;
    

    在输出的信息中如果出现以下两条则说明主从配置成功
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

    主从运维命令

    master端:

    show master status; #查看状态:
    show processlist; #查看slave下mysql进程信息
    reset master; #慎用,将清空日志及同步position
    

    slave端:

    show slave status;
    
    show slave logs;
    
    show processlist;
    
    reset slave; #慎用,将清空slave配置信息、日志及同步position在从服务器上跳过错误事件
    
    reset slave #清除日志同步位置标志,并重新生成master.info
    
    show slave hosts #主机运行,看连入的从机的情况。
    

    手动同步(有数据时配置主从时使用)

    1. 先对主库锁表

    FLUSH TABLES WITH READ LOCK;

    1. 备份数据

    mysqldump -uroot -p -hlocalhost > mysql.bak.sql

    1. 解锁主库

    unlock tables;

    1. 查看主库的binlog文件和位置

    show master status; 找出File和Position

    1. 使用scp命令把文件移动到从库

    scp mysql.bak.sql root@192.168.128.101:/tmp/

    1. 在从库上停止同步

    mysql> stop slave;

    1. 导入数据

    mysql> source /tmp/mysql.bak.sql

    1. 设置从库的同步开始文件和开始位置

    change master to master_host = ‘主库主机’, master_user = ‘同步用户名’, master_port=3306, master_password=’’, master_log_file = ‘第3步中获取的file’, master_log_pos=第3步中获取的position;

    1. 从库上启动同步并检查

    mysql> start slave;

    mysql> show slave statusG 查看:

  • 相关阅读:
    eclipse中maven插件,改变默认仓库位置
    maven ArtifactTransferException:failure
    抽象工厂模式
    简单工厂模式,利用反射机制让简单工厂模式变得更灵活
    Android开发之获取系统版本号
    Android开发之ProgressDialog与ProgressBar
    Failed to initialize monitor Thread: Unable to establish loopback connection解决方法
    Android开发之通过反射获取到挂断电话的API
    Android Studio常用插件
    Proxifier设置代理
  • 原文地址:https://www.cnblogs.com/anning1994/p/10028035.html
Copyright © 2011-2022 走看看