mysql主从复制-主库已有数据

一、备份已有数据

1、备份主库,及恢复到从库

把主库现有数据备份下来,再恢复到从库,此时两个主机的数据一致。
如果事先有数据的话,这步不能忘。

1)在主库上加锁,使只有只读权限。

mysql > flush table with read lock;

2)记住就是这个点备份的。

在这里插入图片描述

3)备份数据。

root@bogon ~]# mysqldump -uroot -p --all-databases|gzip > dump.sql.gz

4)解锁库(备份完成之后执行此步骤)

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

5)恢复到从库

mysql> source /home/admin/dump.sql;

由于数据量非常大,所以这步执行非常耗时。

二、mysql搭建一主一从

在59和89上都安装上mysql再进行以下操作.

主从原理图:
在这里插入图片描述

1.59为主,给89授权

grant replication slave on *.* to 'root'@'192.168.22.89 ' identified by 'root';

参数说明:
用户名:root
密码:root
意思是:允许192.168.22.89使用用户名为root,密码为root访问59

2.开启59的binarylog

打开my.cnf配置文件,添加一下配置:
使用命令编辑my.cnf这个配置文件: vi /etc/my.cnf
在这里插入图片描述

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id=59
log-bin=mysql-bin
expire_logs_days= 7
# binlog每个日志文件大小
max_binlog_size= 100m                
# binlog缓存大小
binlog_cache_size= 4m     
# 最大binlog缓存大小
max_binlog_cache_size= 512m  
# 不写这句意思是默认同步所有数据库         
binlog-do-db=401_itoo

3.设置89的my.cnf文件

在这里插入图片描述

log-bin=mysql-bin
binlog_format=mixed
server-id=89
# 下面这句不写意思是默认为所有数据库
replicate-do-db=401_itoo

4.查看59的binary日志位置,配置89的时候需要用到

连接上mysql,使用命令查看binary

show master status\G

在这里插入图片描述

File:日志名称
Position:日志偏移量
Binlog_Do_DB:记录日志的库

5.开启89的同步

在89上执行以下命令:
在这里插入图片描述

HOST: 主节点ip
USER: 59授权给89的用户名
PASSWORD: 授权给89的密码
MASTER_LOG_FILE: 59的日志名称
MASTER_LOG_POS: 日志偏移量,需要和59的一样

6.查看89的slave线程是否开启

在这里插入图片描述

Slave_IO_Running为读取master的binaryLog的线程
Slave_SQL_Running为执行SQL的线程
(这两个线程必须都为YES才可以实现主从复制)
Seconds_Behind_Master 表示: slave的SQL线程与I/O线程的时间差。

它的作用:
通过监控 show slave status\G 命令输出的 Seconds_Behind_Master 参数的值来判断,是否有发生主从延时。其值有这么几种:

NULL — 表示io_thread或是 sql_thread 有任何一个发生故障,也就是该线程的 Running 状态是 No,而非 Yes。

0 — 该值为零,是我们极为渴望看到的情况,表示主从复制良好,可以认为 lag 不存在。

正值 — 表示主从已经出现延时,数字越大表示从库落后主库越多。

负值 — 几乎很少见,这是一个BUG值,该参数是不支持负值的,也就是不应该出现。

到此主从复制就搭建完了。

发布了199 篇原创文章 · 获赞 342 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/Xumuyang_/article/details/103348617
今日推荐