文档章节

14-3 17 MySQL主从配置

阿想
 阿想
发布于 2017/08/30 17:50
字数 1008
阅读 7
收藏 0

MySQL主从配置

17.1 MySQL主从介绍

概念

  • MySQL主从又叫做Replication、AB复制。
  • 假设A机器作为主Master,B机器作为从Slave。MySQL主从实现A,B数据实时同步
  • 基于binlog,主上需要开启

主从原理

  • A通过log dump线程与B的I/O线程通信,使binlog与relaylog同步,relaylog再通过SQL线程将数据写入B。从而实现AB复制

  • A上写入数据——>数据变动记入binlog——>交给A上logdump线程——>交给B上I/O线程——>数据变动记入relaylog——>通过B上SQL线程——>数据写入B

场景:

  1. B作为备份
  2. B作为可读,减轻A访问压力

17.2 准备工作

  1. 安装MySQL wget tar mv 安装(./scripts/mysql_install_db --user= --datadir=)
  2. 配置my.cnf 配置服务脚本cp(support-file/mysql.server /etc/init.d/mysqld)
  3. 启动服务

MySQL启动异常,查看日志

cd /data/mysql
less 主机名.err

...[ERROR]...Permission denied ... 
...[ERROR]...read-write mode
  • 常见错误:权限问题,可能由于innobackup恢复后变为root

17.3 配置主

A机器作为主,IP为10.1.1.8

  • 主上配置主要有四步
    1. 开启主,加ID
    2. 准备库和同步用户
    3. 锁表,看主信息
    4. 做给B起始数据

第一步,开启主(binlog)

[root@axiang-02 ~]# vi /etc/my.cnf,
[mysqld]下增加
server-id=8
log_bin=axianglinux1
[root@axiang-02 ~]# /etc/init.d/mysqld restart  //重启
[root@axiang-02 ~]# cd /data/mysql
[root@axiang-02 mysql]# ls -lt
总用量 176184
-rw-rw---- 1 mysql mysql       22 8月  30 15:01 axianglinux1.index  binlog索引,主从根本
-rw-rw---- 1 mysql mysql      120 8月  30 15:01 axianglinux1.000001 第一个二进制binlog文件

第二步:准备库和同步用户

参照blog库制作axiang用于测试

[root@axiang-02 mysql]# mysqldump -uroot -paxianglinux blog > /tmp/blog.sql
[root@axiang-02 mysql]# mysql -uroot -paxianglinux -e "create database axiang"
[root@axiang-02 mysql]# mysql -uroot -paxianglinux axiang < /tmp/blog.sql
[root@axiang-02 mysql]# ls -lt
总用量 176184
-rw-rw---- 1 mysql mysql      220 8月  30 15:08 axianglinux1.000001
drwx------ 2 mysql mysql       20 8月  30 15:08 axiang

创建用作同步数据的用户

[root@axiang-02 mysql]# mysql -uroot -paxianglinux
mysql> grant replication slave on *.* to 'repl'@'10.1.1.9' identified by 'axianglinux';

第三步,锁表并查看主信息

mysql> flush tables with read lock;  锁表
mysql> show master status;
+---------------------+----------+--------------+------------------+-------------------+
| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------------+----------+--------------+------------------+-------------------+
| axianglinux1.000001 |      425 |              |                  |                   |
+---------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

第四步,做给B起始数据

[root@axiang-02 mysql]# mysqldump -uroot -paxianglinux cms > /tmp/cms.sql
  • 同步axiang blog cms三个库,起始的数据要一致。
  • 可以通过mysqldump生成cms.sql blog.sql。复制给B机器

17.4 配置从

B机器作为从,IP为10.1.1.9

  • 从上配置主要有三步
    1. 加入ID
    2. 复制并同步A的起始数据
    3. 开启从

第一步,加入ID

[root@axiang-03 ~]# vi /etc/my.cnf
[mysqld]下加入
server-id=9  //不需要binlog,id不能与主一样,建议写IP末位

第二步,同步起始数据数据

[root@axiang-03 ~]# scp 10.1.1.8:/tmp/*.sql /tmp/  //远程复制过来
[root@axiang-03 ~]# mysql -uroot -paxianglinux

mysql> create database cms;
mysql> create database axiang;
mysql> create database blog;

[root@axiang-03 ~]# mysql -uroot -paxianglinux blog < /tmp/blog.sql 
[root@axiang-03 ~]# mysql -uroot -paxianglinux axiang < /tmp/blog.sql 
[root@axiang-03 ~]# mysql -uroot -paxianglinux cms < /tmp/cms.sql

