MYSQL数据库主主同步备份MYSQL+keepalived高可用自动

摘要: MYSQL数据库主主同步备份MYSQL+keepalived高可用自动,MYSQL,数据库,主主备份,keepalived,高可用,,linux运维,好用的linux运维指南,您值得拥有

  mysql 备份工作原理

  简单的说就是把 一个服务器上执行过的sql语句在别的服务器上也重复执行一遍, 这样只要两个数据库的初态是一样的,那么它们就能一直同步。
当然这种复制和重复都是mysql自动实现的,我们只需要配置即可。

数据库主主  上图中有两个服务器, 演示了从一个主服务器(master) 把数据同步到从服务器(slave)的过程。
  这是一个主-从复制的例子。 主-主互相复制只是把上面的例子反过来再做一遍。 所以我们以这个例子介绍原理。
  对于一个mysql服务器, 一般有两个线程来负责复制和被复制。当开启复制之后。
  1.作为主服务器Master, 会把自己的每一次改动都记录到 二进制日志 Binarylog 中。 (从服务器会负责来读取这个log, 然后在自己那里再执行一遍。)
  2.作为从服务器Slave, 会用master上的账号登陆到 master上, 读取master的Binarylog, 写入到自己的中继日志 Relaylog, 然后自己的sql线程会负责读取这个中继日志,并执行一遍。 到这里主服务器上的更改就同步到从服务器上了。

 
 

准备工作

 
主从1: 203.18.17.129(vmnet2)
主从2: 203.18.17.130(vmnet2)
VIP: 203.18.17.131
 

 

主从1  203.18.17.129配置

查看本机IP地址 
 

Keepalived监控mysql服务

监测监本的配置
vim /opt/chk_mysql.sh
#!/bin/bash
counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)
if [ "${counter}" -eq 0 ]
then
    /etc/init.d/keepalived stop
else
   echo "running..." >> /opt/keepalived-running-info.log
   sleep 5000
fi

安装keepalived软件包

 
[root@localhost ~]#  yum -y install  keepalived
 

keepalived软件包 

Keepalived配置

设置开机启动
[root@localhost ~]# chkconfig keepalived on
Keepalived配置文件
[root@localhost ~]# vim /etc/keepalived/keepalived.conf
 
! Configuration File for keepalived
 
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id MySQL-HA
}
 
vrrp_script chk_mysql_port {  #检测mysql服务是否在运行。
        script "/opt/chk_mysql.sh"  #这里通过脚本监测
        interval 2  #脚本执行间隔,每2s检测一次
        weight -5  #脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -5
        fall 2 #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)
        rise 1  #检测1次成功就算成功。但不修改优先级
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        203.18.17.131
    }
track_script {
       chk_mysql_port
    }
 }
 
}
 
 
 
启动keepalived服务
[root@localhost ~]# service keepalived start
正在启动 keepalived:                                      [确定]
 
[root@localhost ~]# ip a

 

查看VIP地址

安装ipvsadm软件包

 
[root@localhost ~]# yum -y install ipvsadm
 

安装ipvsadm软件包 

安装数据库mysql

 
[root@localhost ~]# yum -y install mysql mysql-devel mysql-server

 

mysql安装 
启动mysql服务
[root@localhost ~]# service mysqld start
 

启动mysql服务 
[root@localhost ~]# cp /usr/share/doc/mysql-server-5.1.71/my-medium.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y
 
[root@localhost ~]# vim /etc/my.cnf
[client]
default-character-set = utf8
 
[mysqld]
default-character-set = utf8
 
设置数据库密码
[root@localhost ~]# mysqladmin -uroot password '123123'
 
建立时间同步环境,在主服务器上安装配置NTP时间同步服务器
 
[root@localhost ~]# yum -y install ntp
 
备份文件
[root@localhost ~]# cp -p /etc/ntp.conf /etc/ntp.conf.origin
 
[root@localhost ~]# vim /etc/ntp.conf
 
手动添加此两行内容
56 server 127.127.1.0
 57 fudge 127.127.1.0 startum 8
 
开启ntp服务
[root@localhost ~]# /etc/init.d/ntpd start
正在启动 ntpd:                                            [确定]
 
开机启动ntp服务
[root@localhost ~]# chkconfig ntpd on
 
在从服务器上同步时间
[root@localhost ~]# yum -y install ntpdate
[root@localhost ~]# ntpdate 203.18.17.129
 9 Aug 23:31:03 ntpdate[52482]: no server suitable for synchronization found
 
注意:主从mysql尽量保证版本相同
 
配置mysql 主从1服务器
[root@localhost ~]# vim /etc/my.cnf
56 log-bin=mysql-bin
  57 log-slave-updates=true   #手动添加,开启从日志
65 server-id       = 11
 
参数说明:
l  log-bin 开启二进制日志
l  server-id 设置server-id
l  character-set-server 修改字符集为utf8
l  binlog-do-db = mydatabase  只同步哪些数据库,除此之外,其他不同步
 
重启mysql服务
[root@localhost ~]# /etc/init.d/mysqld restart
停止 mysqld:                                              [确定]
正在启动 mysqld:                                          [确定]
 
