Mysql 主从搭建,读写分离

环境:centos(从) + windows(主) + mysql

一.修改windows下my.ini文件

# id是区分数据库的标识,不能重复
server_id=1
# 二进制文件,用来存储主从数据库的数据写入
log-bin=C:\\mysql-log\\mybin
# 错误日志文件
log-error=C:\\mysql-log\\myerror
# 每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去
innodb_flush_log_at_trx_commit=1
# 同步数据库,如果多库另写几行即可
binlog-do-db=test
# 无需同步的数据库,以下几行基本一样,无需改动
# binlog-ignore-db = mysql
# mysql复制模式,三种:SBR(基于sql语句复制),RBR(基于行的复制),MBR(混合模式复制)
# 混合模式复制
# binlog_format=MIXED
# binlog过期清理时间
# expire_logs_days=7
# binlog每个日志文件大小
# max_binlog_size=20M

在主数据库上创建用于复制数据的用户 

CREATE USER 'user'@'%' IDENTIFIED BY '123456';

授予用户权限

GRANT REPLICATION SLAVE ON *.* TO 'user'@'%';

刷新:

flush privileges;

然后

Mysql 主从搭建,读写分离_第1张图片

记住file和position下的数据,在执行从库的步骤

 

二.修改centos下my.cnf文件,如果无特殊修改,文件路劲为/etc/my.cnf

#从数据库(Slave)配置:
#从库日志记录文件位置或名称前缀
log_bin = /var/lib/mysql/mylogbin.log
#同步日志记录的频率,1为每条都记录,安全但效率低
sync_binlog = 1
#server的id,不能与相同id的mysql主从连接
server-id=2
#从库日志忽略的数据库名称,不记录

#这里同步数据有两种思路,一种是主服务器只发从库需要的,在主库指定;一种是主服务器把所有数据同步过来,从库按需过滤接收
#此处添加需要同步的数据库名称,那么它会只接收这个数据库的信息,多个数据库需同步按照此格式另写几行即可
#replicate-do-db=test
#忽略接收的库名
#replicate-ignore-db = mysql
#跳过所有错误继续
slave-skip-errors=all
#设置延时时间
slave-net-timeout=60

修改配置文件后记得重启服务

执行

stop slave;//停止以前同步
CHANGE MASTER TO
MASTER_HOST='主库host',
MASTER_USER='主库创建用户name',
MASTER_PASSWORD='密码',
MASTER_LOG_FILE='截图file下的名字',
MASTER_LOG_POS=position的值;
start slave;//执行同步
show slave status\G

执行最后一行代码会出现一列数据,如果如下图一样,都是yes,则成功了,一般来说,第一个yes没有可能是连接通信问题,比如防火墙,第二个就是偏移量的问题,上网搜都有的。

 

你可能感兴趣的:(mysql)