免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2167 | 回复: 1
打印 上一主题 下一主题

[MySQL集群架构] mysql主主+lvs [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-10 22:53 |只看该作者 |倒序浏览
[MySQL集群架构] mysql主主+lvs
















测试机2台,分别为A,B,系统均为AS4。A的IP:192.168.17.21,B的IP:192.168.17.53。
1:安装mysql。
分别在A,B上执行
  1. [root@data1 ~]# cd /home
  2. [root@data1 ~]# tar zxvf mysql-5.1.32.tar.gz
  3. [root@data1 ~]# cd mysql-5.1.32
  4. [root@data1 ~]# ./configure --prefix=/usr/local/mysql --with-extra-charsets=all --enable-thread-safe-client --with-plugin-partition
  5. [root@data1 ~]# make
  6. [root@data1 ~]# make install
  7. [root@data1 ~]# /usr/local/mysql/bin/mysql_install_db --user=mysql
  8. [root@data1 ~]# cp support-files/my-medium.cnf /etc/my.cnf
  9. [root@data1 ~]# cd /usr/local/mysql/
  10. [root@data1 ~]# chown -R root .
  11. [root@data1 ~]# chown -R mysql var
  12. [root@data1 ~]# chgrp -R mysql .
  13. [root@data1 ~]# /usr/local/mysql/bin/mysqld_safe --user=mysql &
  14. [root@data1 ~]# /usr/local/mysql/bin/mysqladmin -uroot password newpasswd
复制代码
2:A,B互为主从
AB上分别添加复制用户,方便起见,用root测试。

mysql> GRANT ALL PRIVILEGES ON *.* TO [email=root@]root@"%[/email]" IDENTIFIED BY "newpasswd"  WITH GRANT OPTION;
mysql> flush privileges;

A上,修改my.cnf文件,[mysqld]下添加:

  1. .
  2. .
  3. .
  4. auto-increment-increment = 2
  5. auto-increment-offset = 2
  6. server-id = 10
  7. log-error = /usr/local/mysql/var/data1.err
  8. log-bin = /usr/local/mysql/var/mysql-master-bin.log
  9. binlog-do-db = db1
  10. binlog-do-db = db2
  11. binlog-do-db = db3
  12. server-id = 2
  13. master-host = 192.168.17.21
  14. master-user = root
  15. master-password = newpasswd
  16. master-port = 3306
  17. master-connect-retry=60
  18. replicate-do-db=db1
  19. replicate-do-db=db2
  20. replicate-do-db=db3
  21. log-bin=/usr/local/mysql/var/mysql-slave-bin.log
复制代码
B上,修改my.cnf文件,[mysqld]下添加:

  1. auto-increment-increment = 2
  2. auto-increment-offset = 1
  3. server-id = 1
  4. log-error = /usr/local/mysql/var/data2.err
  5. log-bin = /usr/local/mysql/var/mysql-master-bin.log
  6. binlog-do-db = db1
  7. binlog-do-db = db2
  8. binlog-do-db = db3
  9. server-id = 20
  10. master-host = 192.168.17.21
  11. master-user = root
  12. master-password = newpasswd
  13. master-port = 3306
  14. master-connect-retry=60
  15. replicate-do-db=db1
  16. replicate-do-db=db2
  17. replicate-do-db=db3
  18. log-bin=/usr/local/mysql/var/mysql-slave-bin.log
复制代码
A,B上重新启动mysql。
[root@data1 ~]#mysqladmin -uroot -pnewpasswd shutdown
[root@data1 ~]#/usr/local/mysql/bin/mysqld_safe &
A上进入mysql,并查看master状态
[root@data1 ~]# mysql -uroot -pnewpasswd
mysql> show master status;
+------------------------+----------+--------------------------------+------------------+
| File                   | Position | Binlog_Do_DB                   | Binlog_Ignore_DB |
+------------------------+----------+--------------------------------+------------------+
| mysql-slave-bin.000018 | 44305519 | db1,db2,db3                    |                  |
+------------------------+----------+--------------------------------+------------------+
进入B,设置B为A的从。
[root@data2 ~]# mysql -uroot -pnewpasswd
mysql>slave stop;
mysql>change master to
mysql>master_host='192.168.17.21',
mysql>master_user='root',
mysql>master_password='newpasswd',
mysql>master_port=3308,
mysql>master_log_file='mysql-slave-bin.000018',
mysql>master_log_pos=44305519;
mysql>slave start;
mysql> show master status;
+------------------------+----------+--------------------------------+------------------+
| File                   | Position | Binlog_Do_DB                   | Binlog_Ignore_DB |
+------------------------+----------+--------------------------------+------------------+
| mysql-slave-bin.000010 | 42354594 | db1,db2,db3                    |                  |
+------------------------+----------+--------------------------------+------------------+
1 row in set (0.00 sec)
进入A:
  1. mysql>slave stop;
  2. mysql>change master to
  3. mysql>master_host='192.168.17.53',
  4. mysql>master_user='root',
  5. mysql>master_password='newpasswd',
  6. mysql>master_port=3308,
  7. mysql>master_log_file='mysql-slave-bin.000010',
  8. mysql>master_log_pos=42354594;
  9. mysql>slave start;
复制代码
3:安装LVS
A上虚拟一个网卡,IP地址为192.168.17.88,即VIP。
  1. [root@data1 ~] touch /etc/sysconfig/network-scripts/ifcfg-eth0:1
  2. [root@data1 ~] vi /etc/sysconfig/network-scripts/ifcfg-eth0:1


  3. DEVICE=eth0:1
  4. BOOTPROTO=none
  5. HWADDR=
  6. ONBOOT=yes
  7. TYPE=Ethernet
  8. IPADDR=192.168.17.88
  9. NETMASK=255.255.255.0
  10. USERCTL=no
  11. IPV6INIT=no
  12. PEERDNS=no
复制代码
[root@data1 ~] ifup eth0:1
AB上分别执行lvs.sh,内容为:


  1. #!/bin/bash
  2. #description : start realserver  
  3. VIP=203.110.169.25
  4. /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
  5. /sbin/route add -host $VIP dev lo:0
  6. echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  7. echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
  8. echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
  9. echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce  
  10. sysctl -p
复制代码
A,B上分别安装ipvsadm和piranha:
  1. [root@data1 ~] cd /home/lvs
  2. [root@data1 lvs]# rpm -ivh ipvsadm-1.24-6.1.i386.rpm
  3. [root@data1 lvs]# rpm -ivh piranha-0.8.2-1.i386.rpm
  4. [root@data1 lvs]# /usr/sbin/piranha-passwd  
  5. New Password:  
  6. Verify:  
  7. Updating password for user piranha
  8. [root@data1 lvs]# service piranha-gui restart
  9. Shutting down piranha-gui: [  OK  ]
  10. Starting piranha-gui: [  OK  ]
  11. [root@data1 lvs]# chkconfig piranha-gui on
复制代码
登陆A的piranha进行配置,http://192.168.17.21:3636
把A的/etc/sysconfig/ha/lvs.cf复制到B上。
具体配置如下:


  1. serial_no = 14
  2. primary = 192.168.17.21
  3. service = lvs
  4. backup_active = 1
  5. backup = 192.168.17.53
  6. heartbeat = 1
  7. heartbeat_port = 539
  8. keepalive = 6
  9. deadtime = 18
  10. network = direct
  11. debug_level = NONE
  12. monitor_links = 0
  13. virtual mysql {
  14.       active = 1
  15.       address = 192.168.17.88 eth0:1
  16.       vip_nmask = 255.255.255.0
  17.       port = 3306
  18.       use_regex = 0
  19.       load_monitor = none
  20.       scheduler = wlc
  21.       protocol = tcp
  22.       timeout = 6
  23.       reentry = 15
  24.       quiesce_server = 0
  25.       server 21 {
  26.           address = 192.168.17.21
  27.           active = 1
  28.           weight = 1
  29.       }
  30.       server 53 {
  31.           address = 192.168.17.53
  32.           active = 1
  33.           weight = 1
  34.       }
  35. }
复制代码
AB上分别执行:
[root@data1 lvs]# service pulse start
至此,over。

测试了几天,进行了大量的数据库操作,至今没有报错。
方法虽然很简单,但是感觉蛮实用。
测试到月底,如果可行就开始上线。
有什么不对的和疏忽的地方请各位指正。

论坛徽章:
0
2 [报告]
发表于 2011-12-22 18:52 |只看该作者
学习鸟  谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP