mysql 设置主从

mysql 设置主从

Table of Contents

  • 主从
  • 扩展升级
  • 读写分离:
  • 主主复制: 互为主从, 也叫双主
  • 数据分片, 分区 (高级, 难)

主从

主从:
异步实现
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 要放置哪些内容, 如何放置, 写的时候如何写都是一个问题

时间: 2025-01-17 23:02:54

mysql 设置主从的相关文章

MYSQL设置主从同步

首先,我们先拿两台服务器安装好相同版本相同设置的MYSQL数据库.我这里安装的是mariadb-10.0.13数据库. 第一步,环境设置: 我这边设置的是两台内网服务器,主服务器IP:10.6.0.187:从服务器IP10.6.0.186 系统:CentOS 7 数据库版本:mariadb-10.0.13 第二步:配置mysql主服务器(10.6.0.187) mysql  -uroot  -p123456    #进入MySQL控制台    create database zabbix def

mysql数据库主从同步

环境: Mater:   CentOS7.1  5.5.52-MariaDB  192.168.108.133 Slave:   CentOS7.1  5.5.52-MariaDB  192.168.108.140 1.导出主服务数据,将主备初始数据同步 master: //从master上导出需要同步的数据库信息 mysqldump -u*** -p*** --database test > test.sql //将master上的备份信息传输到slave上 scp /root/test.sq

linux下mysql数据库主从同步配置

说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备篇: 说明:在两台MySQL服务器192.168.21.128和192.168.21.129上分别进行如下操作 备注: 作为主从服务器的MySQL版本建议使用同一版本! 或者必须保证主服务器的MySQL版本要高于从服务器的MySQL版本! 一.配置好IP.DNS .网关,确保使用远程连接工具能够连接

解决mysql 数据库主从不同步

今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist;   查看下进程是否Sleep太多.发现很正常. show master status; 也正常. mysql> show master status; +-------------------+----------+--------------+-------------------------------+ | File              | Position | Binlo

MySQL的主从

以下是个人实例操作得出的结论: mysql的主从同步是一个很成熟的架构: 优点: ①:在从服务器可以执行查询工作,降低主服务器压力(所谓的读写分离) ②:在从主服务器进行备份,避免备份期间影响主流服务器服务(不太懂是到底在从还是主上面进行操作) ③:当主服务出现问题时,可以切换到从服务器. 配置开始 两台服务器 192.168.0.1 主服务器 master 192.168.0.2 从服务器 slave 主服务器 配置主服务器的my.ini 在最下面添加 read-only=0  #主机读写权限

MySQL双机主从同步与双向同步

第一部分:主从关系的同步 master端 192.168.0.1 slave端  192.168.0.2 1.MASTER端 a.进入mysql,创建一个数据库abc:       create database abc; b.创建一个用来同步的用户,指定只能在192.168.0.2登录:       grant replication slave on *.* to 'ha'@'192.168.0.2' identified by 'hapwd'; c.修改master端的/etc/my.cn

zabbix应用-监控mysql slave 主从状态

线上服务的监控已经基本搞定了,现在就剩下mysql 主从的状态没有检测,这里要想用zabbix 监控,还得写一个获取主从状态的脚本,然后设置一个key,创建模板套用这个key 获取mysql 的主从状态是否正常. 1.这里把我的脚本贴一下,脚本要给可执行权限 #!/bin/bash user=zabbixagent passwd=zabbixagent port=$1 #自定义函数 function status {    status=`/data/mysql_root/mysql/bin/m

mysql mha 主从自动切换 高可用

mha(Master High Availability)目前在MySQL多服务器(超过二台),高可用方面是一个相对成熟的解决方案. 一,什么是mha,有什么特性 1. 主服务器的自动监控和故障转移 MHA监控复制架构的主服务器,一旦检测到主服务器故障,就会自动进行故障转移.即使有些从服务器没有收到最新的relay log,MHA自动从最新的从服务器上识别差异的relay log并把这些日志应用到其他从服务器上,因此所有的从服务器保持一致性了.MHA通常在几秒内完成故障转移,9-12秒可以检测出

Mysql数据库主从心得整理

一.mysql主从的原理 1.Replication 线程 Mysql的 Replication 是一个异步的复制过程(mysql5.1.7以上版本分为异步复制和半同步两种模式),从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们称之 Slave).在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端. 要实现