MySQL复制.md

主从复制简介

主从复制即将一台MySQL实例(Master)的数据复制到一个或多个MySQL实例(Slave)。默认情况下,复制是异步的;Slave不需要持久连接来接收来自Master的更新。根据配置,可以自定义复制的对象是实例中的所有数据库,或指定的数据库甚至某几张指定的表。

首先master把数据变化作为事件记录到binlog中,然后slave通过I/O线程读取master上的binlog,并且把它写入到slave的中继日志中,接着SQL线程读取中继日志,并且在slave本地库上重放,从而实现MySQL复制。下例介绍是基于主库binlog的name及应用的position来配置的。

配置主库

主库必须启用二进制日志并有唯一的server ID,设置后需要重启mysql服务生效。主从数据传输同步是根据binlog实现的,如果未启用binlog,复制是不可能的。复制组内每个服务器都必须有一个唯一的server ID,此ID用来标识各个服务器,且范围在1-power(2,32)-1之间的整数,如不设置将如法配置复制。

[mysqld]
log-bin=mysql-bin
server-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1

创建复制用户

从库需要帐号来连接主库,帐号需要具有REPLICATION SLAVE权限,一般会单独创建一个仅具有REPLICATION SLAVE权限的用户用于复制。

[master]
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.141.8.174' IDENTIFIED BY 'p4word';
Query OK, 0 rows affected (0.02 sec)

获取主库二进制日志执行位置并同步数据

配置复制需要指定从库开始执行主库的二进制日志的起始执行位置,因此当从库同步主库现有数据时,需要停止在主库上执行更新语句,然后获得主库的当前二进制日志坐标并基于此位置备份数据。如果主库继续执行更新操作,可能导致主从数据不一致。

获取主库二进制日志坐标的方式:

  • 主库执行FLUSH TABLES WITH READ LOCK 语句:
mysql> FLUSH TABLES WITH READ LOCK;
mysql> show master status;

该语句刷新所有表及块写入语句,对于InnoDB表还会阻塞Commit。非正常退出该session,FLUSH TABLES仍会生效,如使用exit退出该会话,锁会被释放。

  • 获取主库数据快照

如果新配置的主从复制可忽略本步骤,如果创建的主库已存在数据,需要创建一个主库的数据快照并在从库中恢复。获取数据快照的方式很多,可使用备份工具如:mysqldump、xtrabackup等,也可直接拷贝主库数据文件。

  • 释放读锁
    备份完成后,释放主库锁定
mysql> UNLOCK TABLES;

如果配置表都是InnoDB等支持事务的表,可以跳过手工设定锁定的操作,mysqldump --single-transaction --master-data来确保快照一致性。

配置从库

如果有多个slave,各从库也必须有唯一的server ID,不能省略,否则拒绝连接。

[mysqld]
server-id=2

启动生效后,从库执行CHANGE MASTER TO语句,启动复制,change master 语法

mysql> change master to master_user='repl',
       master_password='p4word',
       master_host='10.141.8.173',
       master_log_file='mysql-bin.000007',
       master_log_pos=120;
Query OK, 0 rows affected, 2 warnings (0.11 sec)


导入主库快照数据后,启动复制线程,同步主从数据
mysql> start slave;            ## 启动复制线程
Query OK, 0 rows affected (0.06 sec)

查看主从复制状态
mysql> show slave status \G;

slave_IO_Running、Slave_SQL_Running均为Yes,则表示复制可以正常运行。如复制不能正常进行,状态及错误日志将会出现错误信息,一般常见的错误的原因有:操作系统防火墙,Selinux,主库信息错误,server_id未设置或重复,server_uuid重复及主从数据问题。

验证同步效果

[master]
mysql> create table test.sysc (
     > id int primary key,
    -> name varchar(10)
    -> );
Query OK, 0 rows affected (0.04 sec)

mysql> insert into test.sysc values(1001,'1001');
Query OK, 1 row affected (0.00 sec)

mysql> insert into test.sysc values(1002,'1002');
Query OK, 1 row affected (0.03 sec)

[slave]
mysql> use test;
Database changed

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| sysc           |
+----------------+
1 row in set (0.00 sec)

mysql> select * from sysc;
+------+------+
| id   | name |
+------+------+
| 1001 | 1001 |
| 1002 | 1002 |
+------+------+
2 rows in set (0.00 sec)

以下几种状态对判断主从复制延迟及处理主从复制故障很重要。

  • Master_Log_File & Read_Master_Log_Pos:IO线程读取的当前主库binlog位置信息。
  • Relay_Master_Log_File & Exec_Master_Log_Pos:SQL线程当前读取执行的主库binlog位置信息。
  • Relay_Log_File & Relay_Log_Pos:SQL线程当前读取执行的中继日志位置信息。
  • Slave_IO_Running & Slave_SQL_Running:当前复制状态是否正常
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容