2022-01-14 day71 MySQL主从复制

https://www.processon.com/view/link/61e11f22f346fb06cb98c0d1

第1章 MySQL主从复制

1.主从复制功能简单介绍

主库通过网络传输binlog的数据给从库,从库接收同步主库数据

2.主从复制应用场景

主库如果宕机了,从库可以快速切换替代主库

代码读写分离,写入操作在主库上,读取操作在从库上

备份可以再从库上操作

分析数据可以再从库上进行

第2章 MySQL主从复制部署

1.梳理思路

第一步:从库安装数据库

第二步:主库全备数据并发送给从库

第三步:从库导入主库数据

第四步:找出主库全备时刻的位置点

第五步:主库创建复制用的账号密码

第六步:从库配置同步命令

第七步:从库开启复制功能

第八步:从库检查同步是否完成

2.第一步:从库安装数据库

cd /opt/

scp 10.0.0.51:/opt/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz .


tar zxf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz -C /opt/


mv mysql-5.7.28-linux-glibc2.12-x86_64 mysql-5.7.28


查看解压后目录大小


ln -s mysql-5.7.28 mysql


配置环境变量

echo 'PATH=$PATH:/opt/mysql/bin' >> /etc/profile

source /etc/profile

mysql -V


rpm -qa|grep mariadb

yum remove mariadb-libs -y


rm -rf /etc/my.cnf


yum install -y libaio-devel


mkdir /data -p


useradd -s /sbin/nologin -M mysql

chown -R mysql.mysql /data/

chown -R mysql.mysql /opt/mysql*


初始化数据库

mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql --datadir=/data/mysql_3306/


cat> /etc/my.cnf <<EOF

[mysqld]

port=3306

user=mysql

basedir=/opt/mysql

datadir=/data/mysql_3306

server_id=52

EOF


设置systemd启动

cp /opt/mysql/support-files/mysql.server  /etc/init.d/mysqld

chkconfig --add mysqld

systemctl start mysqld



netstat -lntup|grep 3306


设置root账号密码

mysqladmin password 123



#统一主库的环境

mkdir /data/binlog/ -p

chown -R mysql:mysql /data/


cat> /etc/my.cnf <<EOF

[mysqld]

port=3306

user=mysql

basedir=/opt/mysql

datadir=/data/mysql_3306

server_id=51

log_bin=/data/binlog/mysql-bin

EOF


systemctl restart mysqld


3.第二步:主库全备数据并发送给从库

mysqldump -uroot -p123 -A --master-data=2 --single-transaction > /tmp/full.sql



scp /tmp/full.sql 10.0.0.52:/tmp/


4.第三步:从库导入主库数据


mysql -uroot -p123 < /tmp/full.sql


5.第四步:找出主库全备时刻的位置点

[root@db-51 ~]# sed -n '22p' /tmp/full.sql

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;


6.第五步:主库创建复制用的账号密码

grant replication slave on *.* to repl@'10.0.0.%' identified by '123';

select user,host from mysql.user;



repl远程登录测试


查看主从数据库数据是否一致

7.第六步:从库配置同步命令

mysql -uroot -p123




CHANGE MASTER TO

MASTER_HOST='10.0.0.51',

MASTER_USER='repl',

MASTER_PASSWORD='123',

MASTER_PORT=3306,

MASTER_LOG_FILE='mysql-bin.000002',

MASTER_LOG_POS=154,

MASTER_CONNECT_RETRY=10;


8.第七步:从库开启复制功能

start slave;


9.第八步:从库检查同步是否完成

show slave status\G


MySQL主从复制示意图


10.报错总结:

故障1:IO 显示NO

Slave_IO_Running: No

Slave_SQL_Running: Yes

报错内容:

Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).

原因:

The slave I/O thread stops because master and slave have equal MySQL server ids

从库和主库设置了相同的server_id

故障2:SQL NO

Slave_IO_Running: Yes

Slave_SQL_Running: No

原因:

主库上执行的SQL语句在从库上执行失败了

解决:

让这条SQL语句在从库上可以执行成功

解决完之后记得重启复制功能

stop slave;

start slave;

第3章 主从复制原理

1.主从复制涉及到的文件及线程

主库涉及到的文件: binlog

从库涉及到的文件: master.info db-52-relay-bin-00000x relay-log.info

 master.info



主库涉及到的线程: Binlog Dump

从库涉及到的线程: Slave_IO Slave_SQL

2.主从复制原理

第一步: 从库读取master.info里的信息连接主库

master.info里包含了主库的IP,端口,账号,密码,请求的binlog文件,post位置点

第二步: 主库验证从库的连接信息Binlog Dump一直监控着binlog文件并截取从库需要的SQL语句

第三步: 主库发送binlog数据



第四步: IO线程从库接收主库的数据,并存储到自己的relay-bin日志里


第五步: IO线程从库存储完之后会更新自己的master.info信息


第六步: SQL线程查看自己的relay-log.info文件,读取自己上一次执行过的位置




第七步: SQL线程回放relay-bin日志里SQL语句


第八步: SQL线程将最新执行过的位置点更新到relay-log.info文件里

第4章 主从复制监控

1.主库状态

mysql -uroot -p123 -e 'show processlist;'|grep 'Binlog Dump'

2.从库状态

查看信息:

mysql -uroot -p123 -e 'show slave status\G'

主库连接信息、binlog位置信息:

Master_Host: 10.0.0.51

Master_User: repl

Master_Port: 3306

Connect_Retry: 10

Master_Log_File: mysql-bin.000003

Read_Master_Log_Pos: 154



从库中relay-log的回放信息:

Relay_Log_File: db-52-relay-bin.000006

Relay_Log_Pos: 367

Relay_Master_Log_File: mysql-bin.000003

Exec_Master_Log_Pos: 154



线程监控信息:主要用来排查主从故障-重点监控:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

落后于主库的秒数-重点监控:

Seconds_Behind_Master: 0

过滤复制相关信息:

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

延时从库状态信息:

SQL_Remaining_Delay: NULL

GTID复制信息:

Retrieved_Gtid_Set:

Executed_Gtid_Set:

Auto_Position: 0

第5章 主从复制故障

1.IO故障

故障原因:

账号,密码,端口,IP写错

2.SQL故障

主库和从库数据冲突:

建议:

以主库的数据为主,手动修复从库冲突的数据

如果冲突的数据过多,干脆直接重做从库

不建议:

跳过此条错误

stop slave;

set global sql_slave_skip_counter = 1;

start slave;

更不推荐:

直接按错误代码跳过

vi /etc/my.cnf

slave-skip-errors = 1032,1062,1007

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

推荐阅读更多精彩内容