知识大全 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数据同步配置 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
UNIX设置MySql数据同步实现复制功能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! mys
MYSQL主从不同步延迟原理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! MySQL数据库主从
一次MySQL性能优化实战 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 过年这段时间由于线上数
知识大全 实战PHP5+Apache2.2+MySQL5.1配置经历
实战PHP5+Apache2.2+MySQL5.1配置经历 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
MYSQL主从同步故障一例及解决过程! 以下文字资料是由(历史新知网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 公司里有两个mys
实战Oracle数据库备份与恢复 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 用户可以留意一下
知识大全 Groovy入门—Grails实战之遗留数据库处理
Groovy入门—Grails实战之遗留数据库处理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!由
MySQL学习笔记-数据库概述及MySQL简介 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数
目标 原来MYSQL数据库位置是/var/lib/mysql/*移动到/home/lib/mysql/*下 环境 VMWORKSTATION centos mysql 步骤 #ser