设为首页收藏本站

LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

QQ登录

只需一步,快速开始

#公告#抱歉,网站将关闭,不再开放。由于PC时代已远逝 。在这个后移动互联网时代,我们继续携手前行,保持对技术的热情。共同构建linuxtone知识星球欢迎加入,一起讨论技术、招聘人才、分享资源。请新老linuxtone人 扫码移步到 知识星球:linuxtone

学习是一种信仰!分享是一种快乐!能力= 心态 * 沟通 * 知识 (你的每一天需要正能量!)

 网站的发展需要你贡献一份力量!希望你能每天坚持看贴1小时,并回答网友的问题!祝你在浏览论坛的过程中取得进步!谢谢!linuxtone加油!大家加油! 友情提示: 你今天学习了吗?你今天进步了吗?少一点抱怨!多一点进步!Life is short ! Why not linuxtone ?  

网站的发展、感谢每位坛友的努力!

查看: 4240|回复: 5

mysql 双主服务器搭建 [复制链接]

论坛元老

小兵

Rank: 8Rank: 8

签到
190
注册时间
2010-10-9
最后登录
2013-5-22
在线时间
250 小时
阅读权限
90
积分
16049
帖子
104
主题
14
精华
1
UID
10553
发表于 2011-12-9 11:34:36 |显示全部楼层
环境centos5.5
    mysql 5.0.77-log
vip:192.168.28.21
server1:192.168.28.128
server2:192.168.28.129


1.        mysql安装
server1  mysql配置文件
server1 192.168.28.128
[client]
port            = 3306
socket          = /tmp/mysql.sock

