知识大全 MYSQL数据库主主同步实战

Posted 数据库

篇首语:没有风暴,船帆只不过是一块破布。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 MYSQL数据库主主同步实战相关的知识,希望对你有一定的参考价值。

MYSQL数据库主主同步实战  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  MYSQL支持单向 异步复制 复制过程中一个服务器充当主服务器 而一个或多个其它服务器充当从服务器 主服务器将更新写入二进制日志文件 并维护日志文件的一个索引以跟踪日志循环 当一个从服务器连接到主服务器时 它通知主服务器从服务器在日志中读取的最后一次成功更新的位置 从服务器接收从那时起发生的任何更新 然后封锁并等待主服务器通知下一次更新

  在实际项目中 两台分布于异地的主机上安装有MYSQL数据库 两台服务器互为主备 客户要求当其中一台机器出现故障时 另外一台能够接管服务器上的应用 这就需要两台数据库的数据要实时保持一致 在这里使用MYSQL的同步功能实现双机的同步复制

  以下是操作实例

   数据库同步设置

  主机操作系统 RedHat Enterprise Linux

  数据库版本 mysql Ver Distrib

  前提 MYSQL数据库正常启动

  假设两台主机地址分别为

  ServA

  ServB

   配置同步账号

  在ServA上增加一个ServB可以登录的帐号

  Mysql>GRANT all privileges ON * * TO tongbu@ IDENTIFIED BY ;

  在ServB上增加一个ServA可以登录的帐号

  Mysql>GRANT all privileges ON * * TO tongbu@ IDENTIFIED BY ;

   配置数据库参数

   以root用户登录ServA 修改ServA的f文件

  vi /etc/f

  在[mysqld]的配置项中增加如下配置

     default character set=utf   log bin=mysql bin   relay log=relay bin   relay log index=relay bin index   server id=   master host=   master user=tongbu   master password=   master port=   master connect retry=   binlog do db=umsdb   replicate do db=umsdb   replicate ignore table=umsdb boco_tb_menu   replicate ignore table=umsdb boco_tb_connect_log   replicate ignore table=umsdb boco_tb_data_stat   replicate ignore table=umsdb boco_tb_log_record   replicate ignore table=umsdb boco_tb_workorder_record

   以root用户登录ServB 修改ServB的f文件

  vi /etc/f

  在[mysqld]的配置项中增加如下配置

       default character set=utf   log bin=mysql bin   relay log=relay bin   relay log index=relay bin index   server id=   master host=   master user=tongbu   master password=   master port=   master connect retry=   binlog do db=umsdb   replicate do db=umsdb   replicate ignore table=umsdb boco_tb_menu   replicate ignore table=umsdb boco_tb_connect_log   replicate ignore table=umsdb boco_tb_data_stat   replicate ignore table=umsdb boco_tb_log_record   replicate ignore table=umsdb boco_tb_workorder_record        手工执行数据库同步

  假设以ServA为主服务器 在ServB上重启mysql

  service mysqld restart

  在ServB上用root用户登录mysql 执行

  Mysql> stop slave;

  Mysql> load data from master;

  Mysql> start slave;

  在ServA上重启mysql

  service mysqld restart

   查看数据库同步状态

  在mysql命令提示符下执行

  Mysql> show slave status\\G

  将显示同步进程的状态 如下所示 两行蓝色字体为slave进程状态 如果都为yes表示正常;红色字体表示同步错误指示 如果有问题会有错误提示

  

       *************************** row ***************************   Slave_IO_State: Waiting for master to send event   Master_Host:   Master_User: tongbu   Master_Port:   Connect_Retry:   Master_Log_File: localhost bin   Read_Master_Log_Pos:   Relay_Log_File: localhost relay bin   Relay_Log_Pos:   Relay_Master_Log_File: localhost bin   Slave_IO_Running: Yes   Slave_SQL_Running: Yes   Replicate_Do_DB: bak umsdb   Replicate_Ignore_DB:   Replicate_Do_Table:   Replicate_Ignore_Table: umsdb boco_tb_connect_log umsdb boco_tb_menu umsdb boco_tb_workorder_record umsdb boco_tb_data_stat umsdb boco_tb_log_record   Replicate_Wild_Do_Table:   Replicate_Wild_Ignore_Table:   Last_Errno:   Last_Error:   Skip_Counter:   Exec_Master_Log_Pos:   Relay_Log_Space:   Until_Condition: None   Until_Log_File:   Until_Log_Pos:   Master_SSL_Allowed: No   Master_SSL_CA_File:   Master_SSL_CA_Path:   Master_SSL_Cert:   Master_SSL_Cipher:   Master_SSL_Key:   Seconds_Behind_Master:

   数据库同步测试

  配置完数据库后进行测试 首先在网络正常情况下测试 在ServA上进行数据库操作 和在ServB上进行数据库操作 数据都能够同步过去

  拔掉ServB主机上的网线 然后在ServA上做一些数据库操作 之后再恢复ServB的网络环境 但是在ServB上却看不到同步的数据 通过命令show slave status\\G查看发现Slave_IO_Running的状态是No 这种状态持续很长一段时间 数据才能同步到ServB上去 这是什么问题呢?同步延迟不会这么大吧 后来通过网上查找相关资料 找到一个同步延迟相关的参数

   slave net timeout=seconds

  参数含义 当slave从主数据库读取log数据失败后 等待多久重新建立连接并获取数据

  于是在配置文件中增加该参数 设置为 秒

  slave net timeout=

  重启MYSQL数据库后测试 该问题解决

   数据库同步失效的解决

  当数据同步进程失效后 首先手工检查slave主机当前备份的数据库日志文件在master主机上是否存在 在slave主机上运行

  mysql> show slave status\\G

  一般获得如下的信息

       *************************** row ***************************   Slave_IO_State: Waiting for master to send event   Master_Host:   Master_User: tongbu   Master_Port:   Connect_Retry:   Master_Log_File: mysql bin   Read_Master_Log_Pos:   Relay_Log_File: localhost relay bin   Relay_Log_Pos:   Relay_Master_Log_File: mysql bin   Slave_IO_Running: Yes   Slave_SQL_Running: Yes   Replicate_Do_DB: bak   Replicate_Ignore_DB:   Replicate_Do_Table:   Replicate_Ignore_Table:   Replicate_Wild_Do_Table:   Replicate_Wild_Ignore_Table:   Last_Errno:   Last_Error:   Skip_Counter:   Exec_Master_Log_Pos:   Relay_Log_Space:   Until_Condition: None   Until_Log_File:   Until_Log_Pos:   Master_SSL_Allowed: No   Master_SSL_CA_File:   Master_SSL_CA_Path:   Master_SSL_Cert:   Master_SSL_Cipher:   Master_SSL_Key:   Seconds_Behind_Master:         其中Master_Log_File描述的是master主机上的日志文件

  在master上检查当前的数据库列表

  mysql> show master logs;

  得到的日志列表如下

  + + +

  | Log_name | File_size |

  + + +

  | localhost bin | |

  | localhost bin | |

  + + +

  如果slave主机上使用的的Master_Log_File对应的文件在master的日志列表中存在 在slave主机上开启从属服务器线程后可以自动同步

  mysql> start slave;

  如果master主机上的日志文件已经不存在 则需要首先从master主机上恢复全部数据 再开启同步机制

  在slave主机上运行

  mysql> stop slave;

  在master主机上运行

  mysql> stop slave;

  在slave主机上运行

  mysql> load data from master;

  mysql> reset master;

  mysql> start slave;

  在master主机上运行

  mysql> reset slave;

  mysql>start slave;

cha138/Article/program/MySQL/201311/29380

相关参考

知识大全 MYSQL的master/slave数据同步配置

MYSQL的master/slave数据同步配置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 UNIX设置MySql数据同步 实现复制功能

UNIX设置MySql数据同步实现复制功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  mys

知识大全 MYSQL主从不同步延迟原理

MYSQL主从不同步延迟原理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  MySQL数据库主从

知识大全 一次MySQL性能优化实战

一次MySQL性能优化实战  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  过年这段时间由于线上数

知识大全 实战PHP5+Apache2.2+MySQL5.1配置经历

实战PHP5+Apache2.2+MySQL5.1配置经历  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 MYSQL主从同步故障一例及解决过程

MYSQL主从同步故障一例及解决过程!  以下文字资料是由(历史新知网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  公司里有两个mys

知识大全 实战Oracle数据库备份与恢复

实战Oracle数据库备份与恢复  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  用户可以留意一下

知识大全 Groovy入门—Grails实战之遗留数据库处理

Groovy入门—Grails实战之遗留数据库处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!由

知识大全 MySQL学习笔记-数据库概述及MySQL简介

MySQL学习笔记-数据库概述及MySQL简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数

知识大全 移动mysql的数据库

  目标  原来MYSQL数据库位置是/var/lib/mysql/*移动到/home/lib/mysql/*下  环境  VMWORKSTATION  centos  mysql  步骤  #ser