为了实现读写分离,一般都需要先设置好mysql的主从结构,网上现有的mysql配置大都基于低版本,在5.5以上版本无法配置成功,所以参考了官方文档,写了这篇笔记。
*主要参考Mysql 5.6的官方文档文档
https://dev.mysql.com/doc/refman/5.6/en/replication-howto.html
 
备注:设置主从结构的情况下,在修改主库(master)数据的时候会自动同步修改到从库(slave)。
所以要求初始同步的时候数据一致,如果已有数据的情况下,
建议先备份主库数据,然后清空主库和从库数据,当主从结构设置完成后,再重新将数据导入到主库。
#如果要求线上系统不能停机的话,建议参考下面的文档进行不停机的数据同步。
https://dev.mysql.com/doc/refman/5.6/en/replication-howto-existingdata.html

下面是操作步骤,假设是两个空数据库,不需要做数据从主库(简称:master)到从库(简称:slave)的热同步
1.数据同步需要依赖bin格式的日志和每个服务器唯一的serever id,所以要在master机上做如下配置并重启(/etc/mysql/my.cnf,添加到[mysqld]部分)
log-bin=mysql-bin
server-id=1
log-bin=log
binlog-do-db=dbname#需要同步的数据库名
binlog-ignore-db=information_schema#忽略同步的数据库名
binlog-ignore-db=mysql#忽略同步的数据库名

2.Slave从库也需要设置server id,做如下配置并重启(/etc/mysql/my.cnf,添加到[mysqld]部分)
[mysqld]
server-id=2
replicate-ignore-db=mysql#忽略同步的数据库名
replicate-ignore-db=information_schema#忽略同步的数据库名
replicate-do-db=dbname#需要同步的数据库名

3.在master上使用下面的命令添加用来同步的用户并赋予权限:
mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '1234';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
mysql> flush privileges;

4.使用命令(SHOW MASTER STATUS;)查看master的情况

File Position     BinLog_Do_DB     BinLog_Ignore_DB
log.000009 14002  rtm_bs  information_schema,mysql

#如果这条命令没有出现内容的话,说明master配置有问题

5.在Slave服务器上执行下面的命令。
mysql> SLAVE STOP;

mysql> CHANGE MASTER TO MASTER_HOST='192.168.10.115',#master库的IP
mysql> MASTER_USER='slave', #master库的登陆用户
mysql> MASTER_PASSWORD='1234', #master库的登陆用户密码
mysql> MASTER_LOG_FILE='log.000009', #master库的File部分显示内容
mysql> MASTER_LOG_POS=14002; #master库的Position部分显示内容

mysql> START SLAVE;
#如果显示出Slave的具体信息的话,说明配置成功了。

 
6.尝试在主库修改数据,正常的话,在从库就能看到数据变化了。
 
7.一般从库会要求只读,可以创建一个只读的用户slave_user对外提供访问。
GRANT Select ON *.* TO slave_user@"%"  IDENTIFIED BY "12354";

或者执行下面的命令将数据库置为只读

mysql> set global read_only=1;

当需要将salve库从只读状态变为读写状态,执行下面的命令

mysql> set global read_only=0;
 