[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
datadir=/var/lib/mysql
skip-locking
skip-name-resolve
key_buffer = 64M
max_allowed_packet = 64M
table_cache = 2048
sort_buffer_size = 4M
net_buffer_length = 256K
read_buffer_size = 10M
read_rnd_buffer_size = 10M
myisam_sort_buffer_size = 16M
interactive_timeout = 240
wait_timeout = 240
max_connections = 800
connect_timeout=30
open_files_limit=8192
query_cache_size = 1024M
thread_cache_size=16
thread_concurrency = 8
long_query_time = 1
log-slow-queries = slow.log
max_join_size = 4294967295
innodb_additional_mem_pool_size = 8M
innodb_buffer_pool_size = 32M
innodb_log_buffer_size=8M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_file_io_threads = 8
innodb_lock_wait_timeout= 50
innodb_thread_concurrency = 16
innodb_file_per_table

log_slave_updates
expire_logs_days=7
auto_increment_increment=2
auto_increment_offset=2
#binlog_format=mixed
log-bin=mysql-bin
server-id       = 5

设置复制帐号
mysql> grant replication slave on *.* to 'repl'@'192.168.28.129' identified by 'repl';
mysql> grant replication slave on *.* to 'repl'@'192.168.28.128' identified by 'repl';

导出数据库
mysqldump -uroot -p --single-transaction --flush-logs --master-data=2 --all-databases > all.sql        


server2  mysql配置文件
server2 192.168.28.129

[client]
port            = 3306
socket          = /tmp/mysql.sock

[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
datadir=/var/lib/mysql
skip-locking
skip-name-resolve
key_buffer = 64M
max_allowed_packet = 64M
table_cache = 2048
sort_buffer_size = 4M
net_buffer_length = 256K
read_buffer_size = 10M
read_rnd_buffer_size = 10M
myisam_sort_buffer_size = 16M
interactive_timeout = 240
wait_timeout = 240
max_connections = 800
connect_timeout=30
open_files_limit=8192
query_cache_size = 1024M
thread_cache_size=16
thread_concurrency = 8
long_query_time = 1
log-slow-queries = slow.log
max_join_size = 4294967295
innodb_additional_mem_pool_size = 8M
innodb_buffer_pool_size = 32M
innodb_log_buffer_size=8M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_file_io_threads = 8
innodb_lock_wait_timeout= 50
innodb_thread_concurrency = 16
innodb_file_per_table

log_slave_updates
expire_logs_days=7
auto_increment_increment=2
auto_increment_offset=1
#binlog_format=mixed
log-bin=mysql-bin
server-id       = 8

在server2上执行
导入数据库
mysql -uroot -poffensive < all.sql
在server2上设置主从
change master to
master_host='192.168.28.128',
master_port=3306,
master_user='repl',
master_password='repl',
master_log_file='mysql-bin.000003',         
master_log_pos=98;

start slave


在server1上设置主从
change master to
master_host='192.168.28.129',
master_port=3306,
master_user='repl',
master_password='repl',
master_log_file='mysql-bin.000001',
master_log_pos=98;

start slave;



2 安装keepalived
tar xvf keepalived-1.2.2.tar.gz
cd keepalived-1.2.2
./configure --prefix=/
make && make install

server1上的keepalived配置
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
    router_id LVS_DEVEL
}
vrrp_script check_run {
    script "/root/keepalived_check_mysql.sh"
    interval 5
}
vrrp_sync_group VG1 {
     group {
        VI_1
     }
}
vrrp_instance VI_1 {
     state MASTER
     interface eth0
     virtual_router_id 88
     priority 100
     advert_int 1
     nopreempt
     authentication {
         auth_type PASS
         auth_pass outhink
     }
     track_script {
         check_run
     }
     virtual_ipaddress {
         192.168.28.21
     }
}

server2上的keepalived配置
! Configuration File for keepalived
global_defs {
    router_id LVS_DEVEL
}
vrrp_script check_run {
    script "/root/keepalived_check_mysql.sh"
    interval 5
}
vrrp_sync_group VG1 {
     group {
        VI_1
     }
}
vrrp_instance VI_1 {
     state BACKUP
     interface eth0
     virtual_router_id 88
     priority 98
     advert_int 1
     authentication {
         auth_type PASS
         auth_pass outhink
     }
     track_script {
         check_run
     }
     virtual_ipaddress {
         192.168.28.21
     }
}

mysql检测脚本


MYSQL=/usr/bin/mysql
MYSQL_HOST=localhost
MYSQL_USER=root
MYSQL_PASSWORD=offensive
CHECK_TIME=3
#mysql  is working MYSQL_OK is 1 , mysql down MYSQL_OK is 0
MYSQL_OK=1
function check_mysql_helth (){
$MYSQL -h $MYSQL_HOST -u $MYSQL_USER  -p$MYSQL_PASSWORD -e "show status;" >/dev/null 2>&1
if [ $? = 0 ] ;then
     MYSQL_OK=1
else
     MYSQL_OK=0
fi
     return $MYSQL_OK
}
while [ $CHECK_TIME -ne 0 ]
do
     let "CHECK_TIME -= 1"
     check_mysql_helth
if [ $MYSQL_OK = 1 ] ; then
     CHECK_TIME=0
     exit 0
fi

if [ $MYSQL_OK -eq 0 ] &&  [ $CHECK_TIME -eq 0 ]
then
     /etc/init.d/keepalived stop
exit 1
fi
sleep 1
done

最后测试

其实也不算双主啦,99%的时间是主从关系




参考http://linux008.blog.51cto.com/2837805/665390
相信outhink
http://outhink.blog.51cto.com
不是路不平,只是你不行。

Rank: 8Rank: 8

注册时间
2011-11-30
最后登录
2015-8-5
在线时间
98 小时
阅读权限
90
积分
14677
帖子
121
主题
24
精华
0
UID
16171
发表于 2011-12-17 11:52:32 |显示全部楼层
楼主,我想问下vip:192.168.28.21这个IP是创建在哪台服务器上的虚拟IP呢?没做过keepalived一直没搞明白那个VIP的IP地址。。那个是用来做心跳用的吧

使用道具 举报

Rank: 8Rank: 8

注册时间
2011-11-18
最后登录
2015-6-29
在线时间
135 小时
阅读权限
90
积分
19924
帖子
83
主题
5
精华
0
UID
15961
发表于 2011-12-17 12:21:50 |显示全部楼层
vip就是虚拟地址,访问这个地址可以自动映射到realserver上

使用道具 举报

Rank: 8Rank: 8

注册时间
2011-11-18
最后登录
2015-6-29
在线时间
135 小时
阅读权限
90
积分
19924
帖子
83
主题
5
精华
0
UID
15961
发表于 2011-12-17 12:27:38 |显示全部楼层
其实你这个方案只是failover一个案例,不能说是双主,俩服务总会有一个服务器是闲置的,建议楼主测试mysql集群,有3个服务器的朋友可以测试下,ndb数据是实时读写的,管理端可以安装在其他应用上

使用道具 举报

论坛元老

小兵

Rank: 8Rank: 8

注册时间
2010-10-9
最后登录
2013-5-22
在线时间
250 小时
阅读权限
90
积分
16049
帖子
104
主题
14
精华
1
UID
10553
发表于 2011-12-21 09:41:50 |显示全部楼层
大漠孤沙 发表于 2011-12-17 11:52
楼主,我想问下vip:192.168.28.21这个IP是创建在哪台服务器上的虚拟IP呢?没做过keepalived一直没搞明白那 ...

vip:192.168.28.21,平时是在server1上,也就是server1的网卡有两个ip地址:192.168.28.21,192.168.28.128
如果server1挂掉,这个vip就被server2接管,所有对vip的访问就会转到server2上。

相关的keepalived的配置我已经用红色标明了
相信outhink
http://outhink.blog.51cto.com
不是路不平,只是你不行。

使用道具 举报

论坛元老

小兵

Rank: 8Rank: 8

注册时间
2010-10-9
最后登录
2013-5-22
在线时间
250 小时
阅读权限
90
积分
16049
帖子
104
主题
14
精华
1
UID
10553
发表于 2011-12-21 09:43:49 |显示全部楼层
zhouliyi 发表于 2011-12-17 12:27
其实你这个方案只是failover一个案例,不能说是双主,俩服务总会有一个服务器是闲置的,建议楼主测试mysql ...

谢谢,你的建议。ndb 正在测试中
相信outhink
http://outhink.blog.51cto.com
不是路不平,只是你不行。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

IT运维专家网感谢您的支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2020-5-26 04:45 , Processed in 0.025550 second(s), 14 queries , Apc On.

Powered by Discuz! X2 Licensed

© 2001-2011 Comsenz Inc.

回顶部