zoukankan      html  css  js  c++  java
  • mysql主从配置步骤

    主服务器配置:
    1)登陆MySQL数据库
    mysql>mysql -uroot -p123
    2)给从服务器设置授权用户
    mysql>grant all slave on *.* to user1@192.168.10.2 identified by "123";
    mysql>grant replication slave on *.* user1@192.168.10.2 identified by "123";
    3)修改主数据库服务器的配置文件my.cnf,开 启binlog,并设置server-id的值
    log-bin=mysql-bin
    server-id=1
    4)在主服务器上设置读锁定有效,确保没有数据库操作,以便获得一个一致性的快照
    mysql>flush tables with read lock;
    mysql>mysqldump test.user -l -F > /tmp/user.sql(推荐这种)
    5)查看主服务器上当前的二进制日志名和偏移量值
    mysql>show master status;
    6)目前主数据库服务器已经停止了更新操作,生成主数据库的备份,备份的方式有两种:
    1.cp全部的数据
    2.mysqldump备份数据方法
    如果主数据库的服务可以停止,那么直接cp数据文件应该是最快的生成快照的方法
    7)主数据库备份完毕后,主数据库可以恢复写操作,剩下的操作只需要在从服务器上去执行
    mysql>unlock tables;
    8)把主数据库的一致性备份恢复到从数据库上,把以上的压缩包解压后放到相应的目录即可。
     
    从服务器配置:
    1)修改从数据库的server-id,注意server-id的值必须是唯一的,不能和主数据库的配置相同,如果有多个从服务器,每个从服务器必须有自己唯一的server-id值。
    连接主服务器:
    (1)在从服务器上的配置文件中:
    server-id=2
    master-host=192.168.10.1
    master-user=user1
    master-password=123
    master-port=3306
    log-bin=mysql-bin
    #replicate-do-db=test
    #replicate-do-table=test.t1
    (2)重新启动MySQLd服务:
    pkill mysqld
    /usr/local/mysql/bin/mysqld_safe --user=mysql &
    (3)查看相应的主从复制进程列表有两种:
    1.processlist
    mysql>show processlist G;
    如果出现:
    state:waiting for master to send event
    //连接主数据库为成功,而且成功获取bin-log
    state:has read all ready log;waiting for the slave i/o thread to update it
    //成功执行bin-log日志,正在等待着去再次连接主数据库并更新获取bin-log日志
     
    2.status
    mysql>show slave statusG;
    如出现:
    slave_IO_running:YES
    //此进程负责从服务器从主服务器上读取binlog日志,并写入从服务器上的中继日志中。
    slave_SQL_running:YES
    //此进程负责读取并且执行中继日志中的binlog日志,
    #注以上两个都为YES则表明成功,只要其中一个进程的状态是no,则表示复制进程停止,错误原因可以从“last_error”字段的值中看到。
     
    (4)从数据库常用命令:
    1.start slave
    #启动复制进程
    2.stop slave
    #停止复制进程
    3.show slave status
    #查看从数据库状态
    4.show master logs
    #查看主数据库bin-log日志
    5.change master to
    #动态改变主服务器的配置
    6.show processlist
    #查看从数据库运行进程
     
    MySQL常见错误
    从数据库无法同步:
    show slave status显示slave_SQL_running为
    No,Seconds_Behind_Master为null
    原因:
    a.程序可能在slave上进行了写操作
    b.也可能是slave机器重启后,事务回滚造成的
    解决:方法一
    mysql>slave stop;
    mysql>set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
    mysql>slave start;
     
    解决:方法二
    slave库,mysql>slave stop;--停掉slave服务
    master库,mysql>show master status;
    得到主服务器上当前的二进制日志名和偏移量
     
    查看状态,然后到slave服务器上执行手动同步
    mysql>change master to
    master_host="192.168.10.1",
    master_user="user1",
    master_password='123',
    master_port=3306,
    master_log_file="mysql-bin.0000003",
    master_log_pos=98;
    启动slave服务,
    mysql>slave start;
    通过show slave status查看slave_SQL_running为
    YES,Seconds_Behind_Master为0即为正常
     
     
  • 相关阅读:
    linux命令练习
    Centos修改用户密码
    Git使用
    使用SecureCRT连接虚拟机中Linux系统 和 虚拟机网络配置
    CentOS里Tomcat端口开放
    Linux下安装Tomcat
    laravel 中将DB::select 得到的内容转为数组
    nginx 转发 由于php语法错误 导致的 50x
    windows 下后台启动 redis
    sublime 非常好用的注释工具
  • 原文地址:https://www.cnblogs.com/steven9898/p/11345346.html
Copyright © 2011-2022 走看看