Mysql 主从复制

 

主数据库:IP1

从数据库:IP2

一.配置主数据库

    vi /etc/my.cnf    

    server-id=1
    log-bin=mysql-bin  允许mysql使用binlog,同时为主从复制打开了大门
    binlog_format=mixed //二进制日志的格式
    binlog-do-db=数据库名1(没有这个数据库,启动不会报错)
    expire-log-day。binlog过期时间,默认为10天。
  1.     重启mysql service mysqld restart
  2.     登录mysql : mysql -u root -p
  3.    查看状态:mysql> show variables like '%log_bin%';

    

    这里的 File 、Position 是在配置Salve的时候要使用到的.

     flush logs; 会多一个最新的bin-log日志
     show master status; 查看最后一个bin-log日志的相关信息
     reset master; 清空所有的bin-log日志

    

    

二.为从库配置用户和权限

   

mysql> GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY '123456'; 

mysql>flush privileges;

    GRANT REPLICATION SLAVE 赋予复制权限(grant all指的是授权所有操作权限(增删改查),*.*指的是所有数据库,slave指的是用户名,123456是密码,%指的是所要授权的远程IP地址。整一句的意思是,创建一个用户slave,密码为123456,然后将此用户授权给远程所有IP可以访问,此用户可以访问主服务器里的所有数据库。

三.配置从库

 

vi /etc/my.cnf

server-id=105(一般是IP最后一位)

重启mysql

执行:

mysql> CHANGE MASTER TO

-> MASTER_HOST='master_host_name',

-> MASTER_USER='replication_user_name',

-> MASTER_PASSWORD='replication_password',

-> MASTER_LOG_FILE='recorded_log_file_name',
-> MASTER_LOG_POS=308;

参数解释:MASTER_HOST  :  设置要连接的主服务器的ip地址

       MASTER_USER  :  设置要连接的主服务器的用户名

       MASTER_PASSWORD  :  设置要连接的主服务器的密码

       MASTER_LOG_FILE  :  设置要连接的主服务器的bin日志的日志名称,即第1步得到的信息

       MASTER_LOG_POS  :  设置要连接的主服务器的bin日志的记录位置,即第1步得到的信息,(这里注意,最后一项不需要加引号。否则配置失败)

启动同步

start slave;

查看状态

show slave status \G;

主从复制配置好后,如果不关闭slave,即使mysql重启,主从也会生效,不需要再次启动。

问题:

1.IO连接不上

一般是:

  • 主库和从库网络不通
  • 密码错误
  • pos不对

我这边是创建的用户有问题,重新创建就可以了。

2.当时删除从库的表后出现

我们可以明显的发现,我们的sql线程已经挂掉了。

         导致这个问题的原因是因为由于数据的不同步,导致我们在执行主从同步的时候出现了执行不了的sql,导致从机事务回滚了,所以sql的进程就被关闭了,常见的这个问题的出现方式:

  • 在从机上进行了写操作(非双机热备情况下)。
  • slave机器重启,事务回滚。
  • 各种原因导致的数据不同步。

解决1:

  • mysql> stop slave;
  • mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
  • mysql> start slave;

解决2:

停止从机服务:stop slave;

然后在主机上查看binlog文件的位置:show master status;

重新开始同步

2.有个问题,如果是本地win系统上的mysql复制过来的数据库和表,名称会默认全小写,win不支持lower_case_table_names=0的配置。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值