RHEL6:mysql主从复制及高可用性

上传人:飞*** 文档编号:43443778 上传时间:2018-06-06 格式:DOC 页数:7 大小:230KB
返回 下载 相关 举报
RHEL6:mysql主从复制及高可用性_第1页
第1页 / 共7页
RHEL6:mysql主从复制及高可用性_第2页
第2页 / 共7页
RHEL6:mysql主从复制及高可用性_第3页
第3页 / 共7页
RHEL6:mysql主从复制及高可用性_第4页
第4页 / 共7页
RHEL6:mysql主从复制及高可用性_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《RHEL6:mysql主从复制及高可用性》由会员分享,可在线阅读,更多相关《RHEL6:mysql主从复制及高可用性(7页珍藏版)》请在金锄头文库上搜索。

1、1、MYSQL 复制概述复制概述 Mysql 内建的复制功能是构建大型,高性能应用程序的基础。将 Mysql 的数据分布到多个 系统上去,这种分布的机制,是通过将 Mysql 的某一台主机的数据复制到其它主机 (slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或 多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个 索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主 服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器 接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新

2、。 请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行。否则,你必须 要小心,以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间 的冲突。 mysql 支持的复制类型:支持的复制类型: 1.基于语句的复制: 在主服务器上执行的 SQL 语句,在从服务器上执行同样的语句。 MySQL 默认采用基于语句的复制,效率比较高。 一旦发现没法精确复制时, 会自动选着基于行的复制。 2.基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍. 从 mysql5.0 开始支持 3.混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就

3、 会采用基于行的复制。 复制解决的问题复制解决的问题 MySQL 复制技术有以下一些特点: (1) 数据分布 (Data distribution ) (2) 负载平衡(load balancing) (3) 备份(Backups) (4) 高可用性和容错行 High availability and failover 复制如何工作复制如何工作 整体上来说,复制有 3 个步骤: (1) master 将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events) ; (2) slave 将 master 的 binary log events

4、 拷贝到它的中继日志(relay log); (3) slave 重做中继日志中的事件,将改变反映它自己的数据。 下图描述了复制的过程:该过程的第一部分就是 master 记录二进制日志。在每个事务更新数据完成之前,master 在二日志记录这些改变。MySQL 将事务串行的写入二进制日志,即使事务中的语句都是 交叉执行的。在事件写入二进制日志完成后,master 通知存储引擎提交事务。 下一步就是 slave 将 master 的 binary log 拷贝到它自己的中继日志。首先,slave 开始一 个工作线程I/O 线程。I/O 线程在 master 上打开一个普通的连接,然后开始 bi

5、nlog dump process。Binlog dump process 从 master 的二进制日志中读取事件,如果已经跟上 master,它会睡眠并等待 master 产生新的事件。I/O 线程将这些事件写入中继日志。 SQL slave thread(SQL 从线程)处理该过程的最后一步。SQL 线程从中继日志读取事件, 并重放其中的事件而更新 slave 的数据,使其与 master 中的数据一致。只要该线程与 I/O 线程保持一致,中继日志通常会位于 OS 的缓存中,所以中继日志的开销很小。 复制配置:复制配置: 1)server1(192.168.7.201)和 server2

6、(192.168.7.202)安装好 mysql 并修改配置文件: yum -y install mysql-* service mysqld start chkconfig mysqld on vi /etc/f: 添加如下内容: mysqld log-bin=MySQL-bin /启用二进制日志 server-id=1 /数据库 ID 号, 为 1 时表示为 Master,其中 master_id 必须为 1 到 231 之间的 一个正整数值, 每个同步服务器都必须设定一个唯一的编号,否则同步就不能正常运行了; #在 server2 上配置为 server-id=2 修改后在 server

7、1 和 server2 主机上重启 mysqld 服务 2)server1 和 server2 相互设置为主从同步(双主) 在 Server1 主机上的设置:/建立一个帐户 cluster,并且允许从任何地址上来登陆,密码是 cluster。 在 Server2 主机上的设置:在 server2 和 server1 上执行相反的操作,使其互为主从,具体操作如下图所示: 在 Server2 主机上的设置:在 Server1 主机上的设置:可以在 f 文件中添加“binlog_do_db=数据库名”配置项(可以添加多个)来指定要同 步的数据库,有关 f 中有关其他同步的配置项请自行查看相关文档。

