mysql 主从配置和监测同步状态

原创
2015/06/05 12:25
阅读数 303

MYSQL 的主从配置很简单。环境是ubuntu14.04 64位,mysql是5.5的。

配置主从的步骤

  •  停掉所有数据库写操作。

    • 我是直接停掉所有关联数据库的应用

    • 但对于某些数据库可以加锁 FLUSH TABLES WITH READ LOCK;配置好再解锁 UNLOCK TABLES;

  •  备份数据库,把数据库同步到从库中 

  •  修改配置文件

    • 主库

      • server-id=1   #设置服务器id,注意:如果原来的配置文件中已经有这一行,就不用再添加了。id不要与其他数据库重复就行

      • log_bin=mysql-bin  #启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。

      • binlog-ignore-db=mysql   #不同步mysql系统数据库

      • 在这里没有配置要同步的数据库


    • 从库

      • server-id=10   

      • log-bin=mysql-bin  #启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。

      • replicate-do-db=uwin_apps   #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行

      • replicate-ignore-db=mysql   #不进行同步mysql系统数据库


  • 重启mysql

  • 在主库执行以下命令

    • grant replication slave on *.* to 'uwin_apps'@'%' identified by 'uwin_apps123'; 添加从库同步用户

    • FLUSH PRIVILEGES;

    • show master status;--记下file和Position

  • 在从库中

    • stop slave;

    • change master to master_host='10.0.1.124',master_user='uwin_apps',master_password='uwin_apps123', master_log_file='mysql-bin.000001' ,master_log_pos=68135524;

    • start slave;

  • 没有报错就OK了

  • 查看同步状态   show slave status;

  • Slave_IO_Running 和Slave_SQL_Running的状态都是Yes就是正常的

下面就是监测数据库的同步状态的脚本了

#!/bin/sh
#set -x
#file is slave_repl.sh
#Author by Kevin
#date is 2011-11-13

#mstool="mysql -h 192.168.1.106 -uroot -pw!zl7POg27 -P 3307"
sltool="mysql -uroot -proot"
date=$(date +%y-%m-%d--%H:%M:%S)
declare -a slave_stat
slave_stat=($($sltool -e "show slave status\G"|grep Running |awk '{print $2}'))
echo ${date}
if [ "${slave_stat[0]}" = "Yes" -a "${slave_stat[1]}" = "Yes" ]
     then
     echo "OK slave is running"
     exit 0
else
     echo "Critical slave is error"
     echo
     echo "*********************************************************"
#     echo "Now Starting replication with Master Mysql!"
#        file=`$mstool -e "show master status\G"|grep "File"|awk '{print $2}'` 
#        pos=`$mstool -e "show master status\G"|grep "Pos"|awk '{print $2}'` 
#        $sltool -e "slave stop;change master to master_host='192.168.1.106',master_port=3307,master_user='repl',master_password='w!zl7POg27',master_log_file='$file',master_log_pos=$pos;slave start;"
#        sleep 3
#        $sltool -e "show slave status\G;"|grep Running
#    echo
#    echo "Now Replication is Finished!"
#    echo
    echo "**********************************************************"
	sendemail -s smtp.163.com -f songserver@163.com -t song571377@163.com -u hello -m "${date}master to slave find error" -xu songserver@163.com -xp mlrnwoyulhzkqnbu -o tls=auto
        exit 2
fi


  • 查看同步状态是否正常就是判断
  • Slave_IO_Running 和Slave_SQL_Running的状态是否都是Yes。



    运行这个脚本就可以查看数据库同步状态,如果出问题就给song5@163.com发送邮件。在其中注释的部分是在出现同步错误后自动恢复的。

    这个脚本copy  http://blog.chinaunix.net/uid-7589639-id-3018209.html

    写好脚本后,就是让这个脚本定时执行了。

    在终端里 sudo vi /etc/crontab

    在里面加入

    */1 * * * * root sh /home/songyang/check9.sh

    是的,我的那个脚本文件名是 check.9sh 并且在 /home/songyang/路径下

    执行后会把输出信息发到你root邮箱里

    OK,大功告成。

    发送邮件需要先安装sendemail





展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部