- 浏览: 129233 次
- 性别:
- 来自: 上海
最新评论
-
ranweizheng:
luokery 写道有失真...显然,存在失真是必然的,只是怎 ...
Java图片缩小后不失真的代码(缩略图) -
szhnet:
kree 写道szhnet 写道其实我在1楼说的不对,那个不能 ...
非阻塞通信,《Java网络编程精解》指误。 -
kree:
szhnet 写道其实我在1楼说的不对,那个不能用到达输入流的 ...
非阻塞通信,《Java网络编程精解》指误。 -
szhnet:
其实我在1楼说的不对,那个不能用到达输入流的未尾来理解。
非阻塞通信,《Java网络编程精解》指误。 -
leaow567:
同意楼上的观点
非阻塞通信,《Java网络编程精解》指误。
MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护日志文件的一个索引以跟踪日志循环。 当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知下一次更新。 在实际项目中,两台分布于异地的主机上安装有MySQL数据库,两台服务器互为主备,客户要求当其中一台机器出现故障时,另外一台能够接管服务器上的应用,这就需要两台数据库的数据要实时保持一致,在这里使用MySQL的同步功能实现双机的同步复制。 以下是操作实例:
1、数据库同步设置 主机操作系统:RedHat Enterprise Linux 5 数据库版本:MySQL Ver 14.12 Distrib 5.0.22 前提:MySQL数据库正常启动 假设两台主机地址分别为: ServA:10.240.136.9 ServB:10.240.136.149 1.1 配置同步账号 在ServA上增加一个ServB可以登录的帐号: MySQL>GRANT all privileges ON *.* TO tongbu@'10.240.136.149' IDENTIFIED BY '123456'; 在ServB上增加一个ServA可以登录的帐号: MySQL>GRANT all privileges ON *.* TO tongbu@'10.240.136.9' IDENTIFIED BY '123456'; 1.2 配置数据库参数 1、以root用户登录ServA,修改ServA的my.cnf文件 vi /etc/my.cnf 在[MySQLd]的配置项中增加如下配置: 1 default-character-set=utf82 3 log-bin=MySQL-bin4 5 relay-log=relay-bin6 7 relay-log-index=relay-bin-index8 9 server-id=110 11 master-host=10.240.136.14912 13 master-user=tongbu14 15 master-password=12345616 17 master-port=330618 19 master-connect-retry=3020 21 binlog-do-db=umsdb22 23 replicate-do-db=umsdb24 25 replicate-ignore-table=umsdb.boco_tb_menu26 27 replicate-ignore-table=umsdb.boco_tb_connect_log28 29 replicate-ignore-table=umsdb.boco_tb_data_stat30 31 replicate-ignore-table=umsdb.boco_tb_log_record32 33 replicate-ignore-table=umsdb.boco_tb_workorder_record 2、以root用户登录ServB,修改ServB的my.cnf文件 vi /etc/my.cnf 在[MySQLd]的配置项中增加如下配置: 1 default-character-set=utf82 3 log-bin=MySQL-bin4 5 relay-log=relay-bin6 7 relay-log-index=relay-bin-index8 9 server-id=210 11 master-host=10.240.136.912 13 master-user=tongbu14 15 master-password=12345616 17 master-port=330618 19 master-connect-retry=3020 21 binlog-do-db=umsdb22 23 replicate-do-db=umsdb24 25 replicate-ignore-table=umsdb.boco_tb_menu26 27 replicate-ignore-table=umsdb.boco_tb_connect_log28 29 replicate-ignore-table=umsdb.boco_tb_data_stat30 31 replicate-ignore-table=umsdb.boco_tb_log_record32 33 replicate-ignore-table=umsdb.boco_tb_workorder_record 1.3 手工执行数据库同步 假设以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 1.4 查看数据库同步状态 在MySQL命令提示符下执行: MySQL> show slave status\G 将显示同步进程的状态,如下所示,两行蓝色字体为slave进程状态,如果都为yes表示正常;红色字体表示同步错误指示,如果有问题会有错误提示: 1 *************************** 1. row ***************************2 3 Slave_IO_State: Waiting for master to send event4 5 Master_Host: 10.21.2.906 7 Master_User: tongbu8 9 Master_Port: 330610 11 Connect_Retry: 3012 13 Master_Log_File: localhost-bin.00000514 15 Read_Master_Log_Pos: 3975388216 17 Relay_Log_File: localhost-relay-bin.00006218 19 Relay_Log_Pos: 982666320 21 Relay_Master_Log_File: localhost-bin.00000522 23 Slave_IO_Running: Yes24 25 Slave_SQL_Running: Yes26 27 Replicate_Do_DB: bak,umsdb28 29 Replicate_Ignore_DB:30 31 Replicate_Do_Table:32 33 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_record34 35 Replicate_Wild_Do_Table:36 37 Replicate_Wild_Ignore_Table:38 39 Last_Errno: 040 41 Last_Error:42 43 Skip_Counter: 044 45 Exec_Master_Log_Pos: 3975388246 47 Relay_Log_Space: 982666348 49 Until_Condition: None50 51 Until_Log_File:52 53 Until_Log_Pos: 054 55 Master_SSL_Allowed: No56 57 Master_SSL_CA_File:58 59 Master_SSL_CA_Path:60 61 Master_SSL_Cert:62 63 Master_SSL_Cipher:64 65 Master_SSL_Key:66 67 Seconds_Behind_Master: 3、数据库同步测试 配置完数据库后进行测试,首先在网络正常情况下测试,在ServA上进行数据库操作,和在ServB上进行数据库操作,数据都能够同步过去。 拔掉ServB主机上的网线,然后在ServA上做一些数据库操作,之后再恢复ServB的网络环境,但是在ServB上却看不到同步的数据,通过命令show slave status\G查看发现Slave_IO_Running的状态是No,这种状态持续很长一段时间,数据才能同步到ServB上去。这是什么问题呢?同步延迟不会这么大吧。后来通过网上查找相关资料,找到一个同步延迟相关的参数: --slave-net-timeout=seconds 参数含义:当slave从主数据库读取log数据失败后,等待多久重新建立连接并获取数据。 于是在配置文件中增加该参数,设置为60秒 slave-net-timeout=60 重启MySQL数据库后测试,该问题解决。 4、 数据库同步失效的解决 当数据同步进程失效后,首先手工检查slave主机当前备份的数据库日志文件在master主机上是否存在,在slave主机上运行: MySQL> show slave status\G 一般获得如下的信息: 1 *************************** 1. row ***************************2 3 Slave_IO_State: Waiting for master to send event4 5 Master_Host: 10.21.3.2406 7 Master_User: tongbu8 9 Master_Port: 330610 11 Connect_Retry: 3012 13 Master_Log_File: MySQL-bin.00000114 15 Read_Master_Log_Pos: 36016 17 Relay_Log_File: localhost-relay-bin.00000318 19 Relay_Log_Pos: 49720 21 Relay_Master_Log_File: MySQL-bin.00000122 23 Slave_IO_Running: Yes24 25 Slave_SQL_Running: Yes26 27 Replicate_Do_DB: bak28 29 Replicate_Ignore_DB:30 31 Replicate_Do_Table:32 33 Replicate_Ignore_Table:34 35 Replicate_Wild_Do_Table:36 37 Replicate_Wild_Ignore_Table:38 39 Last_Errno: 040 41 Last_Error:42 43 Skip_Counter: 044 45 Exec_Master_Log_Pos: 36046 47 Relay_Log_Space: 49748 49 Until_Condition: None50 51 Until_Log_File:52 53 Until_Log_Pos: 054 55 Master_SSL_Allowed: No56 57 Master_SSL_CA_File:58 59 Master_SSL_CA_Path:60 61 Master_SSL_Cert:62 63 Master_SSL_Cipher:64 65 Master_SSL_Key:66 67 Seconds_Behind_Master: 0其中Master_Log_File描述的是master主机上的日志文件。 在master上检查当前的数据库列表: MySQL> show master logs; 得到的日志列表如下: +----------------------+-----------+ | Log_name | File_size | +----------------------+-----------+ | localhost-bin.000001 | 495 | | localhost-bin.000002 | 3394 | +----------------------+-----------+ 如果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; 注意:LOAD DATA FROM MASTER目前只在所有表使用MyISAM存储引擎的数据库上有效。
发表评论
-
c3p0 com.mysql.jdbc.CommunicationsException异常
2010-06-08 16:19 1313使用c3p0,偶尔会报异常: ERROR Thread-4 ... -
c3p0详细配置
2010-06-08 16:10 1089<c3p0-config> <defaul ... -
Mysql数据库的高级查询 多表查询,联表查询
2010-06-08 16:08 3386最近在做一个PHP+MYSQL的项目,说实话,第一次呢 不断 ... -
MySQL Join详解
2010-06-08 14:55 995还是先 Create table 吧 create ... -
玩转MySQL的外键约束之级联删除篇
2010-06-08 14:51 1342如今,许多关系型数据库管理系统都提供了外键约束这一强大的功能特 ... -
mysql的java连接池,用openSTA测试50人并发访问一万次,没有出现问题,很好用
2010-06-08 14:41 1272package com.gosafari.service; ... -
最规范的java连接mysql的实例
2010-06-08 14:33 1500import java.sql.Connection; ... -
MySQL模糊查询语法(推荐)
2010-06-08 14:28 1775$sql="select * from table_ ... -
设计高效合理的MySQL查询语句讲解
2010-06-08 14:19 1231数据库系统是管理信息 ... -
完整的连接池类
2010-06-08 14:09 1062Oracle连接池需要odbc连 ... -
如何用SQLyog来分析MySQL数据库详解
2010-05-05 17:23 1320用SQLyog来分析MySQL数据 ... -
mysql二进制增量备份
2010-05-05 17:18 2125mysqlbinlog -u root -p*** v:/ ... -
MySQL服务器的log-bin功能
2010-05-05 17:13 2285装mysql,运行一段时间后,在mysql目录下出现一堆类似m ... -
mysql事务处理
2010-05-05 17:10 6556由于项目设计里面,牵扯到了金钱的转移,于是就要用到MYSQL的 ... -
深入浅出mysql事务处理和锁机制
2010-05-05 17:09 11641. 事务处理和并发 ... -
MYSQL数据库常用命令集合
2010-05-05 16:37 982Mysql数据库是一个多用户,多线程的关系型数据库,是一个客户 ... -
java.net.SocketException: Broken pipe /Mysql在经过8小时不使用后会自动关闭已打开的连接
2010-05-05 16:34 2187MySQL 的默认设置下,当一个连接的空闲时间超过8小时 ... -
Mysql Date_format 及时间相关用法
2010-05-05 14:16 23885下面的查询选择了所有 ...
相关推荐
### MySQL 主从同步实战 #### 一、MySQL主从复制简介 MySQL的主从复制机制是一种数据冗余和高可用性的解决方案,通过该机制可以在一台或多台从服务器上复制主服务器的数据更新。这种方式通常用于备份、负载均衡...
- **冗余中间/应用层**:通过集群方式部署多台主机,共同提供相同的服务,实现高可用性。 - **冗余网络结构**:采用冗余的网络设备(如 DNS 服务器)来实现主从节点的路由、负载均衡及 Failover 时的物理层切换等...
- **启动MySQL服务**:分别在两台服务器上启动MySQL服务。 - **验证数据同步**:通过登录MySQL并执行相关查询语句,确认数据已成功同步。 #### 五、设置主从互备 ##### 1. 检查互备状态 - **查看状态**:使用`...
在本示例中,我们将使用两台机器,主机 IP 地址为 192.168.37.128,作为主服务器,从机 IP 地址为 192.168.37.129,作为从服务器。 在开始之前,我们需要在主服务器上安装 MySQL 5.5,并创建一个数据库 ku,用于...
- 在两台主机(host1和host2)上安装相同版本的MySQL(例如5.0.45)。 - 在master节点上,配置日志二进制文件(log-bin),设置server-id,并指定用于复制的数据库。 - 创建具有复制权限的专用用户,并在master上...
1.2 mysql 多实例安装实战......................................................................................................9 1.2.1 什么是 mysql 多实例? ...............................................
1. **安装 MySQL**:在两台主机(host1 和 host2)上分别安装MySQL,确保版本相同。 2. **配置 Master**:在Master上配置日志二进制文件(log-bin),设置server-id,并创建用于复制的用户`repl`。 3. **配置 Slave*...
实例013 安装MySQL数据库服务器 26 实例014 安装PHP.50 28 实例015 第4个PHP程序 30 1.5 XAMPP——Linux版PHP集成化安装包 31 实例016 XAMPP——Linux下PHP开发环境的集成化 31 实例017 Linux操作系统下启动XAMPP 32...
实例013 安装MySQL数据库服务器 26 实例014 安装PHP.50 28 实例015 第4个PHP程序 30 1.5 XAMPP——Linux版PHP集成化安装包 31 实例016 XAMPP——Linux下PHP开发环境的集成化 31 实例017 Linux操作系统下启动XAMPP 32...
Rsync是一个快速且高效的数据同步工具,它可以用来同步两台计算机之间的文件或整个目录。在Web集群环境中,Rsync常被用于数据备份和恢复操作,确保数据的一致性和完整性。 ##### 1.6 Sersync: Sersync是一个基于...
通过对MySQL数据库的Binlog日志进行监听,可以实时捕获订单变化,并通过Canal工具将这些数据实时同步到Kafka的`order`主题中。 #### 三、实现方案 针对不同规模的企业以及不同的数据量和实时性要求,有多种实现方案...
5.6.1 在两台机器上创建 RSA密钥 5.6.2 添加密钥到授权密钥文件中 5.7 unison的使用 5.7.1 本地使用unison 5.7.2 远程使用unison 5.7.3 unison参数说明 5.7.4 通过配置文件来使用unison 5.8 本章小结...
包括但不限于时间同步服务(NTP)、动态主机配置协议(DHCP)、文件共享服务(Samba)、网络文件系统(NFS)、文件传输协议(FTP)、Web服务器(Apache/Nginx)、数据库服务器(MySQL)等。 - **3.1.1 构建NTP时间...