MySql5.5以上版本设置主从结构的例子的更多相关文章

  1. mysql8.0.25版本设置主从数据库,并且从库只读

    具体操作步骤 说明:主从数据库版本一致 1.主库创建同步使用的用户 create user 'repl'@'%' identified with 'mysql_native_password' by ...

  2. mysql-5.7免安装版本设置

    mysql-5.7.22 免安装版本设置(Windows7) 一.在Mysql官网下载Mysql-5.7.22的ZIP文件  下载链接为:https://dev.mysql.com/downloads ...

  3. MySQL Replication 详解MySQL数据库设置主从同步的方法

    MySQL同步的流程大致如下:  1.主服务器(master)将变更事件(更新.删除.表结构改变等等)写入二进制日志(master log). 2.从服务器(slave)的IO线程从主服务器(binl ...

  4. Angular2.js——主从结构

    学习这一篇的内容,还回到我们快速起步的应用上来. 主从结构,我们想要做一个英雄的列表,我们希望用户在列表中选中一个英雄,然后这个被选中的英雄出现在详情视图中.主视图是英雄列表,从视图则是被选中英雄的详 ...

  5. windows10下 MySQL5.7.18版本安装过程及遇到的问题

    windows10下 MySQL5.7.18版本安装过程及遇到的问题           mysql-5.7.18-winx64 安装           1.解压 此次将MySQL装在H盘,依个人喜 ...

  6. mysql5.6以上版本: timestamp current_timestamp报1064/1067错误

    mysql5.6以上版本: timestamp current_timestamp报1064/1067错误 在创建时间字段的时候 DEFAULT CURRENT_TIMESTAMP表示当插入数据的时候 ...

  7. mysql-5.7.20 版本的 mysql-group-replication 可用性测试报告

    一.喜迎 mysql-5.7.20  事实上mysql-group-replication 功能是在mysql-5.7.17这个版本上引入的,它实现了mysql各个结点间数据强一致性, 这个也成为了我 ...

  8. MySQL5.7.22版本的安装和调试

    1:安装前的准备工作 需要的软件: boost_1_59_0.tar.gz,cmake-3.6.1.tar.gz,mysql-5.7.22.tar.gz 开始安装MySQL 2.1 检查cmake [ ...

  9. 升级MySQL5.7.22版本_总结记录

    目录 一. mysql5.7安装 0. 背景 1. 准备:下载安装包 2. 安装流程小结 3. 具体步骤 二. mysql5.7的一些变化 一. mysql5.7安装 0. 背景 之前用的5.6版本, ...

随机推荐

  1. NSUserdefault读书笔记

    作用 用来存储首选项的.本来首选项是存在磁盘上的,NSUserdefault相当于提供了一个缓存,不用每次都写文件.也就是说设置首选项以后,可以马上读出来,不必先写到磁盘中去. 定期调用synchro ...

  2. UIViewContentMode-

    图片很小,frame很大 图片很大,frame很小 UIViewContentModeScaleToFill, UIViewContentModeScaleAspectFit, UIViewConte ...

  3. css3中的translate,transform,transition的区别

    translate:移动,transform的一个方法               通过 translate() 方法,元素从其当前位置移动,根据给定的 left(x 坐标) 和 top(y 坐标) ...

  4. K2路由器刷机笔记

    临近双11,K2路由器广告加的越来越放肆,实在太难忍受就刷了个固件.这里把路由器刷机的一般流程记录一下. 一.开启telnet 刷固件,首先要取得路由器系统的控制权,这样我们才能自由的进行操作. 方法 ...

  5. git.exe 妙用

    1.如果 window 上的命令行,在进行编译的不好使 可以尝试在git 中运行 2.运行 python 脚本 ,保持脚本一直执行(尤其是中间出错) 可以做一个 sh 文件,然后在git 中运行 #! ...

  6. C 和 C++ 字符串函数操作

    1)字符串操作  strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长 ...

  7. mysql出现 Unknown column 'bname' in 'where clause'和Unknown column 'bid' in 'field list'

    在用mysql数据库建表和修改数据库数据时,出现  Unknown column 'bname' in 'where clause'和Unknown column 'bid' in 'field li ...

  8. Dubbo---初识

    1.概述 1.1 Dubbo是一款高性能.轻量级的java RPC框架: 1.2 Dubbo提供的功能: 面向接口的远程调用: 智能容错.负载均衡: 服务注册.发现: 1.3 Dubbo架构 Prov ...

  9. java中+=与+的区别

    public class QQ { public static void main(String[] args) throws ParseException { byte val1 = 5; doub ...

  10. TSM_ISSUE_123

    dsmc 命令详解http://www-ik.fzk.de/~apel/html/adsm_manual.htmlTSM InfoCenterhttp://www-01.ibm.com/support ...