mysql 主从复制

    xiaoxiao2022-07-12  142

    主从复制的原理

    主服务器 开启二进制文件,记录操作配置 唯一的 serverID获得master 二进制文件位置提供一个让 从服务器使用的,进行通信的账号 从服务器 配置 唯一的 serverID用master 提供的账号访问二进制文件

    首先master 服务器 将自己的操作数据库事件记录到二进制文件中,然后提供一个账号给从数据库,slave 从服务器会对这个二进制文件进行监听,一旦有改变,就用master提供的账号,将时间复制到自己的中继日志,然后执行操作。这个过程master 会提供一个专门的IO线程来操作,所以不会对正常的使用造成影响。

    安装多个数据库

    我的是在windows的,所有安装了3个服务

    localhost:3306;localhost:3310localhost:3320 具体 怎样安装多个服务,参考上一篇: https://blog.csdn.net/houdezaiwu1/article/details/90260359

    一 master 配置

    1. 修改 my.ini 添加master
    #=========主从复制关键配置===================== server_id=1 #主库和从库需要不一致,配一个唯一的ID编号,1至32。 手动设定 log-bin=master-bin #二进制文件存放路径,存放在根目录data #binlog-do-db=test #需要复制的库,多个库用逗号隔开,如果此项不配置所有主库都参与复制 #binlog-ignore-db=mysql #不需要复制的库,和上项同理 #=========主从复制关键配置=====================

    保存,重启服务。net start mysql

    登录查看状态show master status file 就是保存日志的二进制文件,position 107代表操作数据库的事件位置标记。
    2. 创建用于给从库使用的账号
    create user copyuser; #用户名就是 copyusergrant replication slave on . to ‘copyuser’@'127.0.0.1’identified by ‘123456’; # 分配权益flush privileges; #刷新权限

    二 slave 从服务器配置

    1. my.ini修改
    #========主从复制关键配置====================== server_id=2 #主库和从库需要不一致 #binlog-do-db=test #和主库说明一致 #binlog-ignore-db=mysql #和主库说明一致 #========主从复制关键配置======================
    2. 执行同步语句
    change master to master_host=‘127.0.0.1’,master_port=3306,master_user=‘copyuser’,master_password=‘123456’,master_log_file=‘master-bin.000001’,master_log_pos=0;
    3. 启动同步进程
    start slave # 开始同步
    4. 查看同步情况
    show slave status\G

    可以看到: Slave_SQL_Running : NO 还有last error,写明了具体的错误。 这是没有成功的,因为执行过程报错了, 执行命令跳过这个错误继续执行:

    set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

    下面就正常了 按照相同步骤,配置第二个从库,省略。。。。。

    三 验证

    登录sqlyong 可以看到已经同步了 略。。。。

    最新回复(0)