mysql主主复制和keepalived配置过程
来源:互联网 发布:千牛mac版怎么安装 编辑:程序博客网 时间:2024/06/07 03:52
昨天把mysql主主复制+keepalived又配置了一遍,下面详细记录一下过程.
一.mysql主主复制篇
1.安装mysql
sudo apt-get install mysql-server
2.迁移datadir目录
这一步不是必须的,自己根据磁盘使用情况判断.
(1)迁移datadir目录
sudo mv /var/lib/mysql /home
(2)修改my.cnf配置文件
vi /etc/mysql/my.cnf
datadir=/var/lib/mysql-->datadir=/home/mysql
(3)修改usr.sbin.mysqld文件
sudo vi /etc/apparmor.d/usr.sbin.mysqld
/var/lib/mysql/ r,-->/home/mysql/ r,
/var/lib/mysql/** rwk,-->/home/mysql/** rwk,
(4)重启apparmor服务
sudo /etc/init.d/apparmor restart
(5)重启mysql
sudo service mysql restart
3.增加my.cnf中主主复制需要用到的配置,并重启mysql加载最新配置.
sudo vi /etc/mysql/my.cnf
server-id=1
log_bin=/home/mysql/mysql-bin
//下面这个参数的意义及配置原因请参阅http://www.cnblogs.com/billyxp/p/3470376.html
slave-net-timeout=60
//下面两个参数的意义及配置原因请参阅http://sndapk.blog.51cto.com/5385144/922606
auto-increment-increment=2
auto-increment-offset=1
sudo service mysql restart
4.增加主主复制专用mysql用户并赋予该用户相应权限.
mysql -u root -p
use mysql;
create user replicationusername;
update user set password=password('insert password here') where user='replicationusername';
grant replication slave on *.* to 'replicationusername'@'%';
flush privileges;
5.配置master服务器
假设两台服务器的地址分别为192.168.1.101和192.168.1.102.
(1)在192.168.1.101上的mysql中执行:
change master to master_host='192.168.1.102',master_user='replicationusername',master_password='insert password here';
(1)在192.168.1.102上mysql中执行:
change master to master_host='192.168.1.101',master_user='replicationusername',master_password='insert password here';
6.启动复制服务并验证.
在mysql中执行:
start slave;
show slave status\G;
显示以下信息则表示已成功启动复制服务(注意双yes):
1.安装keepalived
sudo apt-get install keepalived
2.增加keepalived配置文件
sudo vi /etc/keepalived/keepalived.cnf
内容如下:
global_defs {
notification_email {
username@domainname.com
}
notification_email_from username@domainname.com
smtp_server smtp.domain.com
smtp_connect_timeout 30
router_id MySQL-HA
}
vrrp_script check_run {
script "/etc/keepalived/service_check.sh"
interval 3
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 103
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.103
}
track_script {
check_run
}
}
virtual_server 192.168.1.103 3306 {
delay_loop 6
lb_algo wcl
lb_kind DR
#nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.1.101 3306 {
weight 1
notify_down /etc/keepalived/service_down.sh
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
3.增加mysql服务检测脚本
sudo vi /etc/keepalived/service_check.sh
内容如下:
#!/bin/bash
MYSQL=/usr/bin/mysql
MYSQL_HOST=127.0.0.1
MYSQL_USER='root'
MYSQL_PASSWORD='insert password here'
CHECK_TIME=3
#mysql is working MYSQL_OK is 0 , mysql down MYSQL_OK is 1
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=0
else
MYSQL_OK=1
fi
return $MYSQL_OK
}
while [ $CHECK_TIME -ne 0 ]
do
let "CHECK_TIME -= 1"
check_mysql_helth
if [ $MYSQL_OK = 0 ] ; then
CHECK_TIME=0
echo "OK"
exit 0
fi
if [ $MYSQL_OK -eq 1 ] && [ $CHECK_TIME -eq 1 ]
then
#/etc/init.d/keepalived stop
echo "failed"
pkill keepalived
exit 1
fi
sleep 1
done
4.增加服务关闭脚本.
sudo vi /etc/keepalived/service_down.sh
内容如下:
#!/bin/sh
pkill keepalived
5.重启keepalived服务.
sudo /etc/init.d/keepavlied restart
使用ip a指令验证是否启动成功,显示如下信息则表示启动成功:
整个过程中有几个需要注意的点:
1.mysql服务要先于keepalived服务启动,因为有检测脚本的存在,如果mysql没有响应了,keepalived服务也会被脚本关闭.
2.keepalived使用需要虚拟IP,所以在阿里云这种不能单独申请IP的地方是无法使用这种服务的.
3./etc/keepalived/下的两个脚本文件需要有可执行权限.
一.mysql主主复制篇
1.安装mysql
sudo apt-get install mysql-server
2.迁移datadir目录
这一步不是必须的,自己根据磁盘使用情况判断.
(1)迁移datadir目录
sudo mv /var/lib/mysql /home
(2)修改my.cnf配置文件
vi /etc/mysql/my.cnf
datadir=/var/lib/mysql-->datadir=/home/mysql
(3)修改usr.sbin.mysqld文件
sudo vi /etc/apparmor.d/usr.sbin.mysqld
/var/lib/mysql/ r,-->/home/mysql/ r,
/var/lib/mysql/** rwk,-->/home/mysql/** rwk,
(4)重启apparmor服务
sudo /etc/init.d/apparmor restart
(5)重启mysql
sudo service mysql restart
3.增加my.cnf中主主复制需要用到的配置,并重启mysql加载最新配置.
sudo vi /etc/mysql/my.cnf
server-id=1
log_bin=/home/mysql/mysql-bin
//下面这个参数的意义及配置原因请参阅http://www.cnblogs.com/billyxp/p/3470376.html
slave-net-timeout=60
//下面两个参数的意义及配置原因请参阅http://sndapk.blog.51cto.com/5385144/922606
auto-increment-increment=2
auto-increment-offset=1
sudo service mysql restart
4.增加主主复制专用mysql用户并赋予该用户相应权限.
mysql -u root -p
use mysql;
create user replicationusername;
update user set password=password('insert password here') where user='replicationusername';
grant replication slave on *.* to 'replicationusername'@'%';
flush privileges;
5.配置master服务器
假设两台服务器的地址分别为192.168.1.101和192.168.1.102.
(1)在192.168.1.101上的mysql中执行:
change master to master_host='192.168.1.102',master_user='replicationusername',master_password='insert password here';
(1)在192.168.1.102上mysql中执行:
change master to master_host='192.168.1.101',master_user='replicationusername',master_password='insert password here';
6.启动复制服务并验证.
在mysql中执行:
start slave;
show slave status\G;
显示以下信息则表示已成功启动复制服务(注意双yes):
二.keepalived篇
1.安装keepalived
sudo apt-get install keepalived
2.增加keepalived配置文件
sudo vi /etc/keepalived/keepalived.cnf
内容如下:
global_defs {
notification_email {
username@domainname.com
}
notification_email_from username@domainname.com
smtp_server smtp.domain.com
smtp_connect_timeout 30
router_id MySQL-HA
}
vrrp_script check_run {
script "/etc/keepalived/service_check.sh"
interval 3
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 103
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.103
}
track_script {
check_run
}
}
virtual_server 192.168.1.103 3306 {
delay_loop 6
lb_algo wcl
lb_kind DR
#nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.1.101 3306 {
weight 1
notify_down /etc/keepalived/service_down.sh
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
3.增加mysql服务检测脚本
sudo vi /etc/keepalived/service_check.sh
内容如下:
#!/bin/bash
MYSQL=/usr/bin/mysql
MYSQL_HOST=127.0.0.1
MYSQL_USER='root'
MYSQL_PASSWORD='insert password here'
CHECK_TIME=3
#mysql is working MYSQL_OK is 0 , mysql down MYSQL_OK is 1
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=0
else
MYSQL_OK=1
fi
return $MYSQL_OK
}
while [ $CHECK_TIME -ne 0 ]
do
let "CHECK_TIME -= 1"
check_mysql_helth
if [ $MYSQL_OK = 0 ] ; then
CHECK_TIME=0
echo "OK"
exit 0
fi
if [ $MYSQL_OK -eq 1 ] && [ $CHECK_TIME -eq 1 ]
then
#/etc/init.d/keepalived stop
echo "failed"
pkill keepalived
exit 1
fi
sleep 1
done
4.增加服务关闭脚本.
sudo vi /etc/keepalived/service_down.sh
内容如下:
#!/bin/sh
pkill keepalived
5.重启keepalived服务.
sudo /etc/init.d/keepavlied restart
使用ip a指令验证是否启动成功,显示如下信息则表示启动成功:
整个过程中有几个需要注意的点:
1.mysql服务要先于keepalived服务启动,因为有检测脚本的存在,如果mysql没有响应了,keepalived服务也会被脚本关闭.
2.keepalived使用需要虚拟IP,所以在阿里云这种不能单独申请IP的地方是无法使用这种服务的.
3./etc/keepalived/下的两个脚本文件需要有可执行权限.
0 0
- mysql主主复制和keepalived配置过程
- mysql + keepalived 双主复制结构 keepalived配置文件keepalived.conf
- 配置keepalived实现高可用性mysql主主复制
- Keepalived+Lvs+Mysql主主复制
- 利用Keepalived构建MySQL主主复制
- mysql主主复制keepalived切换
- MySQL主主复制+Keepalived 打造高可用MySQL集群
- MySQL 主主复制 + LVS + Keepalived 实现 MySQL 高可用性
- mysql主主复制+Keepalived 打造高可用mysql集群
- MySQL主主复制+LVS+Keepalived实现MySQL高可用性
- MySQL主主复制+Keepalived 打造高可用MySQL集群
- MySQL主主复制+keepalived打造高可用MySQL集群
- Mysql双主复制搭建和基于keepalived的故障转移
- Mysql+Keepalived高可用性双主配置
- MySQL高可用基础之keepalived+双主复制
- keepalived+双主复制实现mysql高可用
- MySQL:基于双主复制的keepalived的HA方案
- keepalived+mysql双主复制高可用方案
- iOS开发--轮播图(无限循环)新玩法--视差轮播--无限循环的新思路(两个UIImageView足矣)
- 【OpenSceneGraph】UpdateCallback Example
- MFC中的WM_NOTIFY消息的反射
- 统计2016政府工作报告中的高频词
- linux上安装mysql 5.7.11完成之后 如何连接
- mysql主主复制和keepalived配置过程
- mysql读写分离之amoeba
- LEETCODE 67
- html 右击事件
- c# 委托和事件
- Android webview使用详解
- SurfaceView实现点赞效果
- 线段树模板
- 在线代码编辑器 CODEMIRROR 配置说明