为了实现读写分离,一般都需要先设置好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;
 

最新文章

  1. Xamarin+Prism开发详解三:Visual studio 2017 RC初体验
  2. linux下安装不同版本的jdk
  3. 记录Office Add-in开发经验
  4. 程序代码中退出函数exit()与返回函数return ()的区别
  5. 转载:稀疏矩阵存储格式总结+存储效率对比:COO,CSR,DIA,ELL,HYB
  6. nginx配置之取消index.php同时不影响js,css功能
  7. winform基本控件的使用2(用户登录界面的设计)
  8. 正则中关于修饰符g以及exec和match区别的一个小demo
  9. poj 3468
  10. Java中length,length(),size()区别
  11. Android真机测试 INSTALL_FAILED_INSUFFICIENT_STORAGE 解决方法[转]
  12. iOS开发,推送消息 steps
  13. 【Go】http server 性能测试
  14. 判断checkbox选中
  15. django HTTP请求(Request)和回应(Response)对象
  16. openGl学习之加入颜色
  17. iOS开发-正则表达式3种形式
  18. 如何利用fis3来模拟后台返回数据
  19. java封装的方法
  20. 微信小程序的开发环境搭建(Windows版本)

热门文章

  1. 【FAQ】Could not extract response: no suitable HttpMessageConverter found for respo
  2. Python脚本模板
  3. @functools.wrapes
  4. Nginx 常用命令总结
  5. css样式之标签的查找
  6. docker-compose部署mysql配置
  7. helloweblogic 官方qq群欢迎加入!
  8. iview 之 穿梭框 transfer
  9. 在 Linux 服务器上部署 nginx 之后不能访问
  10. Python学习 day15