mysql主从复制配置

mysql主从复制配置

准备两台服务器,一台作为主库,一台作为从库。

主库:192.168.1.1
从库:192.168.1.2

#确保主数据库服务器的mysql可以通过外网访问,也就是可以用navicat连接到。

主数据库配置:

  1. 创建一个用户
    create user rep1;

创建用户

  1. 给用户赋予权限

GRANT REPLICATION SLAVE ON . to ‘rep1’@‘192.168.1.2’ identified by ‘root’;

rep1: 新创建用户名称
192.168.1.2:是使用这个用户的服务器ip地址
root:设置新创建用户访问的密码

  1. 修改mysql的配置文件,my.cnf(window系统时my.ini)
    server-id=1
    binlog-do-db=test

test:这是需要同步的数据库,test是一个数据库,需要自己创建
server-id:用于区分主从库,主从库设置的值不能相同
修改完配置之后,需要重新启动mysql服务,systemctl restart mysql
重启之后,可以通过 show master status 命令去查看是否成功
查看修改配置结果

从库配置

如果mysql的版本大于5.5
打开mysql.in

server-id=2 				//不能与主库配置的值相同
    master-host=192.168.1.1  //主数据库的ip
    master-user=rep1       //第一步创建账号的用户名
    master-password=root   //第一步创建账号的密码
    master-port=3306
    master-connect-retry=60
    replicate-do-db=test        //要同步的mstest数据库,要同步多个数据库,就多加几个replicate-db-db=数据库名

mysql的版本小于5.5

打开mysql.ini添加一个server_id,随便写一个不重复的idserver-id
因为版本小于5.5的不能使用直接配置的方法,只能采用命令行的方式配置

CHANGE MASTER TO MASTER_HOST='192.168.1.1',MASTER_PORT=3306,MASTER_USER='rep1',MASTER_PASSWORD='root',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=107;

slave start;
show slave status\G;

mysql> show slave status \G:
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.1
                  Master_User: rep1
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 107
               Relay_Log_File: VM_0_12_centos-relay-bin.000005
                Relay_Log_Pos: 253
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 107
              Relay_Log_Space: 564
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1
1 row in set (0.00 sec)

Slave_IO_Running Slave_SQL_Running 都为 YES,则代表,配置成功

Slave_IO_Running 显示为NO,可能存在原因为server-id主从库配置的值一致,或者配置未生效、配置完后未重启mysql服务所导致

Slave_SQL_Running 显示为NO
可能是程序在slave上进行了写操作,也可能是重启后事物回滚导致的
解决办法一:

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

解决办法二:
在从库服务器:slave stop; 停掉slave服务

到主服务器上查看主机状态:
记录File和Position对应的值

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      107 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

然后回调从库服务器,将对应的值,改为主服务器所对应的值后,start slave; 启动slave服务即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值