您的位置:1010cc时时彩经典版 > 操作系统 > VIP安装配置,04下搭建MySQL主从服务器

VIP安装配置,04下搭建MySQL主从服务器

发布时间:2019-08-08 08:50编辑:操作系统浏览(114)

    MySQL的主从复制是异步的,分master/slave,在master端存在一个IO线程,而在slave下存在IO及Sql线程。

    最近一个项目需要做一个MySQL Keepalived高可用主从同步,配起来当然轻车熟路,但想到如何在主库挂掉,从库接管后,以最快的速度恢复数据,并让主库重新接管,所以整理了下思路,编写了如下脚本,供大家参考

    一、总概:

    说明:蓝色=命令名称

    Mysql 主从复制,mysql主从复制

    mysql 主从复制步骤   1)下载MySQL(Ubuntu)    sudo apt-get install mysql-server mysql-client 2)更改mysql的配置文件  vi /etc/mysql/my.cnf  修改内容如下   #绑定本机ip地址,作为master   bind-address = 192.168.0.75   #作为master   server-id = 1   #去掉注释   log_bin         = /var/log/mysql/mysql-bin.log   #需要复制的数据库   binlog_do_db    = zm_gaiay_net_cn    保存更改 2)重启mysql  sudo service mysql restart 3)通过mysql client 进入命令行  mysql -u root -p   提示输入root密码 4)把复制权限给slave_user,并指定密码  grant replication slave on *.* to 'slave_user'@'%' identified by '123456';   5)连接binlog_do_db 对应的数据库 (zm_gaiay_net_cn)  use zm_gaiay_net_cn;   6)锁住表以免发生新的变化   flush tables with read lock; 7)查看master status  show master status;   ------------------ ---------- -------------- ------------------ | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | ------------------ ---------- -------------- ------------------ | mysql-bin.000001 |      107 | zm_gaiy_net_cn  |                  | ------------------ ---------- -------------- ------------------    从库中会使用到 file 和 position         从库中安装   1)安装mysql   2)更改mysql配置文件my.cnf    server-id      = 2  #添加,注意这里是中划线  replay-log   = /var/log/mysql/mysql-replay-bin.log    log_bin   = /var/log/mysql/mysql-bin.log  binlog_do_db   = zm_gaiay_net_cn   3)重启服务  sudo service mysql restart 4)通过mysql-client 进入命令行界面  mysq -u root -p    配置主库  CHANGE MASTER TO MASTER_HOST='192.168.0.75',MASTER_USER='slave_user', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=  107;       解释    master_host : 主库的ip    master_user :组库中用来复制的用户    master_password:主库中用来复制的用户密码    master_log_file:主库(zm_gaiay_net_cn)对应的bin文件    master_log_pos:从哪里开始复制   5)开启复制  start slave   6)查看状态  SHOW SLAVE STATUS

    主从复制,mysql主从复制 mysql 主从复制步骤1)下载MySQL(Ubuntu) sudo apt-get install mysql-server mysql-client2)更改mysql的配置文件vi /etc/mysql...

    搭建环境最重要的地方在于将mysql的二进制日志功能开启,我在搭的过程中有个细节没注意,坑了我好久。

    MySQL主从,以及Keepalived高可用配置本博传送门:

    本文介绍了MySQL高可用性的实现方案MHA,MHA由Node和Manager组成,Node运行在每一台MySQL服务器上,不管是MySQL主服务器,还是MySQL从服务器,都要安装Node。主从安装keepalived ,实现虚拟ip漂移,程序不用改IP自动切换。

          浅绿=命令参数

    环境:

    CentOS 6.3下MySQL主从复制笔记 http://www.linuxidc.com/Linux/2013-06/85983.htm

    二、环境

          浅蓝=选项

    我的两台虚拟机上网方式都是采用桥接模式,不推荐nat.首先对两台虚拟机设置固定ip地址,和你的物理机的ip地址在一个段内,这样你的虚拟机就很类似一台局域网的物理机工作了。

    CentOS利用Keepalived构建双主MySQL 双机热备 http://www.linuxidc.com/Linux/2013-05/83785.htm

    1、操作系统:CentOS 6.5 64位

          紫色=目录

    --------------------------------------分割线

    Ubuntu下Nginx做负载实现高性能WEB服务器5---MySQL主主同步 http://www.linuxidc.com/Linux/2012-06/61687p5.htm

    生产环境MySQL主主同步主键冲突处理 http://www.linuxidc.com/Linux/2013-07/86890.htm

    MySQL主从失败 错误Got fatal error 1236 http://www.linuxidc.com/Linux/2012-02/54729.htm

    MySQL主从复制,单台服务器上实施 http://www.linuxidc.com/Linux/2013-03/81913.htm

    一.备份从库当前数据库
    注:以下的所有配置需要在数据库未运转状态下进行,建议做一个iptables规则禁止非管理员IP访问主从服务器IP,以及VIP,这样既能保证管理员可SSH远程登陆配置,又能恢复主从环境,待配置完成后解除禁止即可。

    2、数据库:  MySQL-5.6.17-1.el6.x86_64.rpm-bundle.tar 下载

          系统环境:CentOS  5.7  x86_64

    --------------------------------------分割线

    设置固定ip地址:

    $ sudo vim /etc/network/interfaces

    如下:

    # interfaces(5) file used by ifup(8) and ifdown(8)

    auto lo

    iface lo inet loopback

    auto eth0

    iface eth0 inet static

    address 192.168.1.252

    netmask 255.255.255.0

    gateway 192.168.1.1

    $ sudo /etc/init.d/networking restart

    我的虚拟机地址各设为:192.168.1.251  192.168.1.252  网关IP:192.168.1.1

    设置完后,首先在虚拟机中互ping,必须保证能通。

    环境准备好后,可以开始了,我没有采取rpm方式,ubuntu下直接在线安装mysql非常方便的,省去了很多步骤。

    $ sudo apt-get install mysql-server

    默认安装完自动开启的,所以用 netstat -tap|grep mysql 看看是不是mysql服务存在了

    之后查询下mysql运行状态,service mysql status,同样,还有其他命令,service mysql                  start/stop/restart.

    如果出现了以下信息,则代表成功了。

    mysql start/running, process 1199

    在登陆前先到/etc/mysql/my.cnf下 将bind-address注释掉,因为默认只能本机访问。

    登陆mysql

    mysql -u root -p

    grant replication slave,reload,super on *.* to slave @192.168.1.152 identified by '1234'

    然后在另一台Ubuntu下远程测试下

    mysql -u slave -h 192.168.1.151 -p

    前期工作准备好了,现在就开始配置:

    在master 192.168.1.251的机子上对my.cnf修改,切记以下配置信息一定要加到【mysqld】模块中,放在文件其他位置会导致master配置失败。

    server-id=1

    log_bin=/var/log/mysql/mysql-bin.log

    binlog_do_db=student

    binlog_ignore_db=mysql

    重启下mysql

    sudo  /etc/init.d/mysql restart

    如果在重启过程中failed,建议先看下my.cnf的log-error对应得错误日志文件位置,然后cat看下报错信息

    之后进入master的mysql,首先看下二进制功能是否on.

    show variables like 'log%'

    如果为off代表没开启,则还是返回检查下my.cnf文件,是否放在[mysqld]那块中等。文件路径是否对了

    show master status;则能看到对应得file position 信息,这些在从机设置的时候要用到。

    最后到salve 192.168.1.252的/etc/mysql/my.cnf下配置:

    server-id=2

    log_bin=/var/log/mysql/mysql-bin.log

    replicate_do_db=student

    重启下mysql

    sudo  /etc/init.d/mysql restart

    slave进入mysql:

    stop slave

    然后设置从master复制日志配置

    change master to master_host='192.168.1.151' ,master_user='slave',master_password='1234',

    master_log_file='log.000004',master_log_pos=94;

    log_file log_pos则是在master下show master status看到的file position信息。

    start slave;

    show slave statusG

    在出现的信息中找到 Slave_IO_Running/Slave_SQL_Running ,都为YES则成功了。

    如果出现了NO,则还是查看log-error日志文件,会比较清晰的描述出来的。

    本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-05/101599.htm

    图片 1

    # vi /etc/rc.d/mysql_bak.sh

    #!/bin/bash

    # 环境变量
    PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH
    export LANG=C

    # 日常备份目录
    basedir=/backup/daily/

    # 数据库账户
    user=root
    passwd=123456

    # mysql备份目录
    mysql_db_bak=$basedir/$(date %F_%H%M)
    [ ! -d "$mysql_db_bak" ] && mkdir -p $mysql_db_bak

    # mysql下所有库名称
    db_name=("information_schema" "mysql" "test_db1" "test_db2" "test_db3" "test_db4")

    # 1.备份MySQL数据库
    for((i=0; i!=${#db_name[@]}; i))
    {
    mysqldump -u $user -p$passwd --opt --skip-lock-tables --flush-logs --database ${db_name[i]} > $mysql_db_bak/${db_name[i]}.sql

    3、MHA版本:mha4mysql-node-0.54-0.el6.noarch.rpm,

    一、所需准备 mysql-master :192.168.1.71
    mysql-slave  :192.168.1.70
    mysql版本均为:5.5.21
    keepalive 版本:1.2.2
    vip:192.168.1.60

    }

    二.复制从(192.168.7.9)数据库备份到主库(192.168.7.12)

                        mha4mysql-manager-0.54-0.el6.noarch.rpm

    注;mysql安装可参考 http://www.linuxidc.com/Linux/2012-06/63669.htm

    # vi /etc/rc.d/scp_mysql.sh

    #/bin/bash
    # 环境变量
    PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH

    4、keepalived版本:

    二、方案介绍

    scp /backup/daily/2013-09-10_1258/* 192.168.7.9:/tmp

    三.恢复主库(192.168.7.9)

    5、主机部署:

    两台mysql互为主从,但只有master写,slave只负责读。主从通过keepalive做成高可用,当master出问题,由slave接替master工作,即读写都在slave操作。当master恢复正常,master自动同步故障时间段数据,接替slave的写工作。

    # vi /etc/rc.d/recover_mysql.sh

    #/bin/bash
    # 环境变量
    PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH
    export LANG=C

    # 数据库账户
    user=root
    passwd=123456

    # # mysql下所有库名称
    db_name=("information_schema" "mysql" "test_db1" "test_db2" "test_db3" "test_db4")

    # 恢复MySQL数据库
    cd /tmp
    for((i=0; i!=${#db_name[@]}; i))
    {
    mysql -u $user -p$passwd -e "drop database ${db_name[i]};"
    mysql -u $user -p$passwd -e "create database ${db_name[i]};"
    mysql -u $user -p$passwd ${db_name[i]} < ${db_name[i]}.sql
    }

    # 开启从库
    mysql -u $user -p$passwd -e "stop slave;"
    mysql -u $user -p$passwd -e "reset slave;"
    # 设置从库连接主库的相关参数,可利用相关命令查看
    mysql -u $user -p$passwd -e "change master to master_host='192.168.7.9',master_user='slave',master_password='123456#',master_log_file='bin.000029',master_log_pos=106 ";
    mysql -u $user -p$passwd -e "start slave;"
    # 查看主从是否连接成功

    manager机:192.168.1.201
    master机:192.168.1.231
    slave1机:192.168.1.232(备用master)
    

    三、双主配置

    mysql -u $user -p$passwd -e "show slave statusG;"

    四.查看主从同步信息
    1.查看主库binlog日志以及偏移量
    # mysql -u root -p123456 -e "show master status"
    2.查看从库是否连接到主库
    # mysql -u root -p123456 -e " show slave statusG;"

    注:实际操作中发现,一旦VIP切换后有一定几率造成主从服务器都会同时获取到该虚IP,导致主从数据库冲突,无论重启keepalived与否都无法干掉该VIP,目前我的临时解决方案是将两台服务器均重新启动,大家如果有更好的方法请留言告知我,不胜感谢。

    后续:
    在网上翻阅大量资料,初步判断VIP切换后造成的冲突是因为在触发切换动作时使用的pkill keepalived 来杀掉keepaliaved进程,造成系统只是杀掉keepalived自身进程,并未来得及切换VIP,
    目前的解决方案是使用正规的keepalived启动脚本/etc/init.d/keepalived stop 来关闭
    初步测试未发现异常。。。

    如果出现主从在切换VIP时,出现了主的VIP未自动关闭,从的正常开启,导致都获取到VIP,造成互相冲突的情况,可手动输入如下命令删除一方的VIP地址
    # ip addr del "虚拟ip" dev eth0
    但此方法只是一个临时的解决方案,当手动删除VIP后,重启keepalived服务会无法正常开启vip,需要重启服务器方能恢复。

    推荐阅读:

    Ubuntu下Nginx做负载实现高性能WEB服务器5---MySQL主主同步 http://www.linuxidc.com/Linux/2012-06/61687p5.htm

    生产环境MySQL主主同步主键冲突处理 http://www.linuxidc.com/Linux/2013-07/86890.htm

    MySQL主从失败 错误Got fatal error 1236 http://www.linuxidc.com/Linux/2012-02/54729.htm

    MySQL主从复制,单台服务器上实施 http://www.linuxidc.com/Linux/2013-03/81913.htm

    CentOS 6.3下Haproxy Keepalived Apache配置笔记 http://www.linuxidc.com/Linux/2013-06/85598.htm

    Haproxy KeepAlived 实现WEB群集 on CentOS 6 http://www.linuxidc.com/Linux/2012-03/55672.htm

    Keepalived Haproxy配置高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/56748.htm

    Haproxy Keepalived构建高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/55880.htm

    图片 2

    6、大致步骤:

    1、配置文件
    master my.cnf 主要参数

    (1)、安装MYSQL 5.6.
    (2)、MYSQL配置主重复制.
    (3)、首先用ssh-keygen实现四台主机之间相互免密钥登录.
    (4)、安装MHAmha4mysql-node,mha4mysql-manager 软件包
    (5)、在MHA配置master,slave1的相关文件。
    (6)、管理机manager上配置MHA文件
    (7)、masterha_check_ssh工具验证ssh信任登录是否成功
    (8)、masterha_check_repl工具验证mysql复制是否成功
    (9)、启动MHA manager,并监控日志文件.
    (10)、测试master宕机后,是否会自动切换。
    (11)、主从安装keepalived ,实现虚拟ip漂移。
    

    log_slave_updates
    log-bin = mysql-bin
    server-id = 1
    binlog-ignore-db=mysql
    #auto_increment_increment = 2
    #auto_increment_offset = 2

     三、mysql安装

    slave my.cnf 主要参数

    1、下载MYSQL 5.5

    log_slave_updates
    log-bin = mysql-bin
    server-id = 2
    binlog-ignore-db=mysql
    #auto_increment_increment = 2
    #auto_increment_offset = 1

    本文由1010cc时时彩经典版发布于操作系统,转载请注明出处:VIP安装配置,04下搭建MySQL主从服务器

    关键词:

上一篇:没有了

下一篇:没有了