mysql主从同步搭建过程_mysql主从同步搭建和故障排除

本文详细介绍了MySQL主从同步的概念、好处、基本结构、实现原理和三种模式。通过具体的步骤展示了如何配置主库和从库,包括启用binlog、授权用户、设置数据库ID等,并解释了主从同步的线程工作原理。此外,还提供了常见问题的排查方法,如数据库UUID冲突和ID冲突等。
摘要由CSDN通过智能技术生成

主从同步的定义:  是存储数据的一种结构模式。

主:被客户端访问的数据库服务器就是主库服务器master

从:连接主库服务器,自动同步主库的所有数据到本机slave

1、什么是mysql主从同步?

当master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库。

2、主从同步有什么好处?

水平扩展数据库的负载能力。

容错,高可用。Failover(失败切换)/High Availability

数据备份。

3.主从同步的具体内容和目的

不管是delete、update、insert,还是创建函数、存储过程,所有的操作都在master上。当master有操作的时候,slave会快速的接收到这些操作,从而做同步。

4.基本结构:

单向复制:主 --> 从

扩展应用

链式复制:主 --> 从 --> 从

双向复制:主 从

放射式复制:从 从

|

5.实现原理

在master机器上,主从同步事件会被写到特殊的log文件中(binary-log);在slave机器上,slave读取主从同步事件,并根据读取的事件变化,在slave库上做相应的更改,就实现了主从同步!

6.主从同步事件有3种模式:

statement、row、mixed

statement:会将对数据库操作的sql语句写入到binlog中。

row:会将每一条数据的变化写入到binlog中。

mixed:statement与row的混合。Mysql决定什么时候写statement格式的,什么时候写row格式的binlog。

实现:

7.目的

当master上的数据发生改变的时候,该事件(insert、update、delete)变化会按照顺序写入到binlog中。

Mysql主从同步的搭建步骤:

主要分为【主库配置】和【从库配置】

例机IP及分配:master 192.168.4.52

slave 192.168.4.53

主库的配置步骤:

1.启用数据库binlog日志

# vim /etc/my.cnf

[mysqld]

server_id=52                           //数据库的 id【主库与从库不可相同】

log-bin=master                        //启用binlog日志并设置路径

binlog-format="mixed"            //指定binlog使用模式

2.授权用户

mysql> grant replication slave on *.*

-> to

-> tom@"192.168.4.53"

-> identified by "123456";

更新数据库权限

mysql>flush privileges;

3.查看master的状态

# show master status;

从库配置步骤(slave):

1.查看是否可以登陆数据库

mysql -h192.168.4.52  -u tom -p123456

show grants;  //查看权限

2.指定数据库ID号(server_id)

vim /etc/my.cnf

[mysql]

server_id=53

systemctl restar mysqld

3.管理员指定数据库服务器的信息

mysql> change master to

-> master_host="192.168.4.52",           //指定主库的ip地址

-> master_user="tom",                          //指定授权的用户名

-> master_password="123456",

-> master_log_file="master.000001",      //指定主日志时可去主库查看填写

-> master_log_pos=447;

4.启用slave进程

mysql> start slave;                        //开启slave进程

mysql> show slave status\G;         //查看slave进程

Slave_IO_Running: yes                  //查看线程是否运行

Slave_SQL_Running: YesI/O线程。该线程连接到master机器,master机器上的binlog dump线程会将binlog的内容发送给该I/O线程。该I/O线程接收到binlog内容后,再将内容写入到本地的relay log。

SQL线程。该线程读取I/O线程写入的relay log。并且根据relay log的内容对slave数据库做相应的操作。

注:Slave_IO_Running及Slave_SQL_Running进程必须正常运行,即YES状态,否则说明同步失败。可用这两项判断主从同步是否成功

5.测试

mysql>create database ceshi;      //master主库创建测试库

mysql>show  databases;             //slave从库上查看是否自动更新

常见问题排查:

若进程启用时,线程未yes状态,可查看下方报错信息进行排错

常见原因:

一:数据库UUID相同导致冲突

解决方法:vim /var/lib/mysql/auto.cnf    修改UUID使其不相同

重启数据库

重启slave进程

【若还无法同步则需重新指定数据库信息并重启slave进程即可】

二:数据库ID冲突,重新设置ID并重启服务即可

三: 查看命令是否写错

四:删除binlog日志的影响

【如果有一个将要进行同步的slave从属服务器,该服务器需读取您正在删除的日志之一,则该同步不会执行,并产生错误;如果slave从属服务器是关闭的(或master-slave主从关系关闭),若清理了将要读取的日志之一,则slave从属服务器启动后不能同步;当从属服务器正在复制时,删除binlog日志无影响,切无需停止主从服务】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值