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

Mysql 主从配置

2018-05-17 19:27 218 查看
材料两台服务器 Mysql 版本一致

我测试时使用版本为

[root@localhost etc]# mysql -V
mysql  Ver 14.14 Distrib 5.5.58, for Linux (x86_64) using readline 5.1

主库IP:192.168.0.88
从库IP:192.168.0.89

1、配置Master主服务器

连接数据库

mysql -uroot -proot

添加一个用于主从同步的用户 repl,并且密码是123456,并允许192.168.0.89 服务器可以通过远程访问Master,通过该用户读取二进制日志,实现数据同步

create user repl;
///repl用户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.0.89' IDENTIFIED BY '123456';

查找数据库配置文件一般为 my.cnf 位置在 /etc/my.cnf

不确定的可以使用 whereis my.* 搜索一下

[root@localhost /]# whereis my.*
my: /etc/my.cnf

先将此文件备份

cd /etc
cp my.cnf my.cnf.back

编辑此文件

vim my.cnf

主要找到两个地方 server-id 与 log-bin

#我的配置现在还是默认的,已经被注释了

#log-bin=mysql-bin
#binlog_format=mixed
#server-id      = 1

然后把这俩个改成 binlog_format 日志格式,不是我的重点,先不管他。binlog_format 如何设置

log-bin=master-bin
#binlog_format=mixed
server-id      = 1

保存之后,退出mysql,exit; 重启Mysql

service mysql restart;

重启之后,连接Mysql 查看 Master 主机状态

show master status\G;

成功情况下会出现以下内容;

这里的参数在配置从数据库时需要使用,Master 服务器就算配置完成了

mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000003
Position: 107
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)

mysql>

2、配置从数据库

按照第一步找到mysql配置文件的路径,修改配置

vim /etc/my.cnf



#log-bin=mysql-bin
#binlog_format=mixed
#server-id      = 1

修改成:

#log-bin=mysql-bin
#binlog_format=mixed
server-id      = 2

从服务器没必要开启bin-log日志,所以 log-bin 也不用开

现在要测试下,从服务器与主服务器的通讯状态,

在从服务器的数据库 使用 主服务器刚刚创建的用户 repl 远程连接试下

mysql -urepl -p123456 -h 192.168.0.88

如果连接不成功,检查下 iptables,或者暂时关不 iptable

// 查看已有规则
iptables -L

//清除 iptable
iptable -F

连接成功之后,继续从服务器的操作,注意是从服务器

重新连接从服务器Mysql,执行

CHANGE MASTER TO
MASTER_HOST='192.168.0.88',
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS= 107;

MASTER_LOG_FILE 与 MASTER_LOG_POS 的值为配置主服务器时的值(此处 各参数详解看这里),

如果不记得了可以在主服务器的Mysql 使用如下命令查看

show master status\G

执行成功,启动Slave

start slave;

查看主从同步状态

show slave status\G




成功的重要参考是上图两个 YES,简单的主从配置就可以了,详细的配置可以再了解了解

主库用来更新,从库用来查询,读写分离就ojbk啦~~

———————————————分割线—————————————————————

我在第一次配置的时候,最后一步也没有成功



此处 Slave_IO_Running: Connecting 并没有 yes

其实命令也给出了错误原因的,我的错误是主服务器拒绝连接



检查顺序

1、iptables 是否关闭

iptables -L

2、账号权限是否足够

主服务器Mysql

show grants for 'repl';

如权限有 REPLICATION SLAVE 那证明没问题

    mysql> show grants for 'repl';+-----------------------------------------------------------------------------------------------------------------+
| Grants for repl@% |
+-----------------------------------------------------------------------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
+-----------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

3、账号密码是否错误(一般是这个,注意不能有空格)

清空 researt slave 日志

mysql> stop slave;
mysql> reset slave;

重新执行参数

CHANGE MASTER TO
MASTER_HOST='192.168.0.88',
MASTER_USER='repl1',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS= 107;

重新查看结果

mysql> start slave;mysql> show slave status\G

4、MASTER_LOG_FILE ,MASTER_LOG_POS 不能错误

检查方式,主服务器执行 show master status\G

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