Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7605514
  • 博文数量: 1769
  • 博客积分: 18684
  • 博客等级: 上将
  • 技术积分: 16352
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-02 10:28
个人简介

啥也没写

文章分类

全部博文(1769)

文章存档

2024年(15)

2023年(44)

2022年(39)

2021年(46)

2020年(43)

2019年(27)

2018年(44)

2017年(50)

2016年(47)

2015年(15)

2014年(21)

2013年(43)

2012年(143)

2011年(228)

2010年(263)

2009年(384)

2008年(246)

2007年(30)

2006年(38)

2005年(2)

2004年(1)

分类: LINUX

2010-11-05 11:20:05

一、环境
mysql-db1(192.168.1.251)
mysql-db2(192.168.1.252)
writer vip 192.168.1.180
read vip 192.168.1.181 192.168.1.182
二、软件安装
1、mysql安装及用户添加
tar -zxvf mysql-5.1.31.tar.gz
cd mysql-5.1.31
./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-extra-charsets=all --enable-assembler --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=innobase
make;make install
groupadd mysql
useradd -g mysql mysql
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
sed -i 's/skip-federated/#skip-federated/g' /etc/my.cnf
/usr/local/mysql/bin/mysql_install_db --user=mysql
chown -R mysql /usr/local/mysql/var
chgrp -R mysql /usr/local/mysql/.
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql
chmod 755 /etc/init.d/mysql
chkconfig --level 345 mysql on
echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
ldconfig
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
service mysql start
/usr/local/mysql/bin/mysqladmin -u root password root
service mysql stop
service mysql start
cd ..
grant all on *.* to identified by 'root';  //远程连接用的
grant replication slave,file on *.* to identified by 'slave'; //主主用的
grant super,replication client,process on *.* to identified by 'RepAgent';  //mmm用的
grant replication client on *.* to identified by 'RepMonitor'; //也是mm用的
2、mysql主主安装
[root@jboss1 ~]#vi /etc/my.cnf
....
server-id       = 2
replicate-do-db=akin
replicate-ignore-db=
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
master-host     =   192.168.1.252
master-user     =   replicant
master-password =   slave
master-port     = 3306
[root@jboss2 ~]# vi /etc/my.cnf
.....
server-id       = 1
replicate-do-db=akin
replicate-ignore-db=
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=2
master-host     =   192.168.1.251
master-user     =   replicant
master-password =   slave
master-port     = 3306
启动调试,至到主主没问题后,我们再来安装mysql-mmmm
3、mysql-mmm安装及配置
(1)升级perl模块
cpan -i Algorithm::Diff Class::Singleton DBI DBD::mysql Log::Dispatch Log::Log4perl Mail::Send Net::Ping Proc::Daemon Time::HiRes Params::Validate Net::ARP
这两个File::Basename File::stat模块好像安装不上,要升级5.12.2才可以,不安装也可以使用,Net:ARP必须要安装,要不然VIP会出不来的!
(2)下载并安装mysql-mmm
wget -O mysql-mmm-2.2.1.tar.gz
tar -zxvf mysql-mmm-2.2.1.tar.gz
cd mysql-mmm-2.2.1
make;make install
cd ..
(3)mysql-mmm配置
这个也非常简单,真接在配置文件里面修改就OK了!
[root@jboss1 mysql-mmm]# ls  /etc/mysql-mmm/
mmm_agent.conf  mmm_common.conf  mmm_mon.conf  mmm_tools.conf
[root@jboss1 mysql-mmm]# cat mmm_agent.conf
include mmm_common.conf
this db1
//如果在第二台机器上,db1那里做相应的更改

[root@jboss1 mysql-mmm]# cat mmm_common.conf
active_master_role      writer

        cluster_interface eth0
        pid_path  /var/run/mmm_agentd.pid
        bin_path  /usr/lib/mysql-mmm/
 replication_user        replication
 replication_password    slave
        agent_user  mmm_agent
        agent_password  RepAgent

        ip   192.168.1.251
        mode   master
        peer   db2

        ip   192.168.1.252
        mode   master
        peer   db1

        hosts   db1, db2
        ips   192.168.1.180
        mode   exclusive

        hosts   db1, db2
        ips   192.168.1.181,192.168.1.182
        mode   balanced
//只有两种模式:exclusive是排他,在这种模式下任何时候只能一个host拥有该角色,balanced模式下可以多个host同时拥有此角色。一般writer是ex,reader是ba
[root@jboss1 mysql-mmm]# cat mmm_mon.conf
include mmm_common.conf

        ip                                              127.0.0.1
        pid_path                                /var/run/mmm_mond.pid
        bin_path                                /usr/lib/mysql-mmm/
        status_path                             /var/lib/misc/mmm_mond.status
        auto_set_online                         5
        ping_ips                                192.168.1.251,192.168.1.252

        monitor_user                    mmm_monitor
        monitor_password                RepMonitor
debug 0
//auto_set_online 5为自动切换的时候,单位为秒
scp mmm_common.conf
//把mmm_common.conf复制到DB2上!
配置db2
其他不用动,修改
[root@jboss2 mysql-mmm]# cat mmm_agent.conf
include mmm_common.conf
this db2
//this这里修改为db2就好了,,这里对应mmmm_common.conf里面的内容

(4)启动mmm的服务
DB1启动agent和mon
/etc/init.d/mysql-mmm-agent start
/etc/init.d/mysql-mmm-monitor start
DB2启动agent
/etc/init.d/mysql-mmm-agent start

(5)查看及相关
[root@jboss1 ~]# mmm_control ping
OK: Pinged successfully!
如果是连不上,,请查看mmm_mon.conf里面的配置!
[root@jboss1 ~]# mmm_control show
  db1(192.168.1.251) master/ONLINE. Roles: reader(192.168.1.182), writer(192.168.1.180)
  db2(192.168.1.252) master/ONLINE. Roles: reader(192.168.1.181)
显示信息
[root@jboss1 ~]# mmm_control checks
db2  ping         [last change: 2010/11/04 22:19:42]  OK
db2  mysql        [last change: 2010/11/04 22:48:03]  OK
db2  rep_threads  [last change: 2010/11/04 22:19:42]  OK
db2  rep_backlog  [last change: 2010/11/04 22:19:42]  OK: Backlog is null
db1  ping         [last change: 2010/11/04 22:19:42]  OK
db1  mysql        [last change: 2010/11/04 22:19:42]  OK
db1  rep_threads  [last change: 2010/11/04 22:48:53]  OK
db1  rep_backlog  [last change: 2010/11/04 22:19:42]  OK: Backlog is null
检测是否正常
[root@jboss1 ~]# mmm_control set_online db1
OK: This host is already ONLINE. Skipping command.
[root@jboss1 ~]# mmm_control set_online db2
OK: This host is already ONLINE. Skipping command.
设置服务器上线
[root@jboss1 ~]# mmm_control help
Valid commands are:
    help                              - show this message
    ping                              - ping monitor
    show                              - show status
    checks [|all [|all]] - show checks status
    set_online                  - set host online
    set_offline                 - set host offline
    mode                              - print current mode.
    set_active                        - switch into active mode.
    set_manual                        - switch into manual mode.
    set_passive                       - switch into passive mode.
    move_role [--force] - move exclusive role to host
                                        (Only use --force if you know what you are doing!)
    set_ip                 - set role with ip to host
其他一引起帮助信息

(5)测试切换
DB1上的信息
 [root@jboss1 ~]# mmm_control show
  db1(192.168.1.251) master/ONLINE. Roles: reader(192.168.1.182), writer(192.168.1.180)
  db2(192.168.1.252) master/ONLINE. Roles: reader(192.168.1.181)
[root@jboss1 ~]# ip a
1: lo: mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:9d:93:dd brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.251/24 brd 192.168.1.255 scope global eth0
    inet 192.168.1.182/32 scope global eth0
    inet 192.168.1.180/32 scope global eth0
    inet6 fe80::20c:29ff:fe9d:93dd/64 scope link
       valid_lft forever preferred_lft forever
3: sit0: mtu 1480 qdisc noop
    link/sit 0.0.0.0 brd 0.0.0.0
DB2上的信息
[root@jboss2 mysql-mmm]# ip a
1: lo: mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:6e:42:93 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.252/24 brd 192.168.1.255 scope global eth0
    inet 192.168.1.181/32 scope global eth0
    inet6 fe80::20c:29ff:fe6e:4293/64 scope link
       valid_lft forever preferred_lft forever
3: sit0: mtu 1480 qdisc noop
    link/sit 0.0.0.0 brd 0.0.0.0
现在我们来停掉DB1上的mysql,,它会把所有的VIP都切换的DB2上,,操作如下
DB1上的信息
[root@jboss1 ~]# service mysql stop
Shutting down MySQL..                                      [  OK  ]
[root@jboss1 ~]# mmm_control show
  db1(192.168.1.251) master/HARD_OFFLINE. Roles:
  db2(192.168.1.252) master/ONLINE. Roles: reader(192.168.1.181), reader(192.168.1.182), writer(192.168.1.180)
[root@jboss1 ~]# ip a
1: lo: mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:9d:93:dd brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.251/24 brd 192.168.1.255 scope global eth0
    inet6 fe80::20c:29ff:fe9d:93dd/64 scope link
       valid_lft forever preferred_lft forever
3: sit0: mtu 1480 qdisc noop
    link/sit 0.0.0.0 brd 0.0.0.0
再看DB2上的信息
[root@jboss2 mysql-mmm]# ip a
1: lo: mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:6e:42:93 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.252/24 brd 192.168.1.255 scope global eth0
    inet 192.168.1.181/32 scope global eth0
    inet 192.168.1.182/32 scope global eth0
    inet 192.168.1.180/32 scope global eth0
    inet6 fe80::20c:29ff:fe6e:4293/64 scope link
       valid_lft forever preferred_lft forever
3: sit0: mtu 1480 qdisc noop
    link/sit 0.0.0.0 brd 0.0.0.0
 
到些本文就完成了,在mysql-mmmm的基础上,再加一个mysql-proxy就可以实现读写分离了!

PS:如要是CENTOS的用户,可以更省事,直接用YUM升级就OK
rpm -Uvh
yum install mysql-mmm* -y
 
阅读(5065) | 评论(2) | 转发(0) |
0

上一篇:删除文件找回工具

下一篇:curlftpfs

给主人留下些什么吧!~~

chinaunix网友2010-11-09 14:06:46

你的环境是redhad吗 还是,centos5

chinaunix网友2010-11-05 16:57:30

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com