zoukankan      html  css  js  c++  java
  • Mysql主从同步配置方案(Centos7)

      最近在做项目高可用时,需要使用数据同步。由于只有双节点,且采用主主同步可能存在循环同步的风险,故综合考虑采用Mysql主从同步(Master-Slave同步)。

      可能没有接触过Mysql数据同步时,可能会觉得数据同步很难,但你按照如下操作一遍之后,会发现原来同步如此简单,毕竟我们只需要会配置,会排查问题,底层具体实现Mysql团队早帮忙实现了。废话不多说,直入话题:

    (1)首先,保证有两台设备(主、从),分别在两台设备上安装Mysql数据库。安装完成之后,

    使用mysql -u[数据库用户名] -p[用户密码],若能够登陆mysql则表示安装成功。

    (2)编辑mysql配置文件,路径一般为/etc/mysql/mysql.conf.d/mysqld.cnf(用户在安装Mysql时指定的目录,

    如:/etc/my.conf等)。分别按要求在主、从mysql中的[mysqld]模块下添加如下内容:

       [mysqld]

      default-storage-engine=innodb

      innodb_file_per_table=1

      collation-server=uft8_general_ci

      init-connect='SET NAMES uft8'

      bind-address=0.0.0.0

      log_bin=mysql-bin

      relay_log=mysql-relay-bin

      expire_logs_days=100

      skip-slave-start=1

      binlog_do_db=[需要同步的数据库名称]

      binlog-ignore-db=mysql,sys,information_schema,performance_schema

      server-id=[主填写1,从填写2]

      auto-increment-increment=2

      auto-increment-offset=1

      open_files_limit=65535

      mac_connections=1000

      slave-skip-errors=all

    (3)shell连接主、从服务器,mysql -u[数据库用户名] -p[用户密码],分别登录到主、从节点mysql,创建同步用户repl,执行如下命令:

      grant all privileges on *.* to 'repl'@'%' identified by 'repl' with grant option;

      然后exit退出Mysql操作页,重新启动Mysql服务,命令如下:

      systemctl restart mysql.service

      然后进入主节点Mysql,查看Mysql的File列Positon列。执行命令:show master status;出现结果如下

       

    (4)登录到从服务器,mysql -u[数据库用户名] -p[用户密码]进入Mysql,执行:

      stop slave;

      reset slave;

      change master to master_host='[主节点IP]',master_user='repl',master_password='repl',master_log_file='[mysql-bin.000001,参考(3)中的File列]',master_log_pos=[245,参考(3)中的Postion列];

      exit;

      执行systemctl restart mysql.service重启Mysql服务。

    (5)启动从服务器slave库,mysql -u[数据库用户名] -p[用户密码]进入从节点Mysql,执行如下命令:

      start slave;

      执行:show slave statusG;查看备份服务状态。如果以下两个状态为Yes则表示主从同步成功。

           

       接下来,大家就可以尝试向主数据库中插入一条数据,看是够从数据库中会自动增加该条数据,是不是有点小激动呢?赶紧测试下吧。

      PS:若出现无法同步问题?

    (1)请查看上图中Master_Log_File属性、Read_Master_Log_Pos属性与主节点查询结果是否一致。

    (2)可能是从数据库连接主数据库超时,去吧连接延时改大一点吧。

    (3)如果上述无法解决,请查看mysql日志排查原因。

  • 相关阅读:
    ajax设置header头部之后造成跨域的解决方案
    浏览器中实现JavaScript计时器的4种创新方式
    js 生成随机数
    关于JavaScript中的reduce()方法
    JavaScript防流量劫持
    关于Python中的错误与异常,你是否了解的够仔细?
    Python爬虫实战之爬取糗事百科段子
    【推荐】英国金融时报推荐的数据可视化图表分类图
    华为方舟编译器开源官网正式上线
    PyTorch官方教程中文版
  • 原文地址:https://www.cnblogs.com/Mr-zhou/p/11470303.html
Copyright © 2011-2022 走看看