mysql 主从复制相关配置

来源:互联网 发布:java ssh协议 编辑:程序博客网 时间:2024/05/17 00:50

这几天刚好搞读写分离,一主两从,实现读写分离的前提是数据库要是实现数据同步:

  1. 在主库中对从库进行同步授权:
    注释: user :为从库的用户名 , ip :为从库所在服务器的ip地址,password : 为从库的密码

     mysql> grant replication slave on *.* to  'user'@'ip'identified by 'password'; 

    执行命令:刷新权限,使上面的授权起作用:flush privileges;

  2. 开启二进制文件(必须):配置数据库文件 my.cnf

    注释:log-bin: 二进制日志; server-id:服务器唯一的id ,必须是唯一 的,一般取ip的最后一段,在这里我取的是最后一段

        log-bin=mysql-bin    server-id=123

    在这里多说一句: lower_case_table_names=1 必须也要配置,忽略大小写问题 ,不然后续会有大坑,我就掉进去了

“`
如图所示:
这里写图片描述

  1. 给从库配置连接主库

    先查看主机(主库)的状态:

    mysql> show master status;

    +——————+———-+————–+——————+——————-+
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +——————+———-+————–+——————+——————-+
    | mysql-bin.000011 | 1883 | | | |
    +——————+———-+————–+——————+——————-+
    1 row in set (0.00 sec)
    file & position 先记下来后续配置从库使用:分别代表 二进制文件名 和 位置*

如图所示:
这里写图片描述

准备工作已做完然后给从库配置同步主库的命令:

注释:master_host:为主库ip地址
master_port:主数据库端口号
master_user:主数据库用户名
master_password:主数据库密码
master_log_file:二进制文件名,与上面的对应
master_log_pos:二进制文件位置,与上面的对应

命令:
mysql> change master to master_host=’192.168.124.129’,master_port=3306,master_user=’root’,master_password=’123456’,master_log_file=’mysql-bin.000011’,master_log_pos=1673;

如图所示:
这里写图片描述

开启同步
命令:开启从库同步 start slave
命令:停止从库同步 stop slave
查看从库状态:

mysql> show slave status\G;

两者都为yes 就ok了!

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

如图所示:
这里写图片描述

如果遇到 Slave_SQL_Running: No 问题,有可能是从库的二进制文件名 与 主库的二进制文件名不匹配,重新配置一下就ok了。