码迷,mamicode.com
首页 > 数据库 > 详细

mysql 设置主从

时间:2015-09-12 00:50:16      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:

mysql 设置主从

mysql 设置主从

主从

主从:
异步实现
slave 的 IO thread
当有数据需要同步的时候, master 的 bin log dump 会传给 slave 的 IO thread, 否则 slave 会睡眠
slave 的 sql thread 负责将 bin log 从 master 下载到 slave

mysql 二进制日志文件
statement: 记录 sql 语句 (缺点, 像 insert now() 这样的函数会有问题)
row: 记录 sql 执行的结果 (缺点, 同时 update 多条语句的时候, 会记录太多数据)
mixed: 混合方式, 自动判断

提前准备:

iptables -F (防止连接不上)
如果主服务器之前有数据, 先备份 (然后传给 slave)

master

? vi /etc/my.cnf
master-id=1
log-bin=mysql-bin
binlog-format=mixed

slave

? vi /etc/my.cnf
master-id=2
log-bin=mysql-bin
binlog-format=mixed       # 从服务器可以不开启二进制日志, 节约资源
relay-bin=mysql-relay

master

mysql> show master status;
mysql> grant replication client,replication slave on *.* to ‘USER‘@‘YOUR_IP‘ identified by ‘YOUR_PASSWORD‘;

slave

mysql> change master to master_host=‘YOUR_IP‘, master_user=‘USER‘, master_password=‘YOUR_PASSWORD‘,
mysql> master_log_file=‘mysql-bin.000005‘, master_log_pos=951, master_connect_retry=10;

mysql> help change master to;
mysql> start slave;
mysql> show slave status\G
mysql> stop slave;         # 如果出现问题, 看 mysql 出错日志 /var/log/mysqld.log, 关闭防火墙
mysql> reset slave;
mysql> start slave;        # 解决问题后

master

mysql> show databases;
mysql> create database tmp_test_db;

slave

mysql> show databases;

扩展升级

scale on, 向上扩展, 垂直扩展: CPU, 内存升级 (升级到了瓶颈之后, 会因为资源竞争而出现性能反而下降, 代价高)
scale out, 向外扩展, 水平扩展: 添加主机, 然后负载均衡, 需要调度器 (代理, nat, 旁路)

读写分离:

主: 写
从: 负载均衡, 读

  1. 需要一个专用 mysql 的调度器 (中间件), 知道什么 sql 语句需要写, 什么时候需要读
    amoeba
    mysql-proxy
  2. php 源码中, 人为控制对 slave 的代码进行 一致性 hash 算法, 对 master 进行写
    为保证有缓存, 可以对 sql 语句进行 hash, 取特征码

主主复制: 互为主从, 也叫双主

双主模型的缺陷:

  1. auto_increment 有问题
    解决:
    设置 auto_increment_increment 起始值, 默认是 1 (修改一台为 1, 另一台为 2)
    设置 auto_increment_offset, 默认是 1, 要修改为 2
  2. 数据不一致
    在同步完成之前,双方都修改同一条记录 (有检测工具, 麻烦)

优点: 实现了均衡读, 不需要中间件, 非常简单, 写操作不变

数据分片, 分区 (高级, 难)

有虚拟 server, 管理多个 server
经常用的数据存在一个 server 上, 写的时候多每个 server 写上若干条
例如, 最近的微博存放在一个 server 上, 写的时候就均衡放置
然而如何确定读 server 要放置哪些内容, 如何放置, 写的时候如何写都是一个问题

mysql 设置主从

标签:

原文地址:http://www.cnblogs.com/sunznx/p/4802426.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!