mysql主从互备+keepalived

环境

 
 

rh6.2

mysql5.6.20-rh6-V46610-01.zip

keepalived-1.2.7.tar.gz

192.168.10.10 node1

192.168.10.20 node2

192.168.10.100 vip

配置yum

删除自带mysql

 
 

yum remove mysql mysql-server mysql-libs mysql-server;

删除残留文件

 
 

find / -name mysql

安装mysql    --只安装以下三个就可以

 
 

MySQL-client-advanced

MySQL-devel-advanced

MySQL-server-advanced

复制mysql配置文件

 
 

cp /usr/share/mysql/my-default.cnf /etc/my.cnf

初始化mysql

 
 

/usr/bin/mysql_install_db --user=mysql --basedir=/web/app/mysql/ --datadir=/web/app/mysql/data/

vi /etc/init.d/mysqld #免编译默认把配置文件/usr/local/mysql修改默配置路径,要不就无法启动

basedir= 修改为 basedir=/web/app/mysql

datadir= 修改为 datadir=/web/app/mysql/data

修改root密码

 
 

service mysql start   #启动MySQL

cat /root/.mysql_secret #查看root账号的初始密码

mysql -uroot -pZFRmqNPoFH3aO5PU #使用root账号登陆MySQL

set password=password('123456');  #更改MySQL密码

mysql -uroot -p123456 #使用新密码登陆

配置远程登陆

select host,user,password from user;

设置开机启动

 
 

chkconfig mysql on

设置字符集

 
 

vi /etc/my.cnf

[mysqld]

user = mysql

log-bin=mysql-bin

server-id= 2            --各节点不能相同

binlog-do-db=test       --要记录日志的数据库

binlog-ignore-db=mysql  --忽略记录日志的数据库,多个用,隔开

replicate-do-db=test    --从库同步数据库名称

replicate-ignore-db=mysql    --从库忽略同步数据库名称

log-slave-updates        --如果一个master挂掉,另一个master马上接管

slave-skip-errors=all

sync_binlog=1

auto_increment_increment=2    --按节点数个数设置

auto_increment_offset=2       --按节点编号设置,为了防止auto_increment冲突

character_set_server=utf8

character_set_client=utf8

collation-server=utf8_general_ci

lower_case_table_names=1

max_connections=1000

[client]

default-character-set = utf8

配置互备

 
 

node1:

vi /etc/my.cnf

[mysqld]

server-id =1

log-bin=mysql-bin

binlog_format=mixed

grant replication slave on *.* to root@192.168.10.20 identified by 'mysql';        --给备节点node2的指定用户授权

change master to master_host='192.168.10.20', master_user='root', master_password='mysql', master_log_file='mysql-bin.000005', master_log_pos=107;        --给主节点node2的指定用户授权

/etc/init.d/mysqld restart

 
 

node2:

vi /etc/my.cnf

[mysqld]

server-id =2

log-bin=mysql-bin

binlog_format=mixed

grant replication slave on *.* to root@192.168.10.10 identified by 'mysql';        --给备节点node1的指定用户授权

change master to master_host='192.168.10.10', master_user='root', master_password='mysql', master_log_file='mysql-bin.000005', master_log_pos=107;        --给主节点node1的指定用户授权

/etc/init.d/mysqld restart

初始化数据

 
 

如果主数据库有数据的话

数据库锁表操作,不让数据再进行写入动作。mysql> FLUSH TABLES WITH READ LOCK ;

用命令mysqldump备份数据库。

在master服务器执行

shell> mysqldump -uroot -p123456 --master-data  --opt rock > backup-file.sql

看主数据库的状态mysql> show master status;

记录File 和Position 项的值

从数据库

stop slave;     --关闭slave自动同步

mysqladmin -uroot -p123456 create rock        --创建数据库

mysql -uroot -p123456 test1 < backup-file.sql       --导入主节点导出的数据

启动从服务器线程

mysql>start slave;

取消主数据库锁定mysql>UNLOCK TABLES;

设置同步位置,两个节点同样设置

 
 

在source那边,执行:

flush logs;

show master status;

记下File, Position。

在target端,执行:

stop slave;

CHANGE MASTER TO MASTER_LOG_FILE='testdbbinlog.000008',MASTER_LOG_POS=107;

start slave;

show slave status \G

一切正常。

查看并修改节点server_id

 
 

show variables like '%id%';

set global server_id=2 ;

查看复制进程,主节点操作

 
 

show processlist \G;

mysql主从服务器上的相关命令

优化参数



配置keepalived
 
 

tar -zxvf keepalived-1.2.7.tar.gz

cd keepalived-1.2.7

./configure --prefix=/data/app/keepalived/

make &&make install

ln -s /data/app/keepalived/sbin/keepalived /usr/sbin/keepalived

mkdir -p /etc/keepalived

设置配置文件

 
 

vi /etc/keepalived/keepalived.conf 

! Configuration File for keepalived

global_defs {

     notification_email {

     localhost@test.com

     }

     notification_email_from localhost@test.com

     smtp_server 127.0.0.1

     smtp_connect_timeout 30

     router_id MySQL-ha

     }             --global_defs可以不设置

 

vrrp_instance VI_1 {

     state BACKUP   #两台配置此处均是BACKUP

     interface eth0  #通信协议用的网卡口

     virtual_router_id 51  

     priority 100   #优先级,另一台改为90

     advert_int 1

     nopreempt  #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置

     authentication {

     auth_type PASS

     auth_pass 1111

     }

     virtual_ipaddress {

     192.168.1.100

     }

     }

 

virtual_server 192.168.1.100 3306 {    #MySQL-Vip地址

     delay_loop 2   #每个2秒检查一次real_server状态

     lb_algo wrr   #LVS算法

     lb_kind DR    #LVS模式

     persistence_timeout 60   #会话保持时间

     protocol TCP  #通信协议

 

     real_server 192.168.10.10 3306 {      #本机mysql地址

     weight 3

     notify_down /usr/local/MySQL/bin/MySQL.sh  #检测到服务down后执行的脚本

     TCP_CHECK {

     connect_timeout 10    #连接超时时间

     nb_get_retry 3       #重连次数

     delay_before_retry 3   #重连间隔时间

     connect_port 3306   #健康检查端口

     }

     }

}

tips:slave 的keepalived.conf配置文件和master配置文件只有三点不同:

real_server要修改成本机的

不要需要配置抢占参数nopreempt

优先级为90,比master要低

编辑MySQL.sh脚本,当mysql服务down后,执行该脚本

 
 

echo "pkill keepalived" >/usr/local/bin/MySQL.sh

chmod +x /usr/local/bin/MySQL.sh

给mysql赋权限

 
 

mysql> grant all privileges on *.* to 'root'@'%' identified by 'test';

mysql> flush privileges;

设置开机启动keepalived服务

 
 

/data/app/keepalived/sbin/keepalived start

测试两节点是否都能ping通vip地址192.168.10.100

两节点分别通过vip连接数据库,先后停各个节点的数据库,看所有节点连接数据库是否正常

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29326234/viewspace-1434141/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29326234/viewspace-1434141/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值