微信号:jjsayphp

介绍:PHP、Linux技术分享

Mysql 实现主从同步

2015-09-18 15:13 俊杰说php

图为mysql同步图示,分别在主服务器从服务器安装好MYSQL,YUM或编译安装都可以。

第一步进入主服务器配置

目的是给从服务器分配账号与访问权限。

mysql>  GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.101' IDENTIFIED BY 'mysql';

192.168.1.101是从服务器的ip地址,repl,mysql分别是同步账号密码别忘了

mysql> SHOW MASTER STATUS;

Empty set (0.00 sec) 

查看主服务器的状态,empty表示未开启二进制日志,下一步去开启。

修改 /etc/my.cnf文件

在[mysqld]后面加入

server-id=9

log-bin=master-bin

log-bin-index=master-bin.index

serveri-id 自己定,一般是服务器ip最后一个数字,不要重复。

重启mysql service:

/etc/init.d/mysqld restart

mysql> SHOW MASTER STATUS;

+-------------------+----------+--------------+------------------+

| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+-------------------+----------+--------------+------------------+

| master-bin.000001 |  3996131 |              |                  |

+-------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

记下File Position,后面要用到。

开始配置Slave从服务器

同理先修改/etc/my.cnf文件,在[mysqld]在新增

server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin 

重启mysql service:

/etc/init.d/mysqld restart

配置连接master

mysql> change master to master_host='192.168.0.104', //Master 服务器Ip
master_port=3306,
master_user='repl',
master_password='mysql', 
master_log_file='master-bin.000001',//Master服务器产生的日志
master_log_pos=0;

使用时记得把注释删除

启动Slave

mysql> start slave;

主从同步检查

mysql> show slave status\G

其中SlaveIORunning 与 SlaveSQLRunning 的值都必须为YES,才表明状态正常。

常见的遇到的问题

  1. SlaveIORunning一直为no,查看主从服务器3306端口是否可以访问,iptables是否已经设置。

  2. 同步日志有关与字符类型的报错,查看主从服务器的Mysql版本是否一致。

  3. 如何控制单独库,单独表的同步?

在/etc/my.cnf中配置

replicate-do-db = dashboard
replicate-ignore-db = mysql
replicate-ignore-table = mysql
replicate-do-table = dashboard


 
俊杰说php 更多文章 2014 年大数据市场趋势十大预测 20 个超棒的免费的响应式 Joomla 模板 关于CodeIgniter框架的一点感受 PHP程序员为什么要学C和JAVA 美女博士的极客画家生活
猜您喜欢 重大喜讯:中奖名额增加了5个!速度来领! VR、AR、MR:看完这篇文章,我再也不混乱了 推荐!国外程序员整理的 PHP 资源大全 东京OpenStack峰会归来:与容器云结合新的思考 利用无线电波窃取计算机密码