创建数据库同步用户,并授予相应的权限
[root@localhost ~]# mysql -uroot -p123123
mysql> grant replication slave on *.* to 'myslave'@'203.18.17.130'identified by '123123';
Query OK, 0 rows affected (0.00 sec)
 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
 
查看master状态
 
mysql> show master status;

master状态 
执行同步SQL语句,参照MASTER配置:
mysql> change master to master_host='203.18.17.129',master_user='myslave',master_password='123123',master_log_file='mysql-bin.000004',master_log_pos=345;
Query OK, 0 rows affected (0.03 sec)
注意:主从2上已经创建数据库同步用户,并授予相应的权限在执行同步SQL语句。
 
 
启动slave同步进程
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
 
查看slave状态
mysql> show slave status \G;

 

slave状态 

主从2  203.18.17.130配置

ip 
 
 
 
 

Keepalived监控mysql服务

监测监本的配置
vim /opt/chk_mysql.sh
#!/bin/bash
counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)
if [ "${counter}" -eq 0 ]
then
    /etc/init.d/keepalived stop
else
   echo "running..." >> /opt/keepalived-running-info.log
   sleep 5000
fi
 

安装keepalived软件包

 
[root@localhost ~]#  yum -y install  keepalived
 
 
 

keepalived软件包 

Keepalived配置

设置开机启动
[root@localhost ~]# chkconfig keepalived on
Keepalived配置文件
[root@localhost ~]# vim /etc/keepalived/keepalived.conf
 
! Configuration File for keepalived
 
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id MySQL-HA
}
 
vrrp_script chk_mysql_port {  #检测mysql服务是否在运行。
        script "/opt/chk_mysql.sh"  #这里通过脚本监测
        interval 2   #脚本执行间隔,每2s检测一次
        weight -5  #脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -5
        fall 2 #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)
        rise 1   #检测1次成功就算成功。但不修改优先级
}
 
 
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    lvs_sync_daemon_inteface eth0
    virtual_router_id 51
    mcast_src_ip 203.18.17.130
    priority 90
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        203.18.17.131
    }
track_script {
       chk_mysql_port
    }
 }
 
}
 
启动keepalived服务
[root@localhost ~]# service keepalived start
正在启动 keepalived:                                      [确定]
 
[root@localhost ~]# ip a

ip地址

安装ipvsadm软件包

 
[root@localhost ~]# yum -y install ipvsadm
 

安装ipvsadm 

安装数据库mysql

 
[root@localhost ~]# yum -y install mysql mysql-devel mysql-sever
 

安装数据库mysql 
启动mysql服务
[root@localhost ~]# service mysqld start
正在启动 mysqld:                                          [确定]
 
[root@localhost ~]# cp /usr/share/doc/mysql-server-5.1.71/my-medium.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y
 
[root@localhost ~]# vim /etc/my.cnf
[client]
default-character-set = utf8
 
[mysqld]
default-character-set = utf8
 
设置数据库密码
[root@localhost ~]# mysqladmin -uroot password '123123'
 
配置服务器
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
server-id       = 12
log-bin=mysql-bin
relay-log = relay-bin
relay-log-index = slave-relay-bin.index
 
重启mysql服务
[root@localhost ~]# /etc/init.d/mysqld restart
停止 mysqld:                                              [确定]
正在启动 mysqld:                                          [确定]
 

[root@localhost ~]# mysql -uroot -p123123
 
创建数据库同步用户,并授予相应的权限
mysql> grant replication slave, replication client on *.* to 'repl'@'203.18.17.129' identified by '123123';
Query OK, 0 rows affected (0.00 sec)
 
刷新授权表信息
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
 
查看master状态
mysql> show master status;

master状态 
执行同步SQL语句,参照MASTER配置:
mysql> change master to master_host='203.18.17.129',master_user='myslave',master_password='123123',master_log_file='mysql-bin.000004',master_log_pos=345;
Query OK, 0 rows affected (0.03 sec)
注意:主从1上已经创建数据库同步用户,并授予相应的权限在执行同步SQL语句。
 
 
启动slave同步进程
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
 
查看slave状态
mysql> show slave status \G;

 

slave状态 
 

测试:

创建一个新库,测试结果创建新库auth两个已经备份

测试mysql数据库备份 
 
在129数据库里面创建新的数据库dada,在130数据库里面也出现了说明备份成功。
 

测试mysql数据库备份 
 
 

测试VIP是否可以漂移到另外一个服务器上

203.18.17.129服务器

主VIP测试关闭keepalived服务造成故障
[root@localhost ~]# service keepalived stop
 
看一下203.18.17.130服务器VIP有没有过来

主VIP测试 
成功VIP地址自动转移



本文由 帝一博客 原创发布。用户在本站发布的原创内容(包括但不仅限于回答、文章和评论),著作权均归用户本人所有。独家文章转载,请联系邮箱:17762131@qq.com。获得授权后,须注明本文地址: https://bubukou.com/linuxyunwei/1699.html

网友留言评论

0条评论