您的位置:首页 > 数据库 > MySQL

Mysql主从配置,实现读写分离

2017-09-27 17:33 453 查看
最好主从都要求数据库版本一样,我这用的是mysql5.5

主从数据库要有相同的数据库和相同的表结构

我这里以windows中数据库作为主数据库,以虚拟机上的centos上的数据库作为从数据库

1、配置Master主服务器

(1)在Master MySQL上创建一个用户‘repl’,并允许其他Slave服务器可以通过远程访问Master,通过该用户读取二进制日志,实现数据同步。

mysql>create user repl; //创建新用户
//repl用户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限,密码为mysql。说明一下192.168.0.%,这个配置是指明repl用户所在服务器,这里%是通配符,表示192.168.0.0-192.168.0.255的Server都可以以repl用户登陆主服务器。当然你也可以指定固定Ip。
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.0.%' IDENTIFIED BY 'mysql';


(2)找到MySQL安装文件夹修改my.Ini文件。mysql中有好几种日志方式,这不是今天的重点。我们只要启动二进制日志log-bin就ok。

 在[mysqld]下面增加下面几行代码
server-id=1   //给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号
log-bin=master-bin
log-bin-index=master-bin.index

binlog-do-db=mstest
binlog-ignore-db=mysql


(3)查看日志

mysql> SHOW MASTER STATUS;
重启MySQL服务
2、配置Slave从服务器

(1)找到MySQL安装文件夹修改my.ini文件,vi /etc/my.cnf ,在[mysqld]下面增加下面几行代码

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

重启MySQL服务

(3)启动Slave

start slave;
输入命令:show slave status\G。将显示下图。如果slave_io_running和slave_sql_running都为yes,那么表明可以成功同步
如果成功了,就可以在主表里添加一条数据进行测试,看看从数据库会不会同步数据

如果slave_io_running和slave_sql_running有一个以上是no的,说明同步不成功,解决方法:

在主master进入mysql

执行flush
logs;

查看主master状态

show master status\G

记下file和position

切换到从库slave

先停止从库,stop slave

输入CHANGE MASTER TO MASTER_LOG_FILE='master-bin.000114',MASTER_LOG_POS=120;

红色部分替换成上面主库记下的值

start slave

再次查看从库状态,问题解决

show slave status\G;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: