




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通过KeepAlived搭建MySQL双主模式的高可用集群系统一、整体架构企业级mysql集群具备高可用、可扩展、易管理、低成本的特点。下面将介绍企业环境中经常应用的一个解决方案,即MySQL的双主互备架构,主要设计思路是通过MySQL Replication技术将两台MySQL Server互相将对方作为自己的Master,自己又同时作为对方的Slave来进行复制。这样就实现了高可用构架中的数据同步功能,同时,将采用KeepAlived来实现Mysql的自动failover。在这个构架中,虽然两台MySQL Server互为主从,但同一时刻只有一个MySQL Server可读写,另一个MySQL Server只能进行读操作,这样可保证数据的一致性。整个架构下图所示。二、MySQL主主互备模式配置环境第一步要做的工作是在这两天机器上都安装mysql,在做主从复制的时候mysql的版本尽量保持一致。即使不一样一定要以主服务的版本为最高的版本,从服务器的版本不能高于主服务器的版本。1、Mysql的安装与配置Mysql5.6版本之后,编译mysql方式变为cmake安装cmake:#yum install cmake#cd mysql-5.6.17#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_cimake & make install如果没有就创建用户就创建如下用户:#groupadd mysql#useradd -g mysql mysql修改/usr/local/mysql权限:#chown -R mysql:mysql /usr/local/mysql#cd /usr/local/mysql进入安装路径,执行初始化配置脚本,创建系统自带的数据库和表:#scripts/mysql_install_db-basedir=/usr/local/mysql-datadir=/usr/local/mysql/data -user=mysql2、启动MySQL添加服务,拷贝服务脚本到init.d目录,并设置开机启动#cd /usr/local/mysql#cp support-files/mysql.server /etc/init.d/mysql#chkconfig mysql on#service mysql start -启动MySQL三、配置mysql主从服务器1、修改MySQL配置文件在默认情况下MySQL的配置文件是/etc/f。但我们需要修改的路径是自己安装MySQL的路径。首先修改DB1主机的配置文件,在/usr/local/mysql/f文件中的“mysqld”段添加如下内容:server-id = 1log-bin=mysql-binrelay-log = mysql-relay-binreplicate-wild-ignore-table=mysql.%replicate-wild-ignore-table=test.%replicate-wild-ignore-table=information_schema.%然后修改DB2主机的配置文件,在/usr/local/mysql/f文件中的“mysqld”段添加如下内容:server-id = 2log-bin=mysql-bin(如果只有一主一从,在从库上是不需要开启binlog日志的,后面是为了演示互为主从这才加上去的)relay-log = mysql-relay-binreplicate-wild-ignore-table=mysql.%replicate-wild-ignore-table=test.%replicate-wild-ignore-table=information_schema.%其中,server-id是节点标识,主、从节点不能相同,必须全局唯一。log-bin表示开启MySQL的binlog日志功能。“mysql-bin”表示日志文件的命名格式,会生成文件名为mysql-bin.000001、mysql-bin.000002等的日志文件。relay-log用来定义relay-log日志文件的命名格式。replicate-wild-ignore-table是个复制过滤选项,可以过滤掉不需要复制的数据库或表,例如“mysql.%“表示不复制mysql库下的所有对象,其他依此类推。与此对应的是replicate_wild_do_table选项,用来指定需要复制的数据库或表。2、手动同步数据库如果DB1上已经有mysql数据,那么在执行主主互备之前,需要将DB1和DB2上两个mysql的数据保持同步,首先在DB1上备份mysql数据,执行如下SQL语句:mysqlFLUSH TABLES WITH READ LOCK; (解锁:unlock tables;)Query OK, 0 rows affected (0.00 sec)在不退出终端的情况下,再开启一个终端直接打包压缩数据文件或使用mysqldump工具来导出数据。这里通过打包mysql文件来完成数据的备份,操作过程如下:rootDB1 # cd /usr/localrootDB1 lib# tar zcvf mysql.tar.gz mysqlrootDB1 lib# scp mysql.tar.gz DB2:/usr/local/将数据传输到DB2后,依次重启DB1和DB2上面的mysql。3、创建复制用户并授权首先在DB1的mysql库中创建复制用户,操作过程如图所示。mysql grant replication slave on *.* to repl_user9 identified by repl_passwd;然后在DB2的mysql库中将DB1设为自己的主服务器,操作如下所示。Change master to master_host=5, master_user=repl_user,master_password=repl_passwd,master_log_file=mysql-bin.000001,master_log_pos=431;这里需要注意master_log_file和master_log_pos两个选项,这两个选项的值刚好是在DB1上通过SQL语句“show master status”查询到的结果。接着就可以在DB2上启动slave服务了,可执行如下SQL命令:mysql start slave;下面查看DB2上slave的运行状态,如图所示。通过查看slave的运行状态发现,一切运行正常,这里需要重点关注的是Slave_IO_Running和Slave_SQL_Running,这两个就是在Slave节点上运行的主从复制线程,正常情况下这两个值都应该为Yes。另外还需要注意的是Slave_IO_State、Master_Host、Master_Log_File、Read_Master_Log_Pos、Relay_Log_File、Relay_Log_Pos和Relay_Master_Log_File几个选项,从中可以查看出mysql复制的运行原理及执行规律。最后还有一个Replicate_Wild_Ignore_Table选项,这个是之前在f中添加过的,通过此选项的输出值可以知道过滤掉了哪些数据库。到这里位置,从DB1到DB2的mysql主从复制已经完成了。接下来开始配置从DB2到DB1的mysql主从复制,这个配置过程与上面的完全一样,首先在DB2的mysql库中创建复制用户,操作如图grant replication slave on *.* to repl_user5 identified by repl_passwd;然后在DB1的mysql库中将DB2设为自己的主服务器,操作如下change master to master_host=9,master_user=repl_user,master_password=repl_passwd,master_log_file=mysql-bin.000001,master_log_pos=862;接着就可以在DB1上启动slave服务了,可执行如下SQL命令:mysql start slave;下面查看DB1上slave的运行状态,如图所示。从图上中可以看出Slave_IO_Running和Slave_SQL_Running都是Yes状态,表明DB1上复制服务运行正常。至此,mysql双主模式的主从复制已经配置完毕了。四、配置KeepAlived实现MySQL双主高可用在进行高可用配置之前,首先需要在DB1和DB2服务器上安装KeepAlived软件。KeepAlived的安装和配置过程如下:rootkeepalived-master app#tar zxvf keepalived-1.2.12.tar.gzrootkeepalived-master app#cd keepalived-1.2.12rootkeepalived-master keepalived-1.2.12#./configure -sysconf=/etc -with-kernel-dir=/usr/src/kernels/2.6.32-431.5.1.el6.x86_64rootkeepalived-master keepalived-1.2.12#makerootkeepalived-master keepalived-1.2.12#make installrootkeepalived-master keepalived-1.2.12#ln -s /usr/local/sbin/keepalived /sbin/rootkeepalived-master keepalived-1.2.12# chkconfig -add keepalivedrootkeepalived-master keepalived-1.2.12# chkconfig -level 35 keepalived on安装完成后,进入keepalived的配置过程。下面是DB1服务器上/etc/keepalived/keepalived.conf文件的内容。global_defs notification_email acassenfirewall.loc failoverfirewall.loc sysadminfirewall.loc notification_email_from Alexandre.Cassenfirewall.loc smtp_server smtp_connect_timeout 30 router_id LVS_DEVELvrrp_script check_mysqld script /etc/keepalived/mysqlcheck/check_slave.pl #检测mysql复制状态的脚本 interval 2 vrrp_instance VI_1 state BACKUP #在DB1和DB2上均配置为BACKUP interface eth0 virtual_router_id 80 priority 100 advert_int 2 nopreempt #不抢占模式,只在优先级高的机器上设置即可,优先级低的机器不设置 authentication #效验DB1和DB2需一致 auth_type PASS auth_pass qweasdzxc track_script check_mysqld virtual_ipaddress 4/24 dev eth0 #mysql的对外服务IP,即VIP 其中,/etc/keepalived/mysqlcheck/check_slave.pl文件的内容为:#!/usr/bin/perl -wuse DBI;use DBD:mysql;# CONFIG VARIABLES$SBM = 120;$db = mysql;$host = $ARGV0;$port = 3306;$user = root;$pw = xxxxxx;# SQL query$query = show slave status;$dbh = DBI-connect(DBI:mysql:$db:$host:$port, $user, $pw, RaiseError = 0,PrintError = 0 );if (!defined($dbh) exit 1;$sqlQuery = $dbh-prepare($query);$sqlQuery-execute;$Slave_IO_Running = ;$Slave_SQL_Running = ;$Seconds_Behind_Master = ;while (my $ref = $sqlQuery-fetchrow_hashref() $Slave_IO_Running = $ref-Slave_IO_Running; $Slave_SQL_Running = $ref-Slave_SQL_Running; $Seconds_Behind_Master = $ref-Seconds_Behind_Master;$sqlQuery-finish;$dbh-disconnect();if ( $Slave_IO_Running eq No | $Slave_SQL_Running eq No ) exit 1; else if ( $Seconds_Behind_Master $SBM ) exit 1; else exit 0; 这是个用perl写的检测mysql复制状态的脚本,ixdba是本例中的一个数据库名,读者只需修改文件中数据库名、数据库的端口、用户名和密码即可直接使用,但在使用前要保证此脚本有可执行权限。接着将keepalived.conf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 装修合同中合同签订与履行过程中的税收问题解析
- 商业综合体租户运营管理及物业服务合同
- 灌注桩施工劳务分包合同施工环境保护与污染治理协议
- 租赁合同担保法律效力与租赁合同终止条件
- 离婚协议书:涉及财产分配、子女抚养及情感修复方案
- 知识产权授权与转让合同-互联网内容版权
- 围棋直播运营工作总结
- 珠宝店个性化定制装修与品牌独特性塑造合同
- 高端离婚子女抚养及财产分割与监护权合同
- 人事部新员工入职培训
- 一年级新生家长会校长讲话:习惯奠基成长路家校同行护萌娃
- 2025【粮食购销合同范本】粮食购销合同
- 德邦防御性驾驶培训课件
- 煤场安全生产知识培训课件
- 客户开发思路课件
- 2025年人教版八年级地理上册全册教案
- 软骨分化关键分子机制-洞察及研究
- 2025年涉台知识竞赛试题及答案
- 黑龙江省哈尔滨市哈尔滨市第一中学校2024-2025学年度上高一期中考试语文试题
- 2025年广西壮族自治区招聘警务辅助人员考试真题及答案
- (完整版)人教八年级下册期末物理测试真题经典及解析
评论
0/150
提交评论