在linux下搭建主从机数据库

Posted on 2021-09-08 21:21  枫小子z  阅读(81)  评论(0)    收藏  举报

使用docker创建数据库从机进行读写分离

1.拉取指定的mysql镜像
  1. 登录并获取镜像

    # 登录
    docker login -u fengxiaozi -p
    
    # 获取镜像
    docker pull mysql:5.7.35
    
2.为docker创建配置文件
  1. 建立mysql-slave文件夹作为docker中mysql的配置文件

    # 创建文件夹
    mkdir mysql-slave
    #  进入文件夹创建配置
    cd mysql-slave
    # 创建从机数据存放的文件
    mkdir data
    # 拷贝主机的配置文件同时也作为从机的配置文件
    cp /etc/my.cnf ./
    
3.修改主从机的配置文件
  1. 修改主机配置文件

    1. 目的

      1. 设置主机的id号, mysql通过id号来识别主从机
      2. 创建二进制文件的生成地址, 通过查看二进制文件, 获取主机地址, 让从机能够找到当前主机
    2. 具体操作

      1. 打开mysql的配置文件

        vim /etc/my.cnf
        
      2. 修改配置文件

        # 增加下面的两行
        server-id=1	 # 设置主机id为1
        log-bin=/var/lib/mysql/mysql-bin.log	# 设置二进制日志文件的存放地址
        
      3. 重启mysql

        systemctl restart mysqld
        
  2. 修改从机的配置文件

    1. 目的

      1. 设置从机不生成日志
      2. 设置从机的id号
    2. 具体操作

      1. 修改mysql-slave下面的配置文件

        1. 打开配置文件

          vim my.cnf
          
        2. 修改配置文件

          general-log=0  # 设置从机不生成日志文件
          server-id=2	   # 设置从机id,只要不是1就ok
          
4.启动从机并冷热备份
  1. docker启动从机数据库

    docker run -d --name=mysql-slave -e MYSQL_ROOT_PASSWORD="密码" -v /root/mysql-slave/data:/var/lib/mysql -v /root/mysql-slave/my.cnf:/etc/my.cnf --network=host mysql:5.7.35
    
    #  -e MYSQL_ROOT_PASSWORD="密码": 设置从机数据的密码
    #  -v /root/mysql-slave/data:/var/lib/mysql: 设置从机数据存放的真实地址
    #  -v /root/mysql-slave/my.cnf:/etc/my.cnf: 设置从机配置文件与真实地址的映射关系
    #  --network=host: 设置从机数据库的网络地址, 与本机地址一致
    #  mysql:5.7.35: 根据myql:5.7.35建立容器
    
  2. 冷备份(将主数据库中的数据导入到从机数据库中)

    # 从主数据库中导出数据
    mysqldump -uroot -p --all-databases --lock-all-tables > master_db.sql
    
    # 将数据导入到从机数据库中
    mysql -uroot --host=ip --port=8306 -p < master_db.sql
    
  3. 开启热备份

    1. 在主数据库中建立从机账户

      #  登录主机的数据库
      mysql –uroot –p
      
      # 创建从机账号
      GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by '从机密码';
      
      # 刷新权限
      FLUSH PRIVILEGES;
      
      # 展示二进制文件信息, 用于从机定位到主机
      SHOW MASTER STATUS;
      
    2. 从机连接主数据库

      # 登录从机数据库
      mysql -uroot -p -h 127.0.0.1 --port=8306
      
      # 从机通过二进制文件与远程主机建立联系
      change master to master_host='127.0.0.1', master_user='slave', master_password='slave',master_log_file='mysql-bin.000012', master_log_pos=901;
      
      # 开启从机服务
      start slave;
      
      # 展示从机服务状态, 查看是否配置成功
      show slave status \G