主从复制配置步骤:
一、主机(master)配置
1、修改MySQL配置文件my.cnf
在[mysqld]标签下添加以下几行
log-bin=master-bin //启动二进制日志
server-id=1 //主标志的server-id
修改完重启mysql即可
2、登录mysql给从授权,允许从mysql能远程登录主mysql
mysql>grant replication slave on *.* to 'USER'@'%' identified by 'PASSWD'; //USER为登录用户名,PASSWD为登录密码
验证:从服务器上测试:mysql -u USER -pPASSWD -h MASTERIP //能登录则授权成功,否则授权失败
3、导出sql文件至从机mysql上(若是刚装的mysql则不需要这一步)
[root@localhost ~]#mysqldump -uUSER -pPASSWD --all-databases > alldatabases.sql
4、登录mysql,查询主数据库的状态,并记下File和Position的值
mysql>show master status;
二、从机(slave)配置
1、同样需要修改MySQL配置文件my.cnf
在[mysqld]标签下添加以下几行
log-bin=slave-bin //也同样需要启动二进制日志
server-id=2 //从标志的server-id,必须必master的server-id大
修改完重启mysql即可
2、导入sql文件
[root@localhost ~]#mysqldump -u USER -pPASSWD --all-databases < alldatabases.sql //alldatabases.sql从主上同步过来
3、关闭slave
mysql>stop slave;
mysql>reset slave;
4、从上配置主从
mysql>change master to master_host='MASTERIP',master_user='USER',master_password='PASSWD',master_log_file='mysql-bin.000010' ,master_log_pos=257;
//MASTERIP:amster的ip、USER:授权时的用户、PASSWD:授权时的密码、file和pos是master的二进制起始文件和位置
5、show slave status\G
查看IO和SQL的状态都为YES就说明成功!
状态监测,如果服务器上了外网就可以以邮件方式发送
写个监控脚本,下面是我以s2、s4、s6三台从服务器的状态监测
#!/bin/bash
source /etc/profile
export LANG=zh_CN.UTF-8
Date=`date +"%y-%m-%d %H:%M:%S"`
#检测s2/s4/s6主从同步
for i in {2,4,6}
do
ssh slave$i "/usr/bin/mysql -uroot -p123456 -S /r2/mysqldata/mysql.sock -e 'show slave status\G' |grep -i 'running'" > /root/netmonitor/check_mysql_slave.log
Slave_IO=`cat /root/netmonitor/check_mysql_slave.log | grep IO | awk '{print $2}'`
Slave_SQL=`cat /root/netmonitor/check_mysql_slave.log | grep SQL | awk '{print $2}'`
if [ "$Slave_IO" = "Yes" -a "$Slave_SQL" = "Yes" ]
then
echo "Slave$i:MySQL主从同步正常"
else
echo "########$Date########" > /root/netmonitor/check_mysql_slave.log
echo "Slave$i:MySQL主从同步异常,请检查!" >> /root/netmonitor/check_mysql_slave.log
mail -r "发件人" -c "抄送人" -s "主题" "收件人" < /root/netmonitor/check_mysql_slave.log
fi
done
阅读(367) | 评论(0) | 转发(0) |