赞
踩
,我的两个IP分别是128和129,我是把129作为master节点,128作为slave节点
,
systemctl stop firewalld.service,
还要把这个也跟关闭SeLinux权限问题
/usr/sbin/sestatus -v 这个是查看SeLinux是否关闭的,我的已经关闭了所以是这个样子
如果没有关闭使用这个命令关闭
vi /etc/sysconfig/selinux 然后再用/usr/sbin/sestatus -v查看是否关闭
进入my.cnf,这个是MySQL的配置文件
vi /etc/my.cnf 我的是放在这里了
#打开Mysql日志,日志格式为二进制,这个binlog的文件夹是要自己创建的,并且赋予MySQL的权限,使用这个命令chown -R mysql:mysql binlog, msyql-bin是启动MySQL自动创建的
log-bin=/usr/local/software/mysql5.7/mysql/data/binlog/mysql-bin
#[必须]服务器唯一ID,默认是1
server-id=1
#每次执行写入就与硬盘同步
sync-binlog=1
#需要同步的二进制数据库名
binlog-do-db=tuling
binlog-do-db=tuling_master
#只保留7天的二进制日志,以防磁盘被日志占满
expire-logs-days = 7
#不备份的数据库
binlog-ignore-db=information_schema
binlog-ignore-db=performation_schema
binlog-ignore-db=sys
以上配置是指定复制那个数据库了,如果不指定按照下面配置
service mysql restart
如果报错去看一下日志报的什么错误,具体问题具体解决
**
1.在 Master 的数据库中建立一个备份帐户(user = tuling,pwd=root):每个 slave 使用标准的 MySQL 用户名和密码连接 master 。进行复制操作的用户会授予 REPLICATION SLAVE 权限。
#创建用户 mysql> CREATE USER ‘tuling’@‘192.168.%.%’ IDENTIFIED BY ‘root’;
#授权mysql> grant replication slave,replication client on . to tuling@‘192.168.%.%’ identified by ‘root’;
#刷新权限mysql> FLUSH PRIVILEGES;
2.查看主服务器状态
在 Master 的数据库执行 show master status,查看主服务器二进制日志状态及位置号。
3.master的就配置好了
1.对 slave 进行配置,打开中继日志,指定唯一的 servr ID,设置只读权限。在配置文件加入如下值:
server-id=2 //配置server-id,让从服务器有唯一 ID号 relay_log = mysql-relay-bin //打开Mysql中继日志,日志格式为二进制
read_only = 1 //设置只读权限
log_bin = mysql-bin //开启从服务器二进制日志
log_slave_updates = 1 //使得更新的数据写进二进制日志中
#如果salve库名称与master库名相同,使用本配置
replicate-do-db = tuling
#如果master库名[tuling]与salve库名[tuling01]不同,使用以下配置[需要做映射] replicate-rewrite-db = tuling[主库名] -> tuling01[从库名]
#如果不是要全部同步[默认全部同步],则指定需要同步的表
replicate-wild-do-table=tuling01.t_order
replicate-wild-do-table=tuling01.t_order_item
以上配置根据自己需要配置
这是我的配置
2.配置完之后重启服务
可使用SHOW SLAVE STATUS\G;查看从服务器状态
只有这两个都变成yes才算成功
我遇到的问题是在重启从节点的时候报了如下错误
这是因为slave节点配置需要复制到那个数据库了,但是我从库中没有创建这个库导致报这个错误
2. Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
原因分析:
mysql 5.7的复制引入了uuid的概念,各个复制结构中的server_uuid得保证不一样,但是查看到直接copy data文件夹后server_uuid是相同的,show variables like '%server_uuid%';
解决方法:
找到data文件夹下的auto.cnf文件,修改里面的uuid值,自己手动改了即可,保证各个db的uuid不一样,重启db即可
我们在 master 服务器上创建一个数据库,再使用该数据库创建一个表,添加一条记录,来看一看 slave 服务器有没有同步成功。
首先,我们先来查看一下两个服务器上有什么数据库:
master:
slave:
现在,我是在master的test库中创建一个test的表
我在看slave的test的时候,发现多了一个test的表,表明主从复制成功
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。