ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:49.25KB ,
资源ID:6286643      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6286643.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Lvs+Keepalived+Mysql半同步主主复制高可用方案.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Lvs+Keepalived+Mysql半同步主主复制高可用方案.docx

1、Lvs+Keepalived+Mysql半同步主主复制高可用方案Lvs+Keepalived+Mysql半同步主主复制高可用方案1.1 方案简介Lvs+keepalived作为目前比较流行的高可用解决方案,lvs提供负载均衡,keepalived作为故障转移,提高系统的可用性。但是一般的mysql高可用为了实现mysql数据的一致性,一般都是采用单点写入,本方案采用lvs+keepalived结合mysql5.6的半同步主主复制解决mysql单点问题。本方案实现的功能是当网络有问题、mysql有问题、服务器宕机、keepalived服务停止后,服务器能自动切换到备用机,当主服务器服务启动起来后

2、会自动切换回来。1.2 方案架构与说明 APP应用连接数据库URL统一为10.103.124.224,在微信这个系统连接数据库的只有一个app,同一时间只有一个数据库在写并同步到另一个数据库,并且设置keepalived策略为persistence_timeout=2小时,也就是应用一旦连接会保持该连接两个小时,除非该数据库宕机会切换到另一台数据库。两个小时后会重新选择服务器,其中两台master权重不相等,权重大的相对的被连接机率也大。1.3 方案优缺点优点: 安装配置简单,实现方便,高可用效率好,可以根据服务与系统的可用性多方面进行切换。 可以将写VIP和读VIP分别进行设置,为读写分离做

3、准备。 可以在后面添加多个从服务器,并做到负载均衡。缺点: 在当前所用数据库发生宕机而切换数据库时可能会导致当前事务丢失。1.4 方案实战1.4.1 适用场景这个方案适用于只有两台数据库服务器并且还没有实现数据库的读写分离的情况,读和写都配置VIP。这个方案能够便于单台数据库的管理维护以及切换工作。比如进行大表的表结构更改、数据库的升级等都是非常方便的。1.4.2 实战环境介绍服务器IPVIP系统Mysql KeepalivedMaster110.103.124.22110.103.124.224Redhat6 64bit5.6.101.2.7Master210.103.124.22310.1

4、03.124.224Redhat6 64bit5.6.101.2.71.4.3 Mysql的安装和配置在master1、master2服务器都进行安装,先卸载旧版本再安装:rpm -e mysql-server-5.1.52-1.el6_0.1.x86_64 -nodepsrpm -e mysql-5.1.52-1.el6_0.1.x86_64rpm -e mysql-libs-5.1.52-1.el6_0.1.x86_64 -nodepsrpm -ivh MySQL-server-5.6.10-1.el6.x86_64.rpmrpm -ivh MySQL-client-5.6.10-1.el

5、6.x86_64.rpmrpm -ivh MySQL-shared-5.6.10-1.el6.x86_64.rpmln s /usr/f /etc/f 1.4.4 Mysql的主主同步配置10.103.124.223:/etc/f配置:mysqld datadir=/var/lib/mysqlport=3306user=rootserver_id=1join_buffer_size = 1Gskip-external-lockingkey_buffer_size = 2Gmax_allowed_packet = 10Mtable_open_cache = 512sort_buffer_size

6、 = 20Mread_buffer_size = 20Mread_rnd_buffer_size = 32Mmyisam_sort_buffer_size = 256Mthread_cache_size = 512query_cache_size = 1024Mthread_concurrency = 128slow_query_log = ONslow_launch_time = 2innodb_flush_log_at_timeout = 2max_connections = 1024tmp_table_size=1Gmax_heap_table_size=1Ginnodb_buffer_

7、pool_size=1Ginnodb_additional_mem_pool_size=20Minnodb_log_buffer_size=64Minnodb_flush_log_at_trx_commit=0 innodb_lock_wait_timeout=30innodb_thread_concurrency=8default-storage-engine=myisamsql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESrpl_semi_sync_master_enabled=1rpl_semi_sync_master_timeout=3

8、000rpl_semi_sync_slave_enabled=1log_bin=/var/lib/mysql/binlogbinlog-do-db=masterslavebinlog-ignore-db=mysqlreplicate-do-db=masterslavebinlog_format=ROWslave-parallel-workers=2auto_increment_increment=2auto_increment_offset=1#skip_slave_startlog_slave_updates#read_onlyexpire_logs_days=1max_binlog_siz

9、e=1Ggtid_mode=ONenforce-gtid-consistency=truerelay_log_recovery=1max_relay_log_size=1Grelay_log_purge=1slave-skip-errors=allskip-name-resolvecharacter_set_server=utf8clientcharacter_set_client=utf8rpl_semi_sync_master_enabled=1rpl_semi_sync_master_timeout=3000rpl_semi_sync_slave_enabled=1character_s

10、et_server=utf8clientcharacter_set_client=utf8先注释上述5个参数然后登入mysqlSET PASSWORD = PASSWORD(123456);INSTALL PLUGIN rpl_semi_sync_master SONAME semisync_master.so;连接10.103.124.223数据库后执行:install plugin rpl_semi_sync_master SONAME semisync_master.so;install plugin rpl_semi_sync_slave SONAME semisync_slave.s

11、o;grant replication slave on *.* to repl10.103.124.221 identified by repl;FLUSH PRIVILEGES;change master to master_host=10.103.124.221,master_user=repl,master_password=repl,master_port=3306,master_log_file=binlog.000001,master_log_pos=120;start slave;10.103.124.221:/etc/f配置:mysqld datadir=/var/lib/m

12、ysqlport=3306user=rootserver_id=2join_buffer_size = 1Gskip-external-lockingkey_buffer_size = 2Gmax_allowed_packet = 10Mtable_open_cache = 512sort_buffer_size = 20Mread_buffer_size = 20Mread_rnd_buffer_size = 32Mmyisam_sort_buffer_size = 256Mthread_cache_size = 512query_cache_size = 1024Mthread_concu

13、rrency = 128slow_query_log = ONslow_launch_time = 2innodb_flush_log_at_timeout = 2max_connections = 1024tmp_table_size=1Gmax_heap_table_size=1Ginnodb_buffer_pool_size=1Ginnodb_additional_mem_pool_size=20Minnodb_log_buffer_size=64Minnodb_flush_log_at_trx_commit=0 innodb_lock_wait_timeout=30innodb_thr

14、ead_concurrency=8default-storage-engine=myisamsql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESrpl_semi_sync_master_enabled=1rpl_semi_sync_master_timeout=3000rpl_semi_sync_slave_enabled=1log_bin=/var/lib/mysql/binlogbinlog-do-db=masterslavebinlog-ignore-db=mysqlreplicate-do-db=masterslavebinlog_fo

15、rmat=ROWslave-parallel-workers=2auto_increment_increment=2auto_increment_offset=2#skip_slave_startlog_slave_updates#read_onlyexpire_logs_days=1max_binlog_size=1Ggtid_mode=ONenforce-gtid-consistency=truerelay_log_recovery=1max_relay_log_size=1Grelay_log_purge=1slave-skip-errors=allskip-name-resolvech

16、aracter_set_server=utf8clientcharacter_set_client=utf8连接10.103.124.221数据库后执行:install plugin rpl_semi_sync_master SONAME semisync_master.so;install plugin rpl_semi_sync_slave SONAME semisync_slave.so;grant replication slave on *.* to repl10.103.124.223 identified by repl;FLUSH PRIVILEGES;change maste

17、r to master_host=10.109.149.7,master_user=repl,master_password=repl,master_port=3306,master_log_file=binlog.000001,master_log_pos=465;start slave;service iptables statusservice iptables stopchkconfig iptables off清除linux防火墙,让3306能让其他机器连接1.4.5 Lvs的安装和配置在master1、master2服务器都进行安装:rpm -ivhipvsadm-1.25-9.e

18、l6.x86_64.rpmrpm -ivh popt-devel-1.13-7.el6.x86_64.rpmchkconfig ipvsadm onvi /usr/local/bin/lvs_real#!/bin/bash#description : start realserverVIP=10.103.124.224/etc/rc.d/init.d/functionscase $1 instart)echo start LVS of REALServer/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 upecho

19、 1 /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 /proc/sys/net/ipv4/conf/lo/arp_announceecho 1 /proc/sys/net/ipv4/conf/all/arp_ignoreecho 2 /proc/sys/net/ipv4/conf/all/arp_announce;stop)/sbin/ifconfig lo:0 downecho close LVS Directorserverecho 0 /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 0 /proc/sys/ne

