异步主从复制

csdn推荐

主从复制的概念

主从复制是一种在数据库系统中常用的数据备份和读取扩展技术,通过将一个数据库服务器(主服务器)上的数据变更自动同步到一个或多个数据库服务器(从服务器)上,以此来实现数据的冗余备份、读写分离以及负载均衡等目的。

主从复制的原理

首先在Master上开启二进制日志。当Master上数据发生变化,进行DML操作时,会产生二进制日志。Master上dump线程会通知Slave上的I/O线程来拿二进制日志。I/O线程拿到日志后会写入到Slave上的中继日志。然后SQL线程会去读取新产生的中继日志,重演二进制日志里的操作,从而达到Slave和Master上的数据一模一样,实现数据的一致性

主从复制的原理如上,在Slave服务器上还存在master-info文件和文件。master-info文件记录I/O线程从Master服务器上获取二进制日志结束的pos位置号和日志文件的名字。文件记录当前中继日志的文件名和位置点。

主从复制的操作 1、环境准备

准备两台服务器,一台作为master服务器(192.168.2.117),一台作为slave服务器(192.168.2.118),确保两台服务器上的mysql服务是启动的,mysql版本为5.x。

修改主机名,便于辨识:

// master服务器上
[root@localhost ~] hostnamectl set-hostname master
// slave服务器上
[root@localhost ~] hostnamectl set-hostname slave

2、修改mysql配置文件

在master服务器上开启二进制日志,server_id=1,在slave服务器上也可以开启二进制日志,server_id=2

// master服务器上
[root@master ~] vim /etc/my.cnf
# 找到[mysqld]位置添加以下内容
[mysqld]
log_bin
server_id=1
// 重启服务
[root@master ~] service mysqld restart
// slave服务器上
[root@slave ~] vim /etc/my.cnf
# 找到[mysqld]位置添加以下内容
[mysqld]
log_bin
server_id=2
// 重启服务
[root@slave ~] service mysqld restart

3、统一两台服务器的基础数据

// master服务器导出所有数据
[root@master ~] mysqldump -uroot -p'123456' --all-databases >all_db.SQL
// 上传slave服务器
[root@master ~] scp all_db.SQL root@192.168.2.118:/root
// slave服务器执行SQL文件
[root@slave ~] mysql -uroot -p'123456' <all_db.SQL

4、master服务器初始化二进制日志

清除master服务器上所有的二进制日志,因为上一步已经做了一次全部备份了。

root@(none) mysql> reset master;
// 查看二进制文件名和位置点POS
root@(none) mysql> show master status;

5、新建授权用户

在master服务器上新建一个授权用户,给slave来复制二进制日志。

// master服务器上操作
root@(none) mysql> reset master;
root@(none) mysql> grant replication slave on *.* to 'slave-1'@'192.168.2.118';

6、配置master-info信息

在slave服务器上配置master-info信息,master-info文件记录I/O线程从master服务器上获取二进制日志结束的pos位置号和日志文件的名字。当master服务器通知slave服务器来读取二进制日志时,slave服务器通过master-info信息才能得知从哪里开始读取。

// slave服务器上操作
root@(none) mysql> CHANGE MASTER TO MASTER_HOST='192.168.2.137',
> MASTER_USER='slave-1',
> MASTER_PASSWORD='123456',
> MASTER_PORT=3306,
> MASTER_LOG_FILE='master-bin.000001',
> MASTER_LOG_POS=154;

7、查看slave是否配置成功

// slave服务器上操作
// 启动slave
root@(none) mysql> start slave;
root@(none) mysql> show slave statusG;
// 下面这两个为yes则表示启动成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

在线主从复制

在线主从复制指服务器运行中进行主从复制,在线主从复制与上述主从复制原理一致,其难点在于slave服务器配置master-info信息时,如何准确知晓master服务器的二进制日志文件名和位置号pos。

本文在这给出的方法是使用xtrabackup工具包,xtrabackup在备份的时候自动记录二进制日志文件和位置好,感兴趣的小伙伴可以自行去搜索深入了解。

主从切换的原理

在主从复制中,当主服务器挂了,就需要提升原来的从为主,这就是主从切换。

首先在监控机器上每秒钟扫描master服务器的3306端口(nc 3306),当master服务器出现故障时,马上执行手工操作的步骤(最后是将其编写成脚本自动执行),从而实现主从复制。

手工操作步骤:

首先选择一台从服务器,在其上停止从服务器服务(stop slave)。开启二进制日志。重置二进制日志(reset master)。建立授权复制用户。在其他从服务器中配置master-info信息去拉取二进制日志。将网站的写流量切换到新的master上。 常见问题 查看服务器防火墙3306端口是否开放。配置时是否出现拼写错误。两天服务器是否为克隆产生,是克隆产生则需要修改uuid。修改mysql数据目录下f文件(vim /data/mysql/f)中server-uuid的值,随便修改几个字符即可。

文章来源:https://blog.csdn.net/panmingqian/article/details/140227190



微信扫描下方的二维码阅读本文

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容