sso项目实现MYSQL主从复制高可用.docx
《sso项目实现MYSQL主从复制高可用.docx》由会员分享,可在线阅读,更多相关《sso项目实现MYSQL主从复制高可用.docx(15页珍藏版)》请在冰豆网上搜索。
sso项目实现MYSQL主从复制高可用
sso项目实现MYSQL主从复制高可用
文档属性
标题
MYSQL主从复制高可用方案
作者
黄佳
创建日期
2007年11月26日
版本
Release1.0
修改日期
应用需求:
双机热备提供备份,冗余功能
安装环境:
NODE1主机名server113IP地址172.20.16.113
NODE2主机名dddl.137IP地址172.20.16.137
VIAIP(漂移IP)172.20.16.119
NODE1为主节点,NODE2为从节点,同步的数据库名SSO
在安装之前请确认下面的安装包不存在:
rpm-emysql-devel-4.1.20-1.RHEL4.1
rpm-emysql-bench-4.1.20-1.RHEL4.1
rpm-ephp-mysql-4.3.9-3.15
rpm-elibdbi-dbd-mysql-0.6.5-10.RHEL4.1
rpm-emod_auth_mysql-2.6.1-2.2
rpm-emysql-server-4.1.20-1.RHEL4.1
rpm-eMySQL-python-1.0.0-1.RHEL4.1.i386
rpm-eMyODBC-2.50.39-21.RHEL4.1.i386
rpm-eqt-MySQL-3.3.3-9.3.i386
rpm-emysqlclient10-devel-3.23.58-4.RHEL4.1.i386
rpm-emysqlclient10-3.23.58-4.RHEL4.1
rpm-ecyrus-sasl-sql-2.1.19-5.EL4.i386
rpm-eperl-DBD-MySQL-2.9004-3.1.i386
rpm-edovecot-0.99.11-4.EL4.i386
rpm-efreeradius-mysql-1.0.1-3.RHEL4.3.i386
rpm-emysql-4.1.20-1.RHEL4.1
安装准备:
相关工具包
redhatas4update432位
mysql-5.0.45-linux-i686-icc-glibc23.tar.gz
libnet-1.1.2.1-1.rh.el.um.1.i386.rpm
heartbeat-pils-2.0.4-1.el4.i386.rpm
heartbeat-stonith-2.0.4-1.el4.i386.rpm
heartbeat-2.0.4-1.el4.i386
perl-5.8.8.tar.gz
DBI-1.59.tar.gz
DBD-mysql-4.005.tar.gz
Time-HiRes-01.20.tar.gz
Period-1.20.tar.gz
Convert-BER-1.31.tar.gz
Mon-0.11.tar.gz
mon-0.99.3-47.tar.gz
一、安装MYSQL主从都要做
#cd/usr/local/
#tarzxvfmysql-5.0.45-linux-i686-icc-glibc23.tar.gz
#mvmysql-5.0.45-linux-i686-icc-glibc23mysql
#cdmysql
#groupaddmysql
#useradd-gmysqlmysql
#./scripts/mysql_install_db--user=mysql
#cpsupport-files/mysql.server/etc/rc.d/init.d/mysqld
#chkconfig--addmysqld
#/etc/rc.d/init.d/mysqldstart
主机和从机一样进行操作:
cp./support-files/my-f/etc/f
vi/etc/f
主机:
打开server-id=1关闭server-id=2;打开一个log-bin=mysql-bin;添加binlog-do-db=sso。
从机:
关闭server-id=1打开server-id=2;关闭所有的log-bin=mysql-bin。
mysql主从复制的配置
在主机上操作
#cd/sur/local/mysql/bin
#mysql
Mysql>createdatabasesso;#从机也需要建立一样的数据库
Mysql>setpasswordforroot@localhost=password(‘sso’);#给ROOT用户建立密码
Mysql>flushprivileges;
Mysql>GRANTreplicationslaveON*.*TOslave@172.20.16.137IDENTIFIEDBY'sso';
#./mysqldump-uroot-psso>sso.sql
#scpsso.sqlroot@172.20.16.137:
/tmp/backup
在从机上操作
Mysql>createdatabasesso;#从机需要建立与主机一样的数据库
导入主机的数据库
#./bin/mysql-uroot-psso
登入数据库操作
Mysql>setpasswordforroot@localhost=password(‘sso’);#给ROOT用户建立密码
Mysql>flushprivileges;
Mysql>CHANGEMASTERTO
MASTER_HOST='172.20.16.113',
MASTER_PORT=3306,
MASTER_USER='slave',----------------此帐号和密码是在主服务器上建立一个复制帐号
MASTER_PASSWORD='sso',
MASTER_LOG_FILE='mysql-bin.000014',-------这个在主机上通过
Mysql>showmasterstatus;命令获得
MASTER_LOG_POS=98;----------------------------这个在主机上通过
Mysql>showmasterstatus;命令获得
Mysql>Slavestart;
Mysql>showslavestatus\G;
检查一下Master_Log_File和Master_Log_Pos是不是和主机的一样同时下面两个必须都为YES才对。
Slave_IO_Running:
Yes
Slave_SQL_Running:
Yes
二、HEARTBEAT软件包安装---------主从都需要作
#rpm-ivhlibnet-1.1.2.1-1.rh.el.um.1.i386.rpm
#rpm-ivhheartbeat-pils-2.0.4-1.el4.i386.rpm
#rpm-ivhheartbeat-stonith-2.0.4-1.el4.i386.rpm
#rpm-ivhheartbeat-2.0.4-1.el4.i386.rpm
配置PERL环境
#rpm-eperl-DBD-Pg-1.31-6.i386
#rpm-eperl-DBI-1.40-8
#rm-rf/usr/lib/perl
#rm-rf/usr/bin/perl*
#rm-rf/usr/share/man/man1/perl*
#rm-rf/usr/local/bin/perl*
#cd/usr/lib
#tarzxvfperl-5.8.8.tar.gz
#mvperl-5.8.8perl
#cdperl
#./Configure-de
#make
#maketest
#makeinstall
#tarzxvfDBI-1.59.tar.gz
#cdDBI-1.59
#perlMakefile.PL
#make
#maketest
#makeinstall
#cd/usr/lib/
#tarzxvfDBD-mysql-4.005.tar.gz
#mvDBD-mysql-4.005dbd
#cddbd/DBD-mysql-4.005
#perlMakefile.PL
#make
#makeinstall
配置HEARTBEAT相关文件
cp/usr/share/doc/heartbeat-2.0.4/authkeys/etc/ha.d
Authkeys配置
#cd/etc/ha.d/
#viauthkeys
auth1#注释取消
#1crc
1sha1HI!
#注释取消,并把2变为1
#3md5Hello!
#chmod600authkeys
cp/usr/share/doc/heartbeat-2.0.4/haresources/etc/ha.d
vi/etc/ha.d/haresources添加如下一行
server113172.20.16.19
-----------------server113是指主服务器的主机名
-----------------172.20.16.19是指对外提供的虚拟ip
cp/usr/share/doc/heartbeat-2.0.4/ha.cf/etc/ha.d
ha.cf配置:
vi/etc/ha.d/ha.cf
改动的地方如下:
debugfile/var/log/ha-debug#注释取消
logfile/var/log/ha-log#注释取消
keepalive2#注释取消
deadtime30#注释取消
warntime10#注释取消
initdead120#注释取消
udpport694#注释取消
bcasteth0#Linux#注释取消
nodeserver113#添加
nodedddl.137#添加
vi/etc/hosts
添加如下两行:
172.20.16.113server113
172.20.16.137dddl.137
三、安装配置MON相关文件仅仅在主机上安装,从机无需安装
#tarzxvfTime-HiRes-01.20.tar.gz
#cdTime-HiRes-01.20
#perlMakefile.PL
#make
#makeinstall
#tarzxvfPeriod-1.20.tar.gz
#cdPeriod-1.20
#perlMakefile.PL
#make
#makeinstall
#tarzxvfConvert-BER-1.3101.tar.gz
#cdConvert-BER-1.3101
#perlMakefile.PL
#make
#makeinstall
#tarzxvfMon-0.11.tar.gz
#cdMon-0.11
#perlMakefile.PL
#make
#makeinstall
#cd/usr/lib/
#tarzxvfmon-0.99.3-47.tar.gz
#mvmon-0.99.3-47mon
#cdmon
#ln-s/usr/lib/mon/etc//etc/mon
mon.cf配置
#cpetc/example.cfmon.cf
vi/etc/mon/mon.cf添加如下:
hostgroupserver113172.20.16.119#主机名+虚拟IP
watchserver113#监控的主机
servicemysqld#监控MYSQL服务
interval5s
monitormysql.monitor#负责监控MYSQL服务的文件
periodwd{Mon-Sun}
alertbring-ha-down.alert#负责停止HEARTBEAT的文件
alertmail.alerthuangjia@#发送电邮的参数
upalertmail.alerthuangjia@
alertevery600s
alertafter3
#cd/usr/lib/mon
#mvmon.d/msql-mysql.monitormon.d/mysql.monitor
vi/usr/lib/mon/mon.d/mysql.monitor添加如下:
for$host(@ARGV){
my($dbh)=DBI->connect("DBI:
mysql:
database=sso;host=localhost","root","sso",{'PrintError'=>1});
if(!
$dbh){
push(@failures,$host);
push(@details,"$host:
Couldnotconnectto$modeserveron$options{port}:
".$DBI:
:
errstr."\n");
next;
}
#vi/usr/lib/mon/alert.d/bring-ha-down.alert添加如下一行
/etc/rc.d/init.d/heartbeatstop
#chmod755/usr/lib/mon/alert.d/bring-ha-down.alert
#vi/etc/rc.d/rc.local#添加MON自启动
/usr/lib/mon/mon-f-c/usr/lib/mon/etc/mon.cf
需要检查文件权限
bring-ha-down.alert#chmod755
mysql.monitor#chmod755
authkeys#chmod600
都配置完成就重新启动一下服务器吧。
所有的配置都会自动执行的。
启动服务器顺序,先启动主服务器再启动从服务器。
通过tail/var/log/messages和tail/var/log/ha-log来查看是否运行正常,ps–ef也可以看到进程的状态,如果主节点MYSQL服务停止就会发送EMAIL到你的邮箱里面。
四、测试
1、测试heartbeat:
启动server113和dddl.137两台服务器的heartbeat,先启动主机再启动从机:
虚拟IP在主机有效,主机截图如下:
虚拟IP在从机无效,从机截图如下:
客户端截图(172.20.16.119为虚拟IP):
当把主机的服务停止后,红色圈部分就是主机服务停止时,虚拟IP迁移的瞬间停顿。
客户端的截图如下:
虚拟IP迁移后主机的截图如下:
虚拟IP迁移后从机的截图如下:
2、测试Mon:
在主机上启动Mon服务;启动heartbeat服务;在主机和从机上启动mysql服务。
在sso数据库上创建表test,并在主机的test表中插入数据。
主机截图如下:
客户端截图如下:
虚拟IP连接状态如下:
从机截图如下:
停止主机的heatbeat服务后,截图如下:
通过客户端向数据库中插入数据,发现数据库中三条数据被正常插入,截图如下:
此时查看从机数据库的数据,三条数据同样被插入,截图如下:
此时查看主机数据库的数据,一条数据,截图如下:
主机Mon服务停止后,发送Mail,截图如下: