暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Mysql 主从同步/主从复制/读写分离

张先生的资料库 2021-07-12
1252

一、环境准备

准备两个Mysql数据库(虚拟机或者一台机器安装两个Mysql)

本文使用的两台Mysql数据库

一台是阿里云的Ubuntu18.04 

Mysql8.0 Master 39.103.193.55:3777

一台是Hyper-V 虚拟机CentOS8.0  

Mysql8.0 Slave 39.103.193.55:3306(通过Frp 映射到公网3306端口)

注:两台Mysql 地址要相互可以ping通

CentOS8.0 安装Mysql方法    请查看历史消息

Ubuntu18.04 安装Mysql方法 明日更新(附带Frp)

二、设置Master Mysql库(主库)

连接到Master Mysql 所在的服务器

1、Ubuntu18.04    切换路径到  /etc/mysql/mysql.conf.d

    cd etc/mysql/mysql.conf.d
    # 编辑配置文件
    vim mysqld.cnf

      server-id = 1               # 节点ID,确保唯一
      # log config
      log-bin = mysql-bin #开启mysql的binlog日志功能
      sync_binlog = 1 #控制数据库的binlog刷到磁盘上去 , 0 不控制,性能最好,1每次事物提交都会刷到日志文件中,性能最差,最安全
      binlog_format = mixed #binlog日志格式,mysql默认采用statement,建议使用mixed
      expire_logs_days = 7 #binlog过期清理时间
      max_binlog_size = 100m #binlog每个日志文件大小
      binlog_cache_size = 4m #binlog缓存大小
      max_binlog_cache_size512m #最大binlog缓存大
      binlog-ignore-db=mysql      #不生成日志文件的数据库,多个忽略数据库可以用逗号拼接,或者 复制这句话,写多行
      auto-increment-offset = 1   #自增值的偏移量
      auto-increment-increment = 1#自增值的自增量
      slave-skip-errors = all     #跳过从库错误

      2、重启数据库

        # Ubuntu 重启Mysql 
        service mysql restart
        # Ubuntu 启动Mysql
        service mysql start
        # Ubuntu 停止Mysql
        service mysql stop


        三、设置Slave Mysql 库(从库)

        连接到Slave Mysql 所在服务器

        1、CentOS 8.0       切换路径到  /etc/my.cnf.d

          cd etc/my.cnf.d
          # 编辑配置文件
          vim mysql-server.cnf

            server-id = 2                        # 节点ID,确保唯一
            log-bin=mysql-bin #开启mysql的binlog日志功能
            relay-log = mysql-relay-bin
            replicate-wild-ignore-table=mysql.%  #忽略不需要同步的mysql库
            replicate-wild-ignore-table=test.% #忽略不需要同步的test库
            replicate-wild-ignore-table=information_schema.% #忽略不需要同步的information_schema库

            2、重启数据库

              # 重启CentOS8.0 Mysql
              service mysqld restart
              # 启动CentOS8.0 Mysql
              service mysqld start
              # 停止CentOS8.0 Mysql
              service mysqld stop

              四、连接Master Mysql (主库)

              1、连接数据库

                mysql -u root -p

                输入密码(密码不显示)

                2、创建用于复制数据库的用户并授权

                  # % 表示可以在任意ip下连接 可以设置在特定ip下连接 (从库所在服务器ip)
                  # 可以将% 替换为ip地址
                  CREATE USER `用户名`@`%` IDENTIFIED BY '密码';
                  # 授权 % 和创建用户的含义相同
                  GRANT Replication Slave ON *.* TO `用户名`@`%`;
                  # 刷新
                  FLUSH PRIVILEGES;

                  3、查看主库状态

                  五、连接Slave Mysql (从库)

                  1、连接数据库

                    mysql -u root -p

                    密码不显示

                    2、配置Slave Mysql库(从库)

                      CHANGE MASTER TO MASTER_HOST = '39.103.193.55',
                      MASTER_USER = 'SlaveUser',
                      MASTER_PASSWORD = '密码',
                      MASTER_PORT = 3777,
                      MASTER_LOG_FILE = 'mysql-bin.000002',
                      MASTER_LOG_POS = 1369,
                      MASTER_RETRY_COUNT = 600,
                      MASTER_HEARTBEAT_PERIOD = 10000;
                      # MASTER_PORT 端口
                      # MASTER_LOG_FILE='mysql-bin.000002',#与主库File 保持一致
                      # MASTER_LOG_POS=1369 , #与主库Position 保持一致
                      # Master_Retry_Count限制重试次数,默认3600×24=86400。
                      # slave_net_timeout相当于主从心跳

                      3、启动Slave 库 

                         # 启动
                        start slave;
                         # 停止
                         stop slave;
                         # 查看从库状态
                         show slave status \G;
                         #取消从库命令
                         reset slave all

                        用颜色标注的来个都是YES 表示设置成功

                        注:不成功时可以在从库测试连接主库Mysql

                        命令

                          mysql -u SlaveUser -P 3777 -h 39.103.193.55 -p
                          输入密码


                          文章转载自张先生的资料库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                          评论