8、若主 MYSQL 服务器已经存在,只是后期才搭建从 MYSQL 服务器,在置配数据同步前应先 将主 MYSQL 服务器的要同步的数据库拷贝到从 MYSQL 服务器上(如先在主 MYSQL 上备份 数据库,再用备份在从 MYSQL 服务器上恢复) 2、MYSQL 高可性群集(主高可性群集(主/从模式)从模式) 在 server1 和 server2 上安装软件包 keepalived安装 keepalived 软件包与服务控制 在编译安装 Keepalived 之前,必须先安装内核开发包 kernel-devel 以及 openssl- devel、popt-devel 等支持库。编译安装 Ke

9、epalived 使用指定的 linux 内核位置对 keepalived 进行配置,并将安装路径指定为根目录,这样就无 需额外创建链接文件了,配置完成后,依次执行 make、make install 进行安装。使用 keepalived 服务 执行 make install 操作之后,会自动生成/etc/init.d/keepalived 脚本文件,但还需要手动添加 为系统服务,这样就可以使用 service、chkconfig 工具来对 keepalived 服务程序进行管理了。4)修改 server1/server2 配置文件 Server1 主机上的配置文件如下图: vi /etc/k

10、eepalived/keepalived.conf: ! Configuration File for keepalived global_defs router_id MYSQL-HA #确保和 server2 相同 vrrp_instance VI_1 state BACKUP 注: BACKUP 将根据优先级决定主或从;MASTER 指定为主;SLAVE 指定为 从.若一方为 MASTER,另一方为 SLAVE,则表示双机热备(即一主一从).interface eth0virtual_router_id 51 #确保和 server2 相同,同网内不同集群此项必须不同,否则发生 冲突pr

11、iority 100 #此处 server2 上设置为 50advert_int 1nopreempt #不抢占,只在 priority 高的 server1 上设置,server2 上此项注释掉authentication auth_type PASSauth_pass 1111virtual_ipaddress 192.168.7.200 virtual_server 192.168.7.200 3306 delay_loop 2lb_algo wrrlb_kind DRpersistence_timeout 60protocol TCPreal_server 192.168.7.201

12、3306 #server2 上此处改为 192.168.7.202(即 server2 本机 ip)weight 3notify_down /etcl/keepalived/bin/mysql.shTCP_CHECK connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 3306 Server1 主机上有关 keepalived.conf 文件的具体配置如下:Server2 主机的 keepalived.conf 参考上面的描述修改。 可以使用 scp 命令把 server1 主机上配置好的 keepalived.co

13、nf 文件拷贝到 server2 主机,只 要做简单修改即可,如下图所示:5)server1 和 server2 上都添加此检测脚本,作用是当 mysql 停止工作时自动关闭本机的 keepalived,从而实现将故障机器踢出(因每台机器上 keepalived 只添加了本机为 realserver). 当 mysqld 正常启动起来后,要手动启动 keepalived 服务。 vi /etc/keepalived /mysql.sh,内容如下:注:如果 mysql.sh 脚本不能正常执行的话,可以编写一个检测 mysqld 服务的是否正在运行 的脚本,如果 mysqld 服务停止,则在脚本中

14、停掉 keepalived 服务,实现故障切换。并设置 一个 cron 计划任务定期执行检测脚本。在企业网络内配置 cacti 或 nagios 对 mysqld 服务进 行监控,能在第一时间通知管理员 mysqld 服务出现异常。 vi /etc/rc.local:modprobe ip_vs #此模块如果无法自动加载则需手动加载 server1 和 server2 启动 keepalived 守护进程. /etc/init.d/keepalived start6)测试 在 server1 上创建一个测试数据库并在数据库中创建一个表,此时在 server2 上就会自动同 步在 server1 上已创建好的库和表,同样在 server2 上对数据库或表做任何修改也会同步到 server1 上。这说明 mysql 的主从同步实现了 在 server1 和 server2 分别执行 ip addr show dev eth0 命令查看 server1 和 server2 对 VIP(群集虚拟 IP)的控制权。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号