• docker mysql8主从配置


    使用docker部署在mysql8主从复制

    docker pull mysql:8.0.16
    

    1. 主机配置

    1. 新建挂载目录

      mkdir -p /usr/mysql/conf /usr/mysql/data
      
    2. 修改目录权限

      chmod -R 755 /usr/mysql/
      
    3. 修改配置文件

      vi /usr/mysql/conf/my.cnf
      

      my.cnf

      [client]
      #socket = /usr/mysql/mysqld.sock
      default-character-set = utf8mb4
      [mysqld]
      #pid-file        = /var/run/mysqld/mysqld.pid
      #socket          = /var/run/mysqld/mysqld.sock
      #datadir         = /var/lib/mysql
      #socket = /usr/mysql/mysqld.sock
      #pid-file = /usr/mysql/mysqld.pid
      datadir = /usr/mysql/data
      character_set_server = utf8mb4
      collation_server = utf8mb4_bin
      secure-file-priv= NULL
      # Disabling symbolic-links is recommended to prevent assorted security risks
      symbolic-links=0
      # Custom config should go here
      !includedir /etc/mysql/conf.d/
      
      log-bin = mysql-bin
      server-id =1
      innodb-file-per-table =ON
      skip_name_resolve=ON
      binlog-format=ROW
      binlog-do-db=Test #这里是需要同步的数据库
      
      
    4. 创建启动脚本

      start_mysql.sh

      docker stop mysql #停止容器
      docker rm mysql   #移除容器
      docker run --restart=unless-stopped -d --name mysql -v /usr/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /usr/mysql/data:/usr/mysql/data -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.16 #启动容器
      
    5. 赋予脚本启动权限

      chmod +x start_mysql.sh
      
    6. 运行主节点

      ./start_mysql.sh
      

    2. 从机配置

    1. 新建挂载目录

      mkdir -p /usr/mysql2/conf /usr/mysql2/data
      
    2. 修改目录权限

      chmod -R 755 /usr/mysql2/
      
    3. 修改配置文件

      vi /usr/mysql2/conf/my.cnf # 修改配置文件vi /usr/mysql/conf/my.cnf
      

      my.cnf

      #socket = /usr/mysql/mysqld.sock
      default-character-set = utf8mb4
      [mysqld]
      port = 3307
      #pid-file        = /var/run/mysqld/mysqld.pid
      #socket          = /var/run/mysqld/mysqld.sock
      #datadir         = /var/lib/mysql
      #socket = /usr/mysql/mysqld.sock
      #pid-file = /usr/mysql/mysqld.pid
      datadir = /usr/mysql2/data
      character_set_server = utf8mb4
      collation_server = utf8mb4_bin
      secure-file-priv= NULL
      # Disabling symbolic-links is recommended to prevent assorted security risks
      symbolic-links=0
      # Custom config should go here
      !includedir /etc/mysql/conf.d/
      
      server-id=2
      log-bin=mysql-bin
      binlog-format=ROW
      replicate-do-db=Test #这里是需要同步的数据库
      read_only=1 # 从库最好配置成可读,不然从库的更新操作可能会导致binlog 同步出现问题,这里对root用户无效
      
    4. 创建启动脚本

      start_mysql2.sh

      docker stop mysql2
      docker rm mysql2
      docker run --restart=unless-stopped -d --name mysql2 -v /usr/mysql2/conf/my.cnf:/etc/mysql/my.cnf -v /usr/mysql2/data:/usr/mysql/data -p 3307:3307 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.16
      
    5. 赋予脚本启动权限

      chmod +x start_mysql2.sh
      
    6. 运行从节点

      ./start_mysql2.sh
      

    3. 主从配置

    主机执行的命令

    show GLOBAL VARIABLES like '%log_bin%' #查看二进制日志是否开启
    show master logs; #查看主节点二进制日志列表,从节点配置的数据从这里取
    show GLOBAL VARIABLES like '%server%' #查看主节点的server id
    

    从机执行的命令

    STOP SLAVE; #关闭同步
    
    CHANGE MASTER TO
    MASTER_HOST='服务器主机地址',
    MASTER_USER='用户名',
    MASTER_PASSWORD='密码!',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=0;
    
    START SLAVE; # 开启同步
    
     START SLAVE; # 开启同步
     SHOW SLAVE STATUS\G; # 查看Slave的运行状态
    

    接下来在主库Test中创建的表和数据都会同步到从库了

  • 相关阅读:
    ubuntu下php无法载入mysql扩展
    Ngnix location匹配规则
    Maven 工程错误Failure to transfer org.codehaus.plexus:plexus-io:pom:1.0,Failure to transfer org.codehaus.plexus:plexus-archiver:jar:2.0.1
    把Java Web工程转换为基于Maven的Web工程
    关于"架构"
    CentOS 配置Tomcat服务脚本
    Maven部署web应用到远程服务器
    使用Maven + Jetty时,如何不锁定js css 静态资源
    java final修饰变量时的一种情况
    支付宝快捷支付接入问题
  • 原文地址:https://www.cnblogs.com/steven158/p/15619500.html
Copyright © 2020-2023  润新知