MYSQL数据库主从复制

本文详细介绍了如何在Docker上安装MySQL数据库,并实现主从复制配置。包括安装MySQL镜像、启动容器、开启远程访问权限,以及Master和Slave节点的配置。在Master节点上设置binlog,授权Slave服务器同步权限,最后在Slave节点上进行主从关联并启动复制。通过这种方式,可以确保数据的安全性和高可用性。
摘要由CSDN通过智能技术生成

MYSQL数据库主从复制

mysql数据库安装

我是在docker上安装的mysql数据库的

  1. 查询mysql

    docker search mysql
    
  2. 安装mysql镜像

    docker pull mysql
    
  3. 查看镜像

    docker images
    
  4. 启动容器

    mysql-slave是容器名称  不能重复
    docker run -itd --name mysql-slave -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
    
  5. 查看容器

    docker ps -a
    
  6. 进入mysql容器,并登陆

    docker exec -it e815f19c9efa bash
    mysql -uroot -p
    
  7. 开启远程访问权限

    use mysql;
    select host,user from user;
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
    flush privileges;
    
  8. 安装完成之后使用远程工具连接试试, 第二台也是以上的操作

MySql完成主从复制

  1. Master节点配置/etc/mysql/my.conf(master节点执行)

    > vim /etc/mysql/my.cnf
    [mysqld]
    ## 同一局域网内注意要唯一
    server-id=100  
    ## 开启二进制日志功能,可以随便取(关键)
    log-bin=mysql-bin
    ## 复制过滤:不需要备份的数据库,不输出(mysql库一般不同步)
    binlog-ignore-db=mysql
    ## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
    binlog_cache_size=1M
    ## 主从复制的格式(mixed,statement,row,默认格式是statement)
    binlog_format=mixed
    

    操作完成需要重启mysql服务

  2. Slave节点配置/etc/mysql/my.conf(slave节点执行)

    > vim /etc/mysql/my.cnf
    [mysqld]
    ## 设置server_id,注意要唯一
    server-id=102
    ## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
    log-bin=mysql-slave-bin
    ## relay_log配置中继日志
    relay_log=edu-mysql-relay-bin
    ##复制过滤:不需要备份的数据库,不输出(mysql库一般不同步)
    binlog-ignore-db=mysql
    ## 如果需要同步函数或者存储过程
    log_bin_trust_function_creators=true
    ## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
    binlog_cache_size=1M
    ## 主从复制的格式(mixed,statement,row,默认格式是statement)
    binlog_format=mixed
    ## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
    ## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
    slave_skip_errors=1062
    

    操作完成需要重启mysql服务

  3. 在master服务器上授权slave服务器可以同步的权限

    mysql > mysql -uroot -pmaster的密码
    # 授予slave服务器可以同步master服务  这个是不同服务器上的
    mysql > grant replication slave, replication client on *.* to 'root'@'slave服务的ip' identified by 'slave服务器的密码';
    
    # 如果是使用docker的话 
    # 创建同步用户
    mysql >  CREATE USER slave;
    #设置同步用户权限
    mysql >  GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by slave;
    
    
    mysql > flush privileges;
    # 查看MySQL现在有哪些用户及对应的IP权限(可以不执行,只是一个查看)
    mysql > select user,host from mysql.user;
    

    查询master服务的binlog文件名和位置(master节点执行)

在这里插入图片描述

  1. slave进行关联master节点(slave节点执行)

    • 进入到slave节点:
    mysql > mysql -uroot -p你slave的密码
    
    • 开始绑定:
    # 如果是使用docker安装的mysql那么master服务器的ip就去查询dokcer容器ip使用下面的命令
    #   这个是查询dokcer容器ip地址命令  docker inspect 容器ID
    mysql> change master to master_host='master服务器ip', master_user='root', master_password='master密码', master_port=3306, master_log_file='mysql-bin.000001',master_log_pos=1178;
    
    #这里注意一下 master_log_file 和 master_log_pos 都是通过 master服务器通过show master status获得。
    
  2. 在slave节点上查看主从同步状态(slave节点执行)

    #启动主从复制
    mysql> start slave;
    Query OK, 0 rows affected (0.00 sec)
    #再查看主从同步状态
    mysql> show slave status\G;
    
    
    
    # 停止复制
    mysql> stop slave;
    

在这里插入图片描述

以上就算是主从复制成功了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值