DayDayUP_Linux运维学习_MySQL 主从配置

来源:互联网 发布:k近邻算法流程图 编辑:程序博客网 时间:2024/05/02 01:01

1 环境介绍

系统:CentOS6.5
mysql:MySQL5.6.27
ip
主:192.168.1.110 master
从:192.168.1.11 slave
mysql5.6.27的安装见:
http://blog.csdn.net/erujo/article/details/48949103

2 把MySQL主服务器上的wlzh库备份到MySQL从服务器上

master

# mysqldump -u root -p wlzh > ~/wlzh.sql# scp wlzh.sql root@192.168.1.11:/root/

slave

# mysql -u root -p discuz < wlzh.sql

3 配置主服务器上的my.cnf

# vim /etc/my.cnfserver_id=1  #必须 binlog-do-db=wlzh #允许主从复制的库#binlog-ignore-db=test #不记录binlogreplicate-ignore-db=test #不复制test库的binloglog-bin=wlzh-bin #必须binlog_cache_size = 1Mbinlog_format=mixedexpire_logs_days=3# service mysqld restart# mysql -uroot -pmysql>grant replication slave on *.* to 'slave'@'192.168.1.11' identified by '123456';mysql>flush tables with read lock;mysql>show master status;+------------------+----------+--------------+------------------+-------------------+| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+------------------+----------+--------------+------------------+-------------------+| wlzh-bin.000001 |     1281 | wlzh         |                  |                   |+------------------+----------+--------------+------------------+-------------------+

4 修改slave配置文件并重启服务

首先测试从服务器能否访问主上的MySQL

# mysql -h192.168.1.110 -uslave -p123456

如果无法访问,请测试两主机是否联通,如果能ping通,请检查密码和自己的输入,再无法解决请关闭防火墙后尝试,仍旧无法请问度娘

# iptables -F //关闭防火墙
# vim /etc/my.cnfserver_id=2  #只要不与主的相同,且大于主即可binlog-do-db = wlzh # 允许的库binlog-ignore-db=test #不记录binlogreplicate-ignore-db=test #不复制test库的binloglog-bin=wlzh-binbinlog_cache_size = 1Mbinlog_format=mixedexpire_logs_days=3# service mysqld restart# mysql -uroot -pmysql>stop slave; //5.6之前为slave stop/start;mysql>change master to master_host='192.168.1.110', master_port=3306, master_user='slave', master_password='123456', master_log_file='wlzh_log.000001', master_log_pos=1281;#master_user是我们在master上创建的赋予replication slave权限的账户#master_port为默认端口3306时可不用指定#master_log_file和master_log_pos就是在master上show出来的master的状态信息mysql>start slave;

5 查看是否成功

在从上执行

mysql> show slave status \G;

看能否看到

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

6 常见错误处理

6.1 master and slave have equal MySQL server UUIDs
虚拟机是在mysql安装好以后克隆的,所以在mysql的数据目录下的auto.cnf文件中的uuid一样,所以导致错误
解决方法:删除slave数据目录的auto.cnf,重启mysql服务会自动生成新的auto.cnf,uuid也会变化。
6.2 ERROR 1198 (HY000): This operation cannot be performed with a running slave; run STOP SLAVE first
解决办法:打开my.cnf里的log-bin,并设置
6.3 Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the –replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).
解决办法:修改从上的server_id,使其大于主上的server_id,并重启MySQL
6.4 Slave_IO_Running: No
将其理解为逻辑错误,应该是由于master意外掉电,重新启动时自动flush了binlog,而slave并未获取到这个信息导致,因此解决该问题也比较简单,直接重置同步的master位置应该就可以
解决办法:

master:mysql> show master status;slave:mysql>stop slave;slave:mysql>change master to master_host='192.168.1.110', master_port=3306, master_user='slave', master_password='123456', master_log_file='wlzh_log.000001', master_log_pos=1281;slave:mysql>start slave;
0 0
原创粉丝点击