第三步开启从

[root@axiang-03 ~]# mysql -uroot -paxianglinux
mysql> stop slave;
mysql> change master to master_host='10.1.1.8', master_user='repl', master_passwoord='axianglinux', master_log_file='axianglinux1.000001', master_log_pos=425;
mysql> start slave;
mysql> show slave status\G
 

  • 还要到主上执行 unlock tables

17.5 测试主从同步

指定主从范围

 主服务器上
 binlog-do-db=      //仅同步指定的库
 binlog-ignore-db= //忽略指定库

主加入指定同步数据库

 从服务器上
 replicate_do_db=
 replicate_ignore_db=
 replicate_do_table=
 replicate_ignore_table=
 replicate_wild_do_table=   //如aming.%, 支持通配符% 
 replicate_wild_ignore_table=
  • 一般使用最后两个replicate,因为前四个replicate匹配模糊,当选择了非监听库后,会忽略之后的操作。可能会导致数据丢失

测试结论

  • 开启主从后,如果起始数据不一致,对库,表,字段的操作。只要逻辑可行,则会保持主从同步的。比如主删除一个从上没有的用户,会导致主从断开。但是主添加新用户,删除两边都有的用户则可以同步
  • 从上只能进行查询操作。修改,添加会导致主从断开,需要按照新主状态show master status从新链接

© 著作权归作者所有

共有 人打赏支持
阿想
粉丝 0
博文 72
码字总数 69742
作品 0
MySQL主从架构

MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的。它基于binlog,主设备上须开启binlog才能进行主从。 主...

技术小美
2017/11/07
0
0
MySQL 5.6 一主多从的 半同步复制搭建

MySQL 5.6 一主多从的 半同步复制搭建 半同步简介: 在默认情况下,MySQL的复制是异步的,这意味着主服务器及其从服务器是独立的。异步复制可以提供最佳的性能,因为主服务器在将更新的数据写...

xiaocao13140
05/24
0
0
MySQL主从复制架构及原理

一、简介 在实际生产中,数据的重要性不言而喻,因此考虑到数据的重要性比如单点故障导致后端数据库奔溃,或者后端数据库访问压力过大等,mysql数据库做主从非常有必要,减轻后端数据库压力,...

日久不生情
2017/11/15
0
0
手把手教你入门MySQL零基础入门教程!

目前MySQL已经成为最为流行的开源关系数据库系统,并且一步一步地占领了原有商业数据库的市场。可以看到Google、Facebook、Yahoo、网易、久游等大公司都在使用MySQL数据库,甚至将其作为核心...

一定听你
2017/06/14
0
0
rh6上mysql5.6的主从、半同步、GTID多线程、SSL认证主从复制

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明。否则将追究法律责任。http://407711169.blog.51cto.com/6616996/1203973 mysql's replication Mysql的 ...

jinmy001
2013/08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

深夜胡思乱想

魔兽世界 最近魔兽世界出了新版本, 周末两天升到了满级,比之前的版本体验好很多,做任务不用抢怪了,不用组队打怪也是共享拾取的。技能简化了很多,哪个亮按哪个。 运维 服务器 产品 之间的...

Firxiao
13分钟前
0
0
MySQL 8 在 Windows 下安装及使用

MySQL 8 带来了全新的体验,比如支持 NoSQL、JSON 等,拥有比 MySQL 5.7 两倍以上的性能提升。本文讲解如何在 Windows 下安装 MySQL 8,以及基本的 MySQL 用法。 下载 下载地址 https://dev....

waylau
47分钟前
0
0
微信第三方平台 access_token is invalid or not latest

微信第三方开发平台code换session_key说的特别容易,但是我一使用就带来无穷无尽的烦恼,搞了一整天也无济于事. 现在记录一下解决问题的过程,方便后来人参考. 我遇到的这个问题搜索了整个网络也...

自由的开源
今天
0
0
openJDK之sun.misc.Unsafe类CAS底层实现

注:这篇文章参考了https://www.cnblogs.com/snowater/p/8303698.html 1.sun.misc.Unsafe中CAS方法 在sun.misc.Unsafe中CAS方法如下: compareAndSwapObject(java.lang.Object arg0, long a......

汉斯-冯-拉特
今天
2
0
设计模式之五 责任链模式(Chain of Responsibility)

一. 场景 相信我们都有过这样的经历; 我们去职能部门办理一个事情,先去了A部门,到了地方被告知这件事情由B部门处理; 当我们到了B部门的时候,又被告知这件事情已经移交给了C部门处理; ...

JackieRiver
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部