20、t/ipv4/conf/lo/arp_announceecho 0 /proc/sys/net/ipv4/conf/all/arp_ignoreecho 0 /proc/sys/net/ipv4/conf/all/arp_announce;*)echo Usage: $0 start|stopexit 1esac保存退出,执行以下命令:chmod +x /etc/rc.d/init.d/functionschmod +x lvs_reallvs_real startecho which lvs_real /etc/rc.local1.4.6 Keepalived的安装在master1、mast

21、er2服务器都进行安装:./configure -prefix=/usr/local/keepalived-1.2.7make & make installln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/keepalivedln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalivedmkdir /etc/keepalivedln -s /usr/local/keepalived/sbin/keepaliv

22、ed /usr/sbin/keepalived1.4.7 Keepalived的配置master1的/etc/keepalived/keepalived.conf配置:global_defs router_id LVS_MASTERvrrp_instance VI_1 state MASTER interface eth4 #改成自己网卡的名字 virtual_router_id 51 priority 150 advert_int 1 authentication auth_type PASS auth_pass 1111 virtual_ipaddress 10.103.124.224 v

23、irtual_server 10.103.124.224 3306 delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.0 persistence_timeout 7200 protocol TCP real_server 10.103.124.223 3306 weight 1 TCP_CHECK connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3306 real_server 10.103.124.221 3306 weight 1 TCP_CH

24、ECK connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3306 Master2的/etc/keepalived/keepalived.conf配置:global_defs router_id LVS_MASTERvrrp_instance VI_1 state BACKUP interface eth4 #改成自己网卡的名字 virtual_router_id 51 priority 100 advert_int 1 authentication auth_type PASS auth_pass 1111

25、virtual_ipaddress 10.103.124.224 virtual_server 10.103.124.224 3306 delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.0 persistence_timeout 7200 protocol TCP real_server 10.103.124.223 3306 weight 1notify_down /root/when_db_down.sh #检测到服务down后执行的脚本 TCP_CHECK connect_timeout 3 nb_get_retry 3 de

26、lay_before_retry 3 connect_port 3306 real_server 10.103.124.221 3306 weight 1notify_down /root/when_db_down.sh #检测到服务down后执行的脚本 TCP_CHECK connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3306 1.4.8高可用方案测试方案搭建好以后就要进行全方位的可靠性测试了,看看是否达到了我们的预期效果,大致测试步骤如下: 停掉master1上的mysql,看看能否自动切换到maste

27、r2。 插入master1的数据看能否同步到master2数据库。 启动master上的mysql,看是否能切换回master。 启动master上的keepalived,看VIP是否会迁移回master上。 重启master的系统,看看切换过程是否OK1.5 监控与备份1.5.1mysql 宕机:Keepalived在检测到数据库宕机后可以执行指定脚本,上面配置的是/root/when_db_down.sh,其中脚本内容如下:Ssh root10.103.124.221 service mysql restart;1.5.2每5分钟清理mysql sleep或lock进程 :echo dat

28、e killing mysql sleep process. /app/crontab.logfor id in mysql -u root -ppassword, -e show processlist|grep -i -E sleep|locked | awk if($6100)print $1doecho killing pid $id /app/crontab.logmysql -u root -ppassword, -e kill $iddonecrontab 添加每5分钟执行:*/5 0 0 0 0 /root/kill_sleep_process.sh1.5.3 磁盘每小时检测用

29、量,如超80%则发邮件通知: a=df -l |awk -F print $5|xargs echo |awk -F print $2;a=$a%;if $a -gt 80 ; then sendEmail -f mail -t chembo -s -u EmergencyServer Disk Is Full -xu mail -xp Password -m Disk space is full! chembo do sth.ficrontab 添加每1小时执行:0 */1 0 0 0 /root/check_disk_use.sh1.5.4 数据库大表每天凌晨4点进行归档,备份并删除三个月前的数据: 微信系统中需要进行归档有数据库有: 微信用户消息分词日志表:WX_USER_KEY_WORD; 微信用户APP待推送消息表;WX_APP_SEND_POOL; 微信用户后端待推送消息表:WX_SEND_POOL; 微信用户推送消息日志表:WX_SEND_LOG; 微信用户消息日志表:WX_USER_MESSAGE_LOG; 微信附件表:WX_ATTACH_INFO; 归档脚本:threeMonthBeforeDate=date -

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1