MySQL双向备份的实现方法

  

MySQL双向备份也被称为主主备份,即两个MySQL服务都是大师,其中任意一个服务又是另一个服务的奴隶。
  

  


  

  

服务器
  

  

           MySQL服务器   版本   IP地址               masterA   5.6.41   192.168.1.201         masterB   5.6.41   192.168.1.202            

  

注:备份的MySQL服务器版本尽量保持一致,不同的版本可能二进制日志格式不兼容。
  

  


  

  

<强>注意
  

  

操作过程中注意两边数据的一致! ! !

  

<强> masterA配置
  

  

my . cnf中所做         (mysqld)   #服务器唯一标识   服务器id=1   #二进制日志文件名   log-bin=mysql-bin      #需要备份的数据库,多个数据库用,分隔   binlog-do-db=piumnl   #需要复制的数据库,多个数据库用,分隔   replicate-do-db=piumnl   #中继日志文件名   relay_log=mysqld-relay-bin   #手动启动同步服务,避免突然宕机导致的数据日志不同步   skip-slave-start=对   #互为主从需要加入这一行   log-slave-updates=对   #禁用符号链接,防止安全风险,可不加   符号链接=0      #可不加   #解决-[警告]奴隶SQL:如果崩溃发生这种配置不保证继电器日志信息一致,Error_code: 0   master-info-repository=表   relay-log-info-repository=表   relay-log-recovery=1      #可不加   #禁用dns解析,会使授权时使用的域名无效   skip-host-cache   skip-name-resolve      sql_mode=NO_ENGINE_SUBSTITUTION STRICT_TRANS_TABLES      

<强> masterB配置
  

  

my . cnf中所做         #不再解释各个配置项   (mysqld)   服务器id=2   log-bin=mysql-bin      binlog-do-db=piumnl   replicate-do-db=piumnl   relay_log=mysql-relay-bin   skip-slave-start=对   log-slave-updates=对   符号链接=0      #解决-[警告]奴隶SQL:如果崩溃发生这种配置不保证继电器日志信息一致,Error_code: 0   master-info-repository=表   relay-log-info-repository=表   relay-log-recovery=1      skip-host-cache   skip-name-resolve      sql_mode=NO_ENGINE_SUBSTITUTION STRICT_TRANS_TABLES      之前      

<>强创建备份用户
  

  

masterA,masterB都要创建备份用户:

        创建用户“代表”@“%”被“代表”;#创建一个账户   格兰特复制奴隶>   显示主状态\ G;   #此处需要关注文件和位置值   之前      

开启备份

  

停止奴隶;         # master_log_file就是第一步操作的文件值   # master_log_pos就是第一步操作的位置值   修改主master_host=& lt; master_hostname>, master_user=& lt; rep_username>, master_port=& lt; master_port>, master_password=& lt; rep_password> mysql-log master_log_file=薄?00003年,master_log_pos=154;   开始奴隶;      

查看结果

        显示奴隶状态\ G;   #查看最重要的两项,两个都必须为是的,有一个为不都要去查看错误日志文件,看看什么地方存在问题   # Slave_IO_Running:是的   # Slave_SQL_Running:是的      

masterB   

反向重复masterA的操作
  

  


  

  

分别在masterA和masterB中插入数据,并查看另一台服务器是否及时出现预期的数据

  


  

  

<强> MySQL奴隶未能打开继电器日志
  

  

这应该是中继日志出现问题,可尝试如下操作

        停止奴隶;   刷新日志;   开始奴隶;      

<强>有致命错误1236年从主读取数据从二进制日志
  

  

从主库中拉取日志时,发现主库的mysql_bin。索引文件中的第一个文件不存在。

        #进行如下操作重置   #如果二进制日志或中继日志有其他作用,请勿进行如下操作   重置的主人;   重置的奴隶;   刷新日志;      

<强> & lt; database>灵活;table>
  

  

使用& lt; database>灵活;table>进行插入,更新和删除操作,将不会进行备份(这是巨坑)! ! !

MySQL双向备份